Activiti7工作流引擎:基础篇 网关Gateway
Posted vbirdbest
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Activiti7工作流引擎:基础篇 网关Gateway相关的知识,希望对你有一定的参考价值。
合适真的比喜欢重要,后来你选择了合适,而我输给了喜欢。
一:ExclusiveGateway 排它网关
所谓网关就是条件分支语句if() else if ()
,排它网关会执行所有条件找到一个为true的执行,如果有多个条件为true那么会执行优先定义的(Id较小的那个UserTask),如果条件都为false则抛出异常。
排它网关和直接在连线上设置条件的区别:
- 条件分支不满条件抛异常,如果都满足都执行。
- 排它网关不满足条件抛异常,如果都满足只执行Id较小的任务(即先绘制的任务)。
if(day < 3)
else if (day >= 3)
else
throw new Exception();
- day大于等于3天走部门经理审批,大于小于3天直接走人事审批。
- 修改条件,分别改为day>=3和day>=2,传值day=1,抛异常
ActivitiException
。
二:ParallelGateway 并行网关
并行网关没有条件,写了条件也会被忽略,所有分支都会执行,并行网关一般会成对使用,前面做fork分支
,后面做join汇聚
。
if(true)
// UserTask
if(true)
// UserTask
当经理审批完接下来就会同时插入两条任务(部门经理审批、技术经理审批),两个经理审核完后就进入人事审批。
三:InclusiveGateway 包含网关
包含网关:是同时包括ExclusiveGateway 排它网关和ParallelGateway 并行网关,如果你在连线上写条件就是排它网关,如果没写条件就是ParallelGateway 并行网关。
当张三审核完后day=5排它网关走项目经理审批,并行网关不需要条件所以也走人事审批
当项目经理审批和人事审批完成后,因day=5走总经理审批
@Test
public void test()
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
Deployment deploy = processEngine.getRepositoryService()
.createDeployment()
.addClasspathResource("bpmn/leaveInclusiveGateway.bpmn")
.name("请假流程")
.deploy();
Map<String, Object> assignees = new HashMap<>();
assignees.put("creator", "张三");
assignees.put("pm", "狗经理");
assignees.put("techPM", "狗技术经理");
assignees.put("hr", "狗人事");
assignees.put("gm", "狗总经理");
assignees.put("day", 5);
String businessKey = "1";
ProcessInstance processInstance = processEngine.getRuntimeService()
.startProcessInstanceByKey("leaveInclusiveGateway", businessKey, assignees);
TaskService taskService = processEngine.getTaskService();
Task task = taskService
.createTaskQuery()
.processDefinitionKey("leaveInclusiveGateway")
.taskAssignee("张三")
.singleResult();
if (task != null)
taskService.complete(task.getId());
四:事件网关 EventGateway
实际工作中使用比较少。
以上是关于Activiti7工作流引擎:基础篇 网关Gateway的主要内容,如果未能解决你的问题,请参考以下文章