# 中间等待
在业务流程执行过程中,等待机制是处理异步操作和协调多任务的关键功能。本文将详细介绍BPMN2中三种常见的等待事件类型及其应用场景。
# 1. 信号等待事件(Signal Intermediate Event)
# 应用场景
- 电商订单等待用户签收
 - 物流运输等待到达通知
 - 服务请求等待第三方系统回调
 
# 配置步骤
- 在流程中添加中间事件节点
 - 设置为信号中间捕获事件
 - 配置信号名称和信号key(如用户签收和订单ID)
 
 ▲ 信号等待事件流程示例
# 触发机制
当系统收到匹配信号时继续流程。
控制台命令触发:
signal 用户签收 -key ORDER123
# 2. 定时等待事件(Timer Intermediate Event)
# 应用场景
- 合同到期前提醒
 - 定期报告生成
 - 时效性业务预警(如船运前提醒)
 
# 配置方法
- 添加定时中间捕获事件
 - 设置触发时间(支持绝对时间和相对时间)
 - 可配置提前量(如提前30分钟)
 
 ▲ 定时等待事件流程示例
# 3. 消息等待事件(Message Intermediate Event)
# 典型应用
- 并行审批中的条件依赖
 - 跨系统流程协同
 - 审批链动态调整
 
# 配置方法
- 在分流网关后面拖3个节点,分别是:部长审批、总监审批、财务审批并行审批
 - 在财务审批后添加中间事件节点,设置为消息中间抛出时间
 - 配置消息名称(如财务已批) 4.在总监审批前添加中间事件节点,设为消息中间捕获事件
 
 ▲ 消息等待事件流程示例
# 4. 等待事件对比表
| 类型 | 触发条件 | 数据传递 | 适用场景 | 
|---|---|---|---|
| 信号等待 | 外部系统发信号 | 支持 | 用户操作/系统事件触发 | 
| 定时等待 | 到达指定时间 | 不支持 | 时效性任务 | 
| 消息等待 | 接收特定消息 | 支持 | 流程间协调/审批依赖 | 
# 5. 最佳实践建议
- 关键业务等待应设置超时机制:
 - 消息等待应使用业务主键作为消息key:
 - 复杂等待场景可结合事件子流程实现更精细的控制
 
掌握这些等待事件的使用方法,可以构建出更健壮、更灵活的业务流程,有效处理现实业务中的各种异步和协同场景。