目标
- 了解BPMN中常用网关的作用和特点
BPMN 网关的作用
网关不是流程真正处理节点, 是作为流程的一个控制节点存在, 用于流程的合并join和分支fork, 一个网关节点可以同时用于fork也可以同时用于join. Camunda 引擎并不会为网关生成对应的task记录.
Camunda modeler 如何设置default分支
Camunda modeler 无法通过UI设置default分支, 只能通过改写xml设置, 方法是: 为gateway tag 增加default
attribute, 缺省分支线上有一个back slash符号(/)
-
Flow_amount100 -
Flow_default -
各种网关的图标
排他网关 Exclusive gateway 页叫做 XOR gateway
作为fork的含义
- 只有第一个满足条件的分支被执行, 其他条件的分支不会被执行.
- 没有设置条件的分支, 就是缺省分支, 如果其他分支条件都不满足, 引擎会选择缺省分支执行.
- 如果没有满足条件的分支, 流程会报错.
- 可以理解为只有一个分支获取execution token
作为join的含义
- 只要有一个前置分支到达后, 即完成合并, 流程继续往下执行.
- 如果所有分支条件都不满足, 流程会报错.
包容网关 inclusive gateway, 也叫做 OR gateway
作为fork的含义
- 所有满足条件的分支都会被执行, 每个分支都有一个execution
- 没有设置条件的分支, 就是缺省分支, 如果其他分支条件都不满足, 引擎会选择缺省分支执行.
- 如果没有满足条件的分支, 流程会报错.
作为join的含义
- 所有满足入口条件的分子都到达网关后, 流程才会向后执行.
- 如果所有分支条件都不满足, 流程会报错.
并行网关 Parallel gateway, 也叫做 AND gateway
作为fork的含义
- 各个后续分支会被无条件执行
作为join的含义
- 所有前置分支都必须执行完毕, 才会完成合并, 流程才会继续向后执行.
复杂网关 Complex gateway
使用场景
- 使用代码实现的join和fork获取token的逻辑, 举例: 如果共有5个分支合并, 如果有3个分支令牌达到, 即想流程往后执行, 就只能使用代码实现该网关逻辑.
事件网关 Event gateway
使用场景
- 事件网关只能用于fork, 不能用于合并.
- 事件网关至少有两个outgoing分支, 只能有一个 incoming 分支.
- 事件网关只能后接
中间catch类事件
或消息接收task
- 事件网关的多个分支, 一直处于等待状态, 直到其中一个分支的事件到达, 流程才会向后执行.