当前位置:   article > 正文

工作流(activiti7)-进阶使用(子流程CallActivity详细使用)(五)

工作流(activiti7)-进阶使用(子流程CallActivity详细使用)(五)

工作流(activiti7)教程-简单的介绍和使用(一)

工作流(activiti7)教程-简单的介绍和使用(二)

工作流(activiti7)-进阶使用(流程实例,个人任务,组任务)(三)

工作流(activiti7)-进阶使用(流程变量,网关,监听器,拦截器)(四)

工作流(activiti7)-进阶使用(子流程CallActivity详细使用)(五)

子流程:(一个人让另一个人干活,然后这个人最后验收工作),主流程在进行过程中,可能需要一个或者多个其它流程来完成任务的操作。

内嵌子流程(在主流程中嵌套一个流程)如下图,解耦性一般,不详细介绍

唤醒callActivity流程(主流程走到某个节点后唤醒其它子流程,当子流程走完后,主流程继续走。其中子流程可以作为一个独立的流程启动互不影响)

开始使用测试:其中called element  参数是唤醒其它流程填入其它流程的流程定义ID,这里写${call}  是可以动态配置,这样传递哪个流程ID就可以启动哪个流程。in 和out  和交互数据,写上后就会给子流程传递数据,子流程结束后会回传数据。项目运行后在ru_variables 和 hi_variables 表中

主流程图

子流程图 id为 ziliucheng

代码

这个流程图是在启动的时候就需要唤醒子流程,所以在启动的时候配置

  1. @Test
  2. public void test3() {
  3. //开启流程
  4. String processDefinitionId = "zhuliuchenge";
  5. Map<String,Object> map = new HashMap<String,Object>();
  6. map.put("call","ziliucheng");
  7. // map.put("calle","ziliuchenge");
  8. // map.put("calls","ziliuchengs");
  9. // ProcessInstance pi = pe.getRuntimeService().startProcessInstanceById(processDefinitionId);
  10. ProcessInstance pi = pe.getRuntimeService().startProcessInstanceByKey(processDefinitionId,map);
  11. // ProcessInstance pi = pe.getRuntimeService().startProcessInstanceByKey(processDefinitionId); //多种方式请求
  12. // ProcessInstance pi = pe.getRuntimeService().startProcessInstanceById(processDefinitionId,m);
  13. System.out.println(pi.getId()+"--"+pi.getProcessDefinitionId()+"--"+pi.getName()+"---"+pi.getStartUserId());
  14. }

这样启动后 在ru表和hi表就有了子流程数据。

也可以在任务后添加启动子流程设置

  1. @Test
  2. public void test5() {
  3. Map<String,Object> map = new HashMap<String,Object>();
  4. map.put("call","ziliucheng");
  5. //执行任务
  6. String taskId = "160003";
  7. pe.getTaskService().complete(taskId,map);
  8. // pe.getTaskService().complete(taskId);
  9. // pe.getRuntimeService().add

上面是唤醒一个子流程,如果需要唤醒多个就需要启动多次流程实例了。。。

另一种写法:

 这样在启动的时候可以同时唤醒多个子流程每个子流程走完后,主流程任务都会处理下。直到三个子流程结束后,主流程处理完结束。

  1. @Test
  2. public void test3() {
  3. //开启流程
  4. String processDefinitionId = "zhuliuchenge";
  5. Map<String,Object> map = new HashMap<String,Object>();
  6. map.put("call","ziliucheng");
  7. map.put("calle","ziliuchenge");
  8. map.put("calls","ziliuchengs");
  9. // ProcessInstance pi = pe.getRuntimeService().startProcessInstanceById(processDefinitionId);
  10. ProcessInstance pi = pe.getRuntimeService().startProcessInstanceByKey(processDefinitionId,map);
  11. // ProcessInstance pi = pe.getRuntimeService().startProcessInstanceByKey(processDefinitionId); //多种方式请求
  12. // ProcessInstance pi = pe.getRuntimeService().startProcessInstanceById(processDefinitionId,m);
  13. System.out.println(pi.getId()+"--"+pi.getProcessDefinitionId()+"--"+pi.getName()+"---"+pi.getStartUserId());
  14. }

启动的设置多个参数即可。。。。

传递参数和接收参数 in  ,out ,设置后启动callActivity流程的时候 会传入参数,子流程执行完也会返回参数。

运行的时候在以下variables表中 运行和历史表都有

设置这些参数是以 

详细代码 git:  https://github.com/itwsj/activitidemo

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/452288
推荐阅读
相关标签
  

闽ICP备14008679号