网关

目录

排他网关

说明

也叫异或(XOR)网关,可以实现流程的“或”逻辑,图标图下

执行到这个网关,所有分支都会判断条件是否为 true,如果为 true 则执行该分支,注意,排他网关只会选择一个为 true 的分支执行。

即使有两个分支条件都为 true, 排他网关也会只选择一条分支去执行

与连线上设置分支条件的区别

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

如果条件都不满足,不使用排他网关,流程就结束了(是异常结束)。

如果 使用排他网关决定分支的走向,如下:

如果从网关出去的线所有条件都不满足则系统抛出异常。

org.activiti.engine.ActivitiException: No outgoing sequence flow of the
exclusive gateway 'exclusivegateway1' could be selected for continuing
the process
at
org.activiti.engine.impl.bpmn.behavior.ExclusiveGatewayActivityBehav
ior.leave(ExclusiveGatewayActivityBehavior.java:85)

并行网关

说明

并行网关允许将流程分成多条分支,也可以把多条分支汇聚到一起,可以实现流程的“且”逻辑,图标如下:

  • fork 分支:

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

  • join 汇聚:

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

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

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

会签任务

并行网关在业务应用中常用于会签任务,会签任务即多个参与者共同办理的任务,比如多个部门完成各自分派的任务,然后整个流程才会推进。

注意区别单个节点上的会签,单个节点上的会签倾向于“投票表决”。

举例

如下图,当人事经理存档节点完成后,只有财务会计节点和行政考核节点都完成,整个流程才算结束

包含网关

说明

既有排他网关那种条件解析,又有并行网关的多路分支的并行操作,算是前两种的结合体,能同时实现流程的“且”和“或”逻辑,图标如下

  • 分支:

    所有外出顺序流的条件都会被解析,结果为 true 的顺序流会以并行方式继续执行, 会为每个顺序流创建一个分支。

  • 汇聚:

    所有并行分支到达包含网关,会进入等待状态, 直到每个包含流程 token 的进入顺序流的分支都到达。 这是与并行网关的最大不同。换句话说,包含网关只会等待被选中执行了的进入顺序流。 在汇聚之后,流程会穿过包含网关继续执行。

举例

员工领取体检单后,分为普通员工和领导,此时工作流通过包含网关,就可以自动进行逻辑判断

普通员工在领取体验单后,只有常规体检项+抽血化验,那么包含网关就只会开启这两个分至,并在最后节点,等待这两个分支会合,才算完成整个工作流

领导在领取体验单后,有常规体检项+抽血化验+附加项体检,那么包含网关就会开启三个分支,并在最后节点,等待三个分支会合,才算完成整个工作流

事件网关

说明

事件网关允许根据事件判断流向。网关的每个外出顺序流都要连接到一个中间捕获事件。 当流程到达一个基于事件网关,网关会进入等待状态:会暂停执行。与此同时,会为每个外出顺序流创建相对的事件订阅。

  1. 事件网关必须有两条或以上外出顺序流

  2. 事件网关后,只能使用intermediateCatchEvent类型(activiti不支持基于事件网关后连接ReceiveTask)

  3. 连接到事件网关的中间捕获事件必须只有一个入口顺序流

事件支持多种事件类型:

  • Message Event:消息事件

  • Singal Event: 信号事件

  • Timer Event: 定时事件

举例

posted @ 2022-11-08 14:01  夏·舍  阅读(151)  评论(0编辑  收藏  举报