BPMN基本元素:事件 Events——流程的触发与结束
在BPMN中,事件(Event) 代表流程的”关键时刻”——何时开始、中途如何被触发、何时结束。事件是流程的入口与出口,也是流程中等待与反应的载体。本文深入讲解事件的分类、语义及常见用法。
事件的三个生命周期
1. 启动事件(Start Event)
用途:定义流程的起点,指定流程如何被触发。
常见类型:
- 空启动事件(None Start Event):人工启动,无特定触发条件
- 消息启动(Message Start Event):接收外部消息后启动
- 定时器启动(Timer Start Event):按时间表自动启动(如每天早上8点)
- 信号启动(Signal Start Event):响应来自系统/其他流程的信号
- 错误启动(Error Start Event):从另一个流程中断触发
符号示意:
空启动 消息启动 定时器启动 信号启动 错误启动
2. 中间事件(Intermediate Event)
用途:在流程进行中捕获事件,可作为”等待点”或”触发点”。
常见类型:
- 消息中间事件:等待接收消息或发送消息
- 定时器中间事件:等待指定时间后继续
- 错误中间事件:捕获错误并处理
- 信号中间事件:等待或发送信号
- 补偿事件:在子流程发生错误时触发补偿逻辑
特殊:边界事件(Boundary Event)
- 附着在活动(任务/子流程)的边界上
- 中断型边界事件:触发时中断当前活动,跳转到异常处理路径
- 非中断型边界事件:触发时不中断当前活动,并行执行异常处理
符号示意:
中间(消息) 中间(定时器) 边界(中断) 边界(非中断)
3. 结束事件(End Event)
用途:定义流程的终点。
常见类型:
- 空结束事件(None End Event):流程正常结束
- 错误结束事件(Error End Event):流程异常结束,向父流程报告错误
- 消息结束事件(Message End Event):流程结束并发送消息到外部系统
- 信号结束事件(Signal End Event):发送信号给其他流程
符号示意:
空结束 错误结束 消息结束
事件与异常处理的结合
BPMN的强大之处在于精细化异常建模:
1 | ┌─────────────┐ |
这比简单的”超时设置”更清晰——明确表示:
- 定时器触发时的行为
- 是否中断当前流程
- 触发后的后续处理路径
小案例:消息驱动的支付流程
1 | 启动事件(人工创建订单) |
事件的关键属性
| 属性 | 说明 | 示例 |
|---|---|---|
| 类型 | 事件的种类(消息、定时器等) | Message, Timer, Error |
| 方向 | 捕获/发送(对消息/信号) | Catch, Throw |
| 时机 | 同步/异步、立即/延迟 | Start, Intermediate, End |
| 中断性 | 中断/非中断(边界事件) | Interrupting, Non-interrupting |
小结
事件是BPMN流程的”时间与触发器”。掌握:
- ✓ 三个生命周期(启动、中间、结束)
- ✓ 各类事件的触发条件与语义
- ✓ 边界事件处理异常
- ✓ 事件与活动的组合
便能设计出韧性强、异常清晰的流程。