# 包容网关

包容网关可以看作排他网关和并行网关的结合体。与排他网一样,可以在外出顺序流上定义条件,但与排他网关不同的是, 进行决策判读时,包容网关所有条件为true的后继分支都会被依次执行。如果所有分支条件都为false并且定义了一条默认分支, 那么该默认分支会被执行。如果没有可被执行的分支,则会抛出异常(在流程设计要避免出现这种情况)。

包容网关同样包含分支和合并两种行为。

分支及包容拆分。所有外出顺序流的条件都会被解析,结果为true的顺序流会以并行的方式继续执行,并为每条顺序流创建一条分支。如果后继分支都是false,则应 合理的选择一条默认路径,否则流程引擎执行到该网关的分支都将中断于此。

合并即包容合并。所有到达包容网关的活动分支路径都汇聚于此等待,直到所有"可以到达"包容网关的分支路径全部"到达"包容网关,流程才会通过包容网关。这与并行网关的合并策略 有所不同。
包含网关路径的逻辑为: 计算该流程实例中当前所处的所有节点,检查从其位置是否有一条到达包含网关的路径(忽略顺序流上的任何条件)。如果存在这种的路径(可到达但尚未到达),则不会出发包容网关的合并行为。 所有在流程设计尽量避免网关嵌套,防止包容网关认为路径可能不被到达而放弃等待。

# 流程设计

foo

请假天数不同,流转到不同的分支节点进行审批

# 流程验证

foo

读者可以登陆系统,自行验证包容网关的运行情况。Activiti演示站 (opens new window)