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. }  
  • 相关阅读:
    uart协议--Verilog及仿真
    DC综合的流程
    modelsim将vcd文件转换成wlf文件并查看波形
    将系统盘还原成原来的普通u盘
    Ubuntu的操作命令
    gvim快捷键
    dc_shell环境下TCL语言的使用
    AHB总线学习
    Ubuntu文件共享
    Linux基础学习 | 目录及文件
  • 原文地址:https://www.cnblogs.com/bjanzhuo/p/3576031.html
Copyright © 2011-2022 走看看