BPMN基本元素:网关 Gateways——流程的决策点
在BPMN中,网关(Gateway) 是流程的”十字路口”,用来控制流程的分支与汇合。不同的网关类型代表不同的决策逻辑。本文讲解网关的四大类型、语义差异与应用场景。
网关的核心作用
网关解决两个问题:
- 分支:一条流程路径分成多条(如果A则去B,否则去C)
- 汇合:多条流程路径汇聚为一条(等待所有分支完成后继续)
四大网关类型
排他网关(Exclusive Gateway/XOR)
决策逻辑:在多条出边中,恰好选一条执行。
特点:
- 只有一条条件为真时,才执行该分支
- 其他分支被跳过
- 所有出边应指定条件(或一个默认分支)
- 汇合时无需等待——只执行的那条分支完成即可
伪代码示意:
1 | if (orderAmount > 1000) { |
常见场景:
- 根据金额级别决策
- 根据审批结果(同意/拒绝)分支
- 根据客户类型(VIP/普通)分流
符号:
排他网关
(XOR)
并行网关(Parallel Gateway/AND)
决策逻辑:所有出边同时执行,执行完成后再汇合。
特点:
- 分支时:所有出边都会执行,无条件判断
- 汇合时:必须等待所有进入的分支都完成
- 出边不需要条件表达式
- 用于表示并发任务
伪代码示意:
1 | // 并行开启三个任务 |
常见场景:
- 通知多个部门(HR+财务+IT)同时处理
- 生成多个报告(财务报告、业务报告、合规报告)
- 系统初始化时并行加载多个模块
符号:
并行网关
(AND)
包容网关(Inclusive Gateway/OR)
决策逻辑:一条或多条出边可执行,由条件决定。
特点:
- 比排他网关灵活:多条条件都为真时,多条分支都执行
- 汇合时:必须等待所有执行的分支完成
- 比并行网关严格:非所有分支都执行,由条件决定
- 复杂度最高,使用最少
伪代码示意:
1 | // 根据订单内容,可能执行多条分支 |
常见场景:
- 订单处理中的可选流程(不是所有订单都需要保险)
- 促销活动中的可选赠品(满足多个条件则赠多个礼品)
符号:
包容网关
(OR)
基于事件的网关(Event-Based Gateway)
决策逻辑:等待多个事件中的一个发生,然后执行对应分支。
特点:
- 与其他网关不同,基于事件而非条件
- 分支代表不同的事件(消息、定时器、信号)
- 第一个事件触发后,其他分支被取消
- 常用于等待外部系统的反馈
伪代码示意:
1 | // 等待来自多个来源的消息,执行第一个到达的 |
常见场景:
- 支付流程中等待多种支付方式的确认
- 客服工单中等待客户或系统的响应
- 拍卖系统中等待最高出价或截止时间
符号:
事件网关
(Event)
网关的分支与汇合
分支规则
| 网关类型 | 分支方式 | 条件 |
|---|---|---|
| 排他网关 | 选一 | 互斥条件 |
| 并行网关 | 全选 | 无条件 |
| 包容网关 | 选多 | 独立条件 |
| 事件网关 | 等事件 | 事件触发 |
汇合规则
| 网关类型 | 汇合方式 | 等待 |
|---|---|---|
| 排他网关 | 任一到达即汇合 | 否 |
| 并行网关 | 全部到达才汇合 | 是 |
| 包容网关 | 全部执行分支到达 | 是 |
| 事件网关 | N/A(不需汇合) | N/A |
小案例:订单处理决策树
1 | [开始] |
小结
掌握网关:
- ✓ 排他网关:one-or-none 逻辑
- ✓ 并行网关:并发任务同步
- ✓ 包容网关:灵活多分支(使用需谨慎)
- ✓ 事件网关:基于事件触发的分支
能够设计出清晰的决策流、高效的并发与异步流程。