09-jbpm工作流之"分支聚合Join-Fork"

前端之家收集整理的这篇文章主要介绍了09-jbpm工作流之"分支聚合Join-Fork"前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

工作流的分支与聚合:

这是多个分支并行(同时)执行,并且所有的分支Execution都到Join活动聚合后才向后执行;

1.工作流图:test.png


工作流配置文件:test.jpdl.xml:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2.  
  3. <process name="test" xmlns="http://jbpm.org/4.4/jpdl">
  4. <start g="255,8,48,48" name="start1">
  5. <transition g="-51,-13" name="to fork1" to="fork1"/>
  6. </start>
  7. <end g="260,354,48" name="end1"/>
  8. <fork g="258,95,48" name="fork1">
  9. <transition g="-23,-20" name="to 发货" to="发货"/>
  10. <transition g="-12,-20" name="to 汇款" to="汇款"/>
  11. </fork>
  12. <task assignee="商家" g="88,111,92,52" name="发货">
  13. <transition g="-44,-9" name="to 收货" to="收货"/>
  14. </task>
  15. <task assignee="客户" g="87,193,52" name="收货">
  16. <transition g="-18,-23" name="to join1" to="join1"/>
  17. </task>
  18. <task assignee="客户" g="385,115,52" name="汇款">
  19. <transition g="-70,-15" name="to 确认收货" to="确认收款"/>
  20. </task>
  21. <task assignee="商家" g="384,205,52" name="确认收款">
  22. <transition g="-24,-21" name="to join1" to="join1"/>
  23. </task>
  24. <join g="260,257,48" name="join1">
  25. <transition g="-50,-11" name="to end1" to="end1"/>
  26. </join>
  27. </process>

JAVA Code:
  1. package cn.edu.zust.itee.joinFork;
  2.  
  3. import java.io.InputStream;
  4. import java.util.List;
  5.  
  6. import org.jbpm.api.Configuration;
  7. import org.jbpm.api.ProcessEngine;
  8. import org.jbpm.api.ProcessInstance;
  9. import org.jbpm.api.task.Task;
  10. import org.junit.Test;
  11.  
  12. /**
  13. * @author 郑勇
  14. * 2013-7-11 13:50
  15. * 分支聚合活动
  16. * 这是多个分支并行(同时)执行,并且所有的分支Execution都到Join活动聚合后才向后执行;
  17. */
  18. public class JoinFork {
  19. ProcessEngine processEngine= Configuration.getProcessEngine();
  20. @Test
  21. public void testJoinForkActivity(){
  22. //部署流程定义
  23. //获得当前包中的文件
  24. InputStream in = this.getClass().getResourceAsStream("test.jpdl.xml");
  25. processEngine.getRepositoryService()
  26. .createDeployment()
  27. .addResourceFromInputStream("test.jpdl.xml",in)
  28. .deploy();
  29. //启动流程实例
  30. ProcessInstance pi = processEngine.getExecutionService().startProcessInstanceByKey("test");
  31. System.out.println("processIntenceId="+pi.getId());
  32. System.out.println("当前正在执行的活动:"+pi.findActiveActivityNames());
  33.  
  34. //完成"发货"和"汇款"任务
  35. List<Task> list = processEngine.getTaskService().createTaskQuery() //查询出该流程实例中分支任务
  36. .processInstanceId(pi.getId())
  37. .list();
  38. for(Task task :list){
  39. //活动按自己的分支执行
  40. processEngine.getTaskService().completeTask(task.getId());
  41. }
  42. }
  43. }

猜你在找的设计模式相关文章