4. 识别领域事件(下):事件风暴工作坊实操——从核心业务流程开始,逐步覆盖支撑子域,使用不同颜色便签区分事件类型

在上一节中,我们建立了领域事件的理论基础与识别原则。本节将进入实战环节:通过事件风暴工作坊,从核心业务流程切入,逐步向支撑子域扩展,并利用不同颜色的便签(或数字白板中的色块)对事件类型进行视觉化区分。

4.1 工作坊准备:角色、物料与空间布局

一次成功的事件风暴工作坊需要明确的角色分工与充足的物理/数字物料。建议按以下标准配置团队与工具:

角色 人数建议 职责
领域专家 2-4 人 提供核心业务知识,验证事件真实性
技术架构师 1-2 人 引导技术可行性讨论,记录边界上下文
产品经理 1-2 人 澄清需求优先级,确认事件触发条件
记录员 1 人 拍照、整理便签、维护在线白板
引导师 1 人 控制节奏,提问“然后发生了什么?”
物料清单: 橙色便签(领域事件)、蓝色便签(命令/触发动作)、绿色便签(外部系统/角色)、红色便签(热点/问题)、黄色便签(聚合/实体)。准备一面至少 4 米长的空白墙或数字白板(如 Miro、Mural)。

4.2 从核心业务流程开始:时间线风暴

工作坊的第一步是聚焦于核心域。以电商订单系统为例,引导师带领团队从“用户下单”这个起点开始,沿着时间线向右推进,每发生一个业务状态变化就贴一张橙色便签。

核心流程事件识别步骤:

  1. 定义起点: 用户提交购物车(触发命令)。
  2. 识别第一个事件: “订单已创建”。
  3. 追问“然后呢?”: 系统校验库存 → “库存已锁定”。
  4. 继续推进: 支付网关回调 → “支付已确认”。
  5. 直到终点: 物流发货 → “订单已签收”。

以下 SVG 展示了核心流程中事件与命令的交互关系:

核心业务流程事件风暴示例 订单已创建 库存已锁定 支付已确认 订单已签收 提交订单 锁定库存 确认支付 橙色 = 领域事件(已发生的事实) | 蓝色 = 命令(触发事件的动作)

4.3 逐步覆盖支撑子域

核心流程的事件识别完成后,团队需要将视野扩展到支撑子域。支撑子域通常包括:通知服务、积分系统、审计日志、推荐引擎等。这些子域的事件往往由核心域事件间接触发。

扩展策略:

  • 事件传播: 核心域事件“支付已确认”会触发支撑子域事件“积分已累计”。
  • 异步响应: “订单已签收”触发“满意度调查已发送”。
  • 补偿事件: 当核心流程失败时,支撑子域产生“库存已释放”事件。
实践要点: 在支撑子域的事件识别中,使用紫色便签表示外部系统集成事件(如“物流单号已回传”),使用绿色便签表示定时触发事件(如“每30分钟同步一次对账文件”)。这有助于在后续微服务拆分时明确事件来源。

4.4 颜色便签分类标准

为了在视觉上快速区分事件类型,我们建立以下便签颜色编码体系。该体系将在整个工作坊中严格执行:

便签颜色 事件类型 示例 微服务影响
橙色 核心领域事件 订单已支付、库存已锁定 通常对应聚合根状态变更
紫色 外部集成事件 物流轨迹已更新、银行回执已接收 需要定义防腐层(ACL)
绿色 定时/批处理事件 每日对账文件已生成、会话超时 可能引入调度微服务
红色 异常/补偿事件 支付超时已触发、库存回滚 需要 Saga 或流程管理器
黄色 用户行为事件 用户已浏览商品、评论已提交 通常用于 CQRS 的读模型

4.5 实操案例:从核心到支撑的事件覆盖

以下 SVG 展示了在一个电商系统中,核心流程事件如何向支撑子域辐射,并形成完整的事件网络:

核心域与支撑子域事件覆盖图 核心域:订单处理 订单已创建 支付已确认 库存已锁定 订单已发货 支撑子域 积分已累计 对账文件已生成 库存已回滚 物流单号已回传 事件类型图例 核心领域事件 外部集成事件 异常补偿事件 定时批处理事件

4.6 工作坊产出物与后续步骤

经过 2-4 小时的工作坊,团队应产出以下关键交付物:

  • 事件时间线: 覆盖核心域与至少 3 个支撑子域的完整事件流。
  • 事件分类矩阵: 按颜色分类的事件清单,标注触发命令与响应动作。
  • 热点/问题列表: 红色便签记录的不确定点或技术债务。
常见陷阱: 避免过早陷入技术细节(如数据库字段设计)。工作坊的目标是发现“发生了什么”,而不是“如何实现”。如果团队开始讨论 API 参数或表结构,引导师应立即拉回时间线。

完成事件识别后,下一阶段将进入聚合与限界上下文的划分。届时,这些带有颜色标记的事件便签将成为确定微服务边界的主要依据。