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的主要内容,如果未能解决你的问题,请参考以下文章

Activiti7工作流引擎:基础篇 常用操作

Activiti7工作流引擎:基础篇 Annotation

Activiti7工作流引擎:基础篇 Annotation

Activiti7工作流引擎:基础篇 Hello World

Activiti7工作流引擎:进阶篇 驳回(拒绝)

Activiti7工作流引擎:基础篇 流程变量