Activiti——网关

网关用来控制流程的流向

1. 排他网关ExclusiveGateway

1.1 概念

排他网关,用来在流程中实现决策。 当流程执行到这个网关,所有分支都会判断条件是否为true,如果为true则执行该分支,排他网关只会选择一个为true的分支执行。如果有两个分支条件都为true,排他网关会选择id值较小的一条分支去执行。

为什么要用排他网关?

不用排他网关也可以实现分支,如:在连线的condition条件上设置分支条件。

在连线设置condition条件的缺点:如果条件都不满足,流程就结束了(是异常结束)。如果从网关出去的线所有条件都不满足则系统抛出异常。

1.2 案例

出差申请大于等于3天需要先由总经理审批再由财务审批,小于3天直接由财务审批。

image-20230213225917585

测试:

当部门经理审批后,当出差天数为5时,会根据条件判断,当前需要走【总经理审批】,当前任务表:SELECT * FROM act_ru_task

image-20230213232953567

上图中:只有总经理审批是当前的任务在执行。

2. 并行网关ParallelGateway

2.1 概念

  • 并行网关允许将流程分成多条分支,也可以把多条分支汇聚到一起。

  • 并行网关的功能是基于进入和外出顺序流的:

    • 分支:并行后的所有外出顺序流,为每个顺序流都创建一个并发分支。

    • join汇聚: 所有到达并行网关,在此等待的进入分支, 直到所有进入顺序流的分支都到达以后, 流程就会通过汇聚网关。

注意,如果同一个并行网关有多个进入和多个外出顺序流, 它就同时具有分支和汇聚功能。 这时,网关会先汇聚所有进入的顺序流,然后再切分成多个并行分支。

与其他网关的主要区别是,并行网关不会解析条件。 即使顺序流中定义了条件,也会被忽略。

2.2 案例

出差申请由部门经理审批后,需要同时由总经理审批和财务审批,才可以结束。

image-20230213230034272

测试:

当部门经理审批后,当前需要走【财务审批+总经理审批】,当前任务表:SELECT * FROM act_ru_task

image-20230213231916621

上图中:财务审批、总经理审批 都是当前的任务,在并行执行。

3.包含网关InclusiveGateway

3.1 概念

  • 包含网关可以看做是排他网关和并行网关的结合体。

  • 和排他网关一样,你可以在外出顺序流上定义条件,包含网关会解析它们。 但是主要的区别是包含网关可以选择多于一条顺序流,这和并行网关一样。

  • 包含网关的功能是基于进入和外出顺序流的:

    • 分支:所有外出顺序流的条件都会被解析,结果为true的顺序流会以并行方式继续执行, 会为每个顺序流创建一个分支。
    • 汇聚:所有并行分支到达包含网关,会进入等待状态, 直到每个包含流程token的进入顺序流的分支都到达。 这是与并行网关的最大不同。换句话说,包含网关只会等待被选中执行了的进入顺序流。 在汇聚之后,流程会穿过包含网关继续执行。

3.2 案例

出差申请大于等于3天需要由总经理审批,小于3天由财务审批,出差申请必须经过部门经理审批。

image-20230213225657718

测试:

当出差天数为2时,会根据条件判断,当前需要走【财务审批+部门经理审批】,当前任务表:SELECT * FROM act_ru_task

image-20230213231023874

上图中:财务审批、部门经理审批 都是当前的任务,在并行执行。


Activiti——网关
http://example.com/网关/
作者
Panyurou
发布于
2023年2月12日
许可协议