什么是BPMN网关?
网关用于拆分或合并复杂的流程流场景,网关有下面几种方式:
- BPMN排他网关
- BPMN并行网关
- BPMN包含网关
排他网关Exclusive Gateway
排他网关也称专用网关,它是BPMN中使用的最常见的网关之一,被描绘为空钻石或可以显示为带有“X”的钻石图形,建模者最常使用带叉的钻石。作为最佳实践,一旦建模者选择使用哪个符号,他应该在整个图表中保持一致。
当用作分支网关(将顺序流分成多个路径,一分为二)时,专用网关可以具有2个或更多个传出路径,当某个变量条件返回“真”时,它会专门只指向下一个路径,当使用专用网关时,对于某个流程实例,运行时只能在多个路径中使用其中任意一条,这就是使用术语“独占或排他”的意思,检查每个路径上的变量条件,直到有一个路径的变量条件评估为真,一旦条件评估为真,流程就沿着为真的路径前进,并且不再检查其他路基的条件。
当用作聚合网关时,专用网关将传递它接收的任何令牌而不进行同步。这应该是直观有意义的,因为专用网关最常用于合并来自分散的专用网关的路径,其中只允许一个条件评估为真并发出令牌,如果融合的专用网关等待其他令牌进行同步,它将永远等待。
并行网关
并行网关是BPMN中使用的最常见的网关之一,并且被描绘为内部带有“+”的菱形
当用作分支网关(将一个顺序流分成多个路径)时,并行网关可以具有2个或更多个传出路径。使用并行网关时,必须为流程实例指定可采用的所有路径。在沿着每条路径行进之前没有检查条件。
当用作聚合网关时,并行网关将在合并和同步流之前会等待每个传入路径所有令牌的到达。
包含网关
包含性网关是BPMN中使用的最常见的网关之一,被描述为带有圆圈的菱形,包含性网关=专用网关+并行网关。
当用作分支网关(将一个顺序流分成多个路径)时,包含网关可以具有2个或更多个传出路径。它用于沿着条件评估为“True”的所有路径引导顺序流,路径策略可以有一个 或几个或全部。检查每个分支路径的条件,如果它的计算结果为true,则发送一个令牌到路径,使用包含网关,即使遭遇到一个分支的条件评估为“真”之后,也会检查其余分支条件,以查看是否应沿其他路径发送令牌。
通常,如果有一条路径被识别为默认路径。这意味着如果没有其他路径条件评估为true,则默认路径将自动继续。如果进程建模者未能定义缺省路径且没有任何路径条件评估为true,则会发生运行时异常。
当用作聚合网关时,包含网关将在合并和同步流之前等待所有令牌到达。每个融合的包含网关需要在流程中的之前有关联的那网关,以便它知道有哪些路径被激活了以及它应该等待多少个令牌,等待哪些令牌。