赞
踩
工作流(activiti7)-进阶使用(流程实例,个人任务,组任务)(三)
工作流(activiti7)-进阶使用(流程变量,网关,监听器,拦截器)(四)
工作流(activiti7)-进阶使用(子流程CallActivity详细使用)(五)
子流程:(一个人让另一个人干活,然后这个人最后验收工作),主流程在进行过程中,可能需要一个或者多个其它流程来完成任务的操作。
内嵌子流程(在主流程中嵌套一个流程)如下图,解耦性一般,不详细介绍
唤醒callActivity流程(主流程走到某个节点后唤醒其它子流程,当子流程走完后,主流程继续走。其中子流程可以作为一个独立的流程启动互不影响)
开始使用测试:其中called element 参数是唤醒其它流程填入其它流程的流程定义ID,这里写${call} 是可以动态配置,这样传递哪个流程ID就可以启动哪个流程。in 和out 和交互数据,写上后就会给子流程传递数据,子流程结束后会回传数据。项目运行后在ru_variables 和 hi_variables 表中
主流程图
子流程图 id为 ziliucheng
代码
这个流程图是在启动的时候就需要唤醒子流程,所以在启动的时候配置
- @Test
- public void test3() {
-
- //开启流程
- String processDefinitionId = "zhuliuchenge";
- Map<String,Object> map = new HashMap<String,Object>();
- map.put("call","ziliucheng");
- // map.put("calle","ziliuchenge");
- // map.put("calls","ziliuchengs");
-
- // ProcessInstance pi = pe.getRuntimeService().startProcessInstanceById(processDefinitionId);
- ProcessInstance pi = pe.getRuntimeService().startProcessInstanceByKey(processDefinitionId,map);
- // ProcessInstance pi = pe.getRuntimeService().startProcessInstanceByKey(processDefinitionId); //多种方式请求
- // ProcessInstance pi = pe.getRuntimeService().startProcessInstanceById(processDefinitionId,m);
- System.out.println(pi.getId()+"--"+pi.getProcessDefinitionId()+"--"+pi.getName()+"---"+pi.getStartUserId());
-
- }
这样启动后 在ru表和hi表就有了子流程数据。
也可以在任务后添加启动子流程设置
- @Test
- public void test5() {
- Map<String,Object> map = new HashMap<String,Object>();
- map.put("call","ziliucheng");
- //执行任务
- String taskId = "160003";
- pe.getTaskService().complete(taskId,map);
- // pe.getTaskService().complete(taskId);
- // pe.getRuntimeService().add
上面是唤醒一个子流程,如果需要唤醒多个就需要启动多次流程实例了。。。
另一种写法:
这样在启动的时候可以同时唤醒多个子流程每个子流程走完后,主流程任务都会处理下。直到三个子流程结束后,主流程处理完结束。
- @Test
- public void test3() {
-
- //开启流程
- String processDefinitionId = "zhuliuchenge";
- Map<String,Object> map = new HashMap<String,Object>();
- map.put("call","ziliucheng");
- map.put("calle","ziliuchenge");
- map.put("calls","ziliuchengs");
-
- // ProcessInstance pi = pe.getRuntimeService().startProcessInstanceById(processDefinitionId);
- ProcessInstance pi = pe.getRuntimeService().startProcessInstanceByKey(processDefinitionId,map);
- // ProcessInstance pi = pe.getRuntimeService().startProcessInstanceByKey(processDefinitionId); //多种方式请求
- // ProcessInstance pi = pe.getRuntimeService().startProcessInstanceById(processDefinitionId,m);
- System.out.println(pi.getId()+"--"+pi.getProcessDefinitionId()+"--"+pi.getName()+"---"+pi.getStartUserId());
-
- }
启动的设置多个参数即可。。。。
传递参数和接收参数 in ,out ,设置后启动callActivity流程的时候 会传入参数,子流程执行完也会返回参数。
运行的时候在以下variables表中 运行和历史表都有
设置这些参数是以
详细代码 git: https://github.com/itwsj/activitidemo
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。