- ◇ 菱形:表示网关(Gateway),用于建模流程的分支(split)或合并(join)逻辑,如排他网关(Exclusive Gateway)、并行网关(Parallel Gateway)、包容网关(Inclusive Gateway)等,其行为由条件表达式或同步机制决定;
- □ 矩形:表示任务(Task),即流程中需执行的具体工作单元(如“审批申请”“生成发票”),可细分为用户任务、服务任务、脚本任务等;
- ⚪ 圆形:表示事件(Event),用于捕获或触发流程中的特定时刻或状态,分为开始事件(Start Event)、中间事件(Intermediate Event)和结束事件(End Event),可带图标标识类型(如消息、定时器、错误、信号等)。
此外,BPMN还依赖有向连线(Sequence Flow,实线箭头)表示控制流顺序,消息流(Message Flow,虚线箭头)表示跨池/泳道的交互,以及泳道(Lane)和池(Pool)组织责任边界。
BPMN中排他网关(Exclusive Gateway,◇)与包容网关(Inclusive Gateway,◇,通常带圆圈内加“+”或标注“inclusive”)虽外形相似(均为菱形),但在条件评估逻辑、路径选择规则和执行语义上存在本质区别:
✅排他网关(Exclusive Gateway)
- 评估逻辑:对所有输出流的条件表达式按顺序(或并行)求值,但仅选择第一个为
true的分支(类似编程中的if-else if-else); - 执行路径:严格单路径执行——有且仅有一条满足条件的流出边被激活;若无条件为真,则触发默认流(需显式指定 default 属性);
- 合并行为:作为汇聚网关时,等待任意一条输入流到达即触发后续节点(即“first-arriving join”,非同步等待);
- ⚠️ 注意:即使多个条件同时为真,也只选其一(BPMN规范不保证顺序,实际引擎通常按定义顺序取首个真值)。
✅包容网关(Inclusive Gateway)
- 评估逻辑:独立评估每条输出流的条件,所有为
true的分支全部激活(类似if...if...if...); - 执行路径:支持多路径并发执行(0、1、2…n 条路径均可);至少需有一条条件为真,否则必须配置默认流(否则流程卡死);
- 合并行为:作为汇聚网关时,必须等待所有已激活的输入分支全部到达后,才触发后续节点(即“synchronizing join”);未激活的分支不参与等待;
- ✅ 优势:适用于“审批通过且通知财务、同时抄送法务”的多条件并行场景。
📌 补充对比:
| 维度 | 排他网关 | 包容网关 |
|---|---|---|
| 分支数量 | 严格 1 条 | ≥0 条(所有真条件均执行) |
| 条件重叠处理 | 忽略后续真条件 | 所有真条件均响应 |
| 汇聚语义 | 任一到达即继续(非同步) | 所有已发分支到达才继续(同步) |
| 默认流要求 | 强烈推荐(否则可能死锁) | 必须配置(若无真条件则无路径) |
<!-- 示例:BPMN中包容网关的典型XML片段(简化) --><inclusiveGatewayid="inclusiveGw"name="审核结果处理"/><sequenceFlowid="flow1"sourceRef="inclusiveGw"targetRef="taskFinance"conditionExpression="${approved == true&&budgetExceeded == false}"/><sequenceFlowid="flow2"sourceRef="inclusiveGw"targetRef="taskLegal"conditionExpression="${legalReviewRequired == true}"/>