目录
三、门路(Gateway)
将要继续做什么的决策点。
门路具有的共同特点:
- 分岔(split/fork)
排它门路(exclusive)、并发门路(parallel)、包含门路(inclusive)、事件门路(event-based)
- 聚合(merge/join)
排它门路(exclusive)、并发门路(parallel)、包含门路(inclusive)
条件路径(Conditional Sequence Flow):从门路伸出的多个分支路径
特点:
- 可以在上面定义判断条件;
- 部分门路需要根据判断条件的值是否为TRUE决定此路径是否继续执行;
- BPMN 2.0默认的特性就是一个活动发出的多条路径都是并行执行的;
1.排它门路(Exclusive (XOR))
用于多选一的场景。从它分出的路径上可以设置判断条件。
规则如下:
- 流程引擎会执行从它发出的所有路径上的判断条件;
- 若有多个路径判断条件的值为TRUE,则按照路径在XML中定义顺序取第一个值为TRUE的路径继续;
- 若没有找到任何一个值为TRUE的路径,并且不存在未设置判断条件的路径,则抛出异常;
- 若存在未设置判断条件的路径,则在没有找到为TRUE的路径时,作为默认路径继续;
2.并行门路(Parallel (AND))
用于多条路径共同执行的场景。从它分出的路径上不设置判断条件。
规则如下:
- 并行门路分岔点(fork):从并行门路发出的所有路径都并发执行;
- 并行门路聚合点(join):等待所有路径都并发执行完成,流程才继续;
- 并行门路不执行从它发出的路径上设置的判断条件,若有设置,则并行门路直接忽略;
- 并行门路可以只是分岔点,也可以只是聚合点,也可以即是分岔点又是聚合点;
3.包含门路(Inclusive (OR))
用于执行部分路径的场景。从它分出的路径上可设置判断条件。
规则如下:
- 包含门路分岔点(fork):从包含门路发出的所有路径上的判断条件都会被执行,判断条件的值为TRUE的路径会继续执行;若有多个判断条件的值为TRUE的路径,则这些路径并发执行;
- 包含门路聚合点(join):等待所有判断条件的值为TRUE的路径都并发执行完成,流程才继续;
- 包含门路可以只是分岔点,也可以只是聚合点,也可以即是分岔点又是聚合点;
- 包含门路的行为介于排它门路和并发门路之间。
4.事件门路(Event-based)
用于由事件触发执行路径的场景。发出的路径上不设置判断条件。
规则如下:
- 事件门路只能与中间捕获事件相连;这些中间捕获事件相连只能有一条进入路径;
- 流程执行到事件门路后,将进入到等待状态,流程会挂起;
- 从事件门路发出的路径数必须大于等于2,且可以连中间捕获事件,也可以连消息接收任务;
- 从事件门路发出的路径都会创建订阅,一旦其中一条路径上的事件被触发,其它等待中的订阅将被取消。
参考文档
BPMN 2.0 Symbol Reference
BPMN 2.0 Symbols - A complete guide with examples. - Camunda
BPMN 2.0 Implementation Reference
BPMN 2.0 Implementation Reference | docs.camunda.org
Get started with Camunda
Getting started with Camunda Platform | docs.camunda.org
Camunda User Guide
User Guide | docs.camunda.org
Camunda Best Practices
https://camunda.com/best-practices/