zoukankan      html  css  js  c++  java
  • activiti5.11跳转

    activiti5.11的跳转问题,除了在流程定义文件中使用分支节点控制流程的转向外,在java程序代码中同样可以控制流程的转向。
    如在流程定义文件中:
    Java代码 复制代码 收藏代码
    1. <process id="process1" name="process1" isExecutable="true">
    2. <startEvent id="startevent1" name="Start"></startEvent>
    3. <sequenceFlow id="flow1" name="" sourceRef="startevent1" targetRef="serviceTask1"></sequenceFlow>
    4. <serviceTask id="serviceTask1" name="serviceTask1" activiti:class="com.activiti.testcase.turn.ServiceTask1Listener"/>
    5. <sequenceFlow id="s2" sourceRef="serviceTask1" targetRef="userTask2" ></sequenceFlow>
    6. <sequenceFlow id="s3" sourceRef="serviceTask1" targetRef="manualTask1" ></sequenceFlow>
    7. <userTask id="userTask2" name="userTask2" activiti:assignee="gonzo"></userTask>
    8. <manualTask id="manualTask1" name="manualTask1"></manualTask>
    9. <sequenceFlow id="s4" targetRef="userTask2" sourceRef="endevent1"></sequenceFlow>
    10. <sequenceFlow id="s5" targetRef="manualTask1" sourceRef="endevent1"></sequenceFlow>
    11. <endEvent id="endevent1" name="End"></endEvent>
    12. </process>

    其中serviceTask 的类中是实现流程转向的具体代码。
    首先说明:要使用serviceTask调用外部的java类,则该java类必须实现JavaDelegate或ActivityBehavior接口,若需要控制流程的转向则需实现 ActivityBehavior接口,因为该接口功能更强大。
    来看ServiceTask1Listener类,该类只有一个execute方法:
    Java代码 复制代码 收藏代码
    1. public class ServiceTask1Listener implements ActivityBehavior {
    2. public void execute(ActivityExecution execution) throws Exception {
    3. //流程定义id
    4. String procDefId = execution.getProcessDefinitionId();
    5. RepositoryServiceImpl repositoryService = (RepositoryServiceImpl)execution.getEngineServices().getRepositoryService();
    6. //流程定义的实现
    7. ProcessDefinitionImpl processDefinitionImpl = (ProcessDefinitionImpl)repositoryService.getDeployedProcessDefinition(procDefId);
    8. //当前执行的活动节点
    9. ActivityImpl ac = (ActivityImpl)execution.getActivity();
    10. //创建输出的执行路径
    11. TransitionImpl transition = ac.createOutgoingTransition("flow1");
    12. //设置输出路径的目标节点
    13. ActivityImpl destination = new ActivityImpl("serviceTask1", processDefinitionImpl);
    14. destination.setActivityBehavior(this);
    15. //设置目标节点
    16. transition.setDestination(destination);
    17. List<PvmTransition> pvms = execution.getActivity().getOutgoingTransitions();
    18. //[ s2,s3,flow1]
    19. //选用刚刚创建的执行路径
    20. execution.take(pvms.get(2));
    21. }
    22. }  
  • 相关阅读:
    菜单按钮及导航
    实现点击箭头切换图片页和相册滚动
    网页设计的基本原则
    网格系统
    表单系列2
    类与对象学习总结
    汉诺塔的最简的步骤思路
    3.31作业解答
    初学java 用if语句做几个小程序
    做三个java初期学习的练习Var1~3为头目标
  • 原文地址:https://www.cnblogs.com/bjanzhuo/p/3576031.html
Copyright © 2011-2022 走看看