# 事件网关
# 一、基本概念
事件网关(Event Gateway)是BPMN中的一种特殊网关,用于基于事件触发进行分支选择。它等待后续连接的多个事件中的任意一个发生,一旦某个事件被触发,其他分支的等待将被自动取消。
# 二、典型应用场景
# 订单处理流程优化示例
原始流程问题:
开始 → 订单确认 → [等待打款] → 备货 → 发货 → 结束
- 无限期等待打款
 - 无超时处理机制
 
使用事件网关优化后:
开始 → 订单确认 → (事件网关)
                ├─[消息事件:收到打款] → 备货 → 发货
                └─[定时事件:72小时] → 联系客户
# 三、核心特性
多事件等待:
- 同时监听多个事件
 - 包括:消息事件、定时事件、信号事件等
 
互斥触发:
- 任一事件触发后自动取消其他分支
 - 避免资源浪费
 
自动清理:
- 引擎自动管理事件订阅
 - 无需手动取消
 
# 四、配置指南
# 4.1 基础配置步骤
- 放置事件网关
 - 连接多个事件分支
 - 为每个分支配置:
- 事件类型(消息/定时等)
 - 事件参数(如超时时间)
 
 
# 4.2 示例
 ▲ 事件网关流程示例图
# 五、与其他元素的对比
| 特性 | 事件网关 | 排他网关 | 
|---|---|---|
| 触发机制 | 基于事件 | 基于条件表达式 | 
| 等待方式 | 被动等待事件发生 | 主动评估条件 | 
| 清理机制 | 自动取消其他等待 | 不适用 | 
| 典型应用场景 | 超时处理、多事件监听 | 业务条件分支 | 
# 六、最佳实践
超时处理:
- 结合定时事件实现业务超时
 - 示例:订单15分钟未支付自动取消
 
多通道响应:
- 监听多种客户反馈渠道
 - 示例:短信/邮件/APP推送任一回复即继续流程
 
异常处理:
- 结合错误事件实现备用方案
 - 示例:主操作失败时触发补偿流程
 
# 七、注意事项
事件类型限制:
- 只能连接中间捕获事件
 - 不能直接连接任务或结束事件
 
性能考虑:
- 避免设置过多并行事件分支
 - 长时间等待应设置合理超时
 
可视化提示:
- 建议为每个分支添加明确注释
 - 不同事件类型使用不同颜色标识
 
注:事件网关是处理异步事件等待场景的专用元素,在需要"先到先得"逻辑的业务流程中特别有用。