4. 事件风暴画布设计:画布结构、颜色与符号规范
事件风暴(Event Storming)是一种协作建模技术,而画布是其核心载体。在分布式事务场景中,画布不仅需要承载业务流,还必须映射技术边界与安全约束。本节将定义画布的三大结构要素、一套高对比颜色系统以及标准符号规范,确保团队在跨职能讨论时拥有统一的“视觉语言”。
4.1 画布结构:时间轴、泳道与聚合边界
画布采用从左至右的时间推进逻辑,结合垂直泳道划分职责域,并通过聚合边界封装一致性单元。三者共同构成事件风暴的骨架。
| 结构要素 | 定义 | 在分布式事务中的用途 |
|---|---|---|
| 时间轴 | 水平方向从左到右表示事件发生的先后顺序 | 映射事务的 begin → prepare → commit/rollback 阶段 |
| 泳道 | 垂直方向划分不同 Bounded Context 或微服务 | 区分订单、支付、库存等不同服务的事件与命令 |
| 聚合边界 | 用粗虚线框包裹一组强一致性实体与事件 | 标识一个本地事务边界(如订单聚合内的状态变更) |
实践建议:在画布顶部标注全局时间刻度(如 T0, T1, T2),每个刻度对应一个分布式事务的里程碑节点。泳道数量建议控制在 5~7 条以内,超出时考虑分层画布。
4.2 颜色与符号规范
颜色用于快速区分事件类型、命令、角色与边界。符号则定义了每个元素的形状与线型。以下规范直接对齐参考脚本的高对比色板,确保在投影或打印时均清晰可辨。
4.2.1 核心元素颜色对照表
| 元素类型 | 填充色 | 描边色 | 文字色 | 形状 |
|---|---|---|---|---|
| 领域事件 | #e74c3c (红) | #c0392b | #ffffff | 圆角矩形 |
| 命令 | #3498db (蓝) | #2980b9 | #ffffff | 直角矩形 |
| 聚合 | #2ecc71 (绿) | #27ae60 | #ffffff | 圆角矩形 + 粗边框 |
| 外部系统/角色 | #f39c12 (橙) | #e67e22 | #ffffff | 六边形 |
| 策略/规则 | #9b59b6 (紫) | #8e44ad | #ffffff | 圆角菱形 |
| 说明/注释 | #fff3cd | #ffc107 | #856404 | 矩形 + 左侧竖线 |
4.2.2 线型与边界规范
- 实线箭头(#7f8c8d):表示事件流或命令触发关系,箭头指向接收方。
- 虚线箭头(#7f8c8d, stroke-dasharray="5,5"):表示异步消息、超时信号或补偿动作。
- 粗虚线框(描边 #7f8c8d, 线宽 3):表示聚合边界或事务边界。
- 双线框(描边 #1abc9c):表示跨服务的 Saga 协调器边界。
4.3 画布结构 SVG 示意图
下图展示了一个包含时间轴、三条泳道(订单服务、支付服务、库存服务)以及两个聚合边界的典型画布布局。节点颜色严格遵循 4.2 节规范。
4.4 符号使用规范与常见误区
常见误区:将“命令”与“事件”的颜色混淆,或在聚合边界内放置跨服务的事件。记住:命令是蓝色的“请求”,事件是红色的“事实”。聚合边界内只能包含同一服务内的实体与事件。
4.4.1 符号使用速查表
| 场景 | 正确符号 | 错误示例 |
|---|---|---|
| 用户提交订单 | 蓝色直角矩形:提交订单(命令) | 红色圆角矩形(误用事件表示命令) |
| 订单状态变为“已支付” | 红色圆角矩形:订单已支付(领域事件) | 蓝色直角矩形(误用命令表示事件) |
| 订单与订单项必须同时保存 | 绿色粗边框圆角矩形包裹两者(聚合) | 分开放在不同泳道(破坏事务边界) |
| 支付超时后触发取消 | 紫色菱形:超时取消策略(策略) | 直接用红色事件表示(策略不是事件) |
4.5 第二张 SVG:颜色与符号图例
为方便团队快速查阅,以下 SVG 以图例形式汇总所有元素的标准配色与形状,可直接打印作为 workshop 参考。
4.6 画布设计检查清单
交付检查清单:
- ☐ 时间轴是否覆盖了事务的完整生命周期(begin → end)?
- ☐ 每个泳道是否对应一个独立的 Bounded Context 或微服务?
- ☐ 聚合边界内是否只包含同一本地事务的实体?
- ☐ 所有事件是否使用红色圆角矩形?所有命令是否使用蓝色直角矩形?
- ☐ 跨泳道的箭头是否标注了消息类型(同步/异步)?
- ☐ 是否在画布角落放置了颜色图例(可参考 4.5 节 SVG)?