# 事件网关

# 一、基本概念

事件网关(Event Gateway)是BPMN中的一种特殊网关,用于基于事件触发进行分支选择。它等待后续连接的多个事件中的任意一个发生,一旦某个事件被触发,其他分支的等待将被自动取消。

# 二、典型应用场景

# 订单处理流程优化示例

原始流程问题

开始 → 订单确认 → [等待打款] → 备货 → 发货 → 结束
  • 无限期等待打款
  • 无超时处理机制

使用事件网关优化后

开始 → 订单确认 → (事件网关)
                ├─[消息事件:收到打款] → 备货 → 发货
                └─[定时事件:72小时] → 联系客户

# 三、核心特性

  1. 多事件等待

    • 同时监听多个事件
    • 包括:消息事件、定时事件、信号事件等
  2. 互斥触发

    • 任一事件触发后自动取消其他分支
    • 避免资源浪费
  3. 自动清理

    • 引擎自动管理事件订阅
    • 无需手动取消

# 四、配置指南

# 4.1 基础配置步骤

  1. 放置事件网关
  2. 连接多个事件分支
  3. 为每个分支配置:
    • 事件类型(消息/定时等)
    • 事件参数(如超时时间)

# 4.2 示例

事件网关流程示例图 ▲ 事件网关流程示例图

# 五、与其他元素的对比

特性 事件网关 排他网关
触发机制 基于事件 基于条件表达式
等待方式 被动等待事件发生 主动评估条件
清理机制 自动取消其他等待 不适用
典型应用场景 超时处理、多事件监听 业务条件分支

# 六、最佳实践

  1. 超时处理

    • 结合定时事件实现业务超时
    • 示例:订单15分钟未支付自动取消
  2. 多通道响应

    • 监听多种客户反馈渠道
    • 示例:短信/邮件/APP推送任一回复即继续流程
  3. 异常处理

    • 结合错误事件实现备用方案
    • 示例:主操作失败时触发补偿流程

# 七、注意事项

  1. 事件类型限制

    • 只能连接中间捕获事件
    • 不能直接连接任务或结束事件
  2. 性能考虑

    • 避免设置过多并行事件分支
    • 长时间等待应设置合理超时
  3. 可视化提示

    • 建议为每个分支添加明确注释
    • 不同事件类型使用不同颜色标识

注:事件网关是处理异步事件等待场景的专用元素,在需要"先到先得"逻辑的业务流程中特别有用。