name: 领域故事讲述 描述: 通过图示化故事进行协作领域建模。在收集需求、理解业务流程、新成员入职或准备事件风暴时使用。遵循Stefan Hofer & Henning Schwentner的方法论,包含参与者、工作对象和活动。 参数提示: <旅程名称> [–type 现状|未来] [–dir <路径>] 允许工具: 读取、写入、全局搜索、查找、技能、任务、向用户提问
领域故事讲述技能
概述
领域故事讲述是一种通过图示化故事捕捉业务流程的协作建模技术。本技能指导AI辅助的领域故事讲述会话,可用于事件风暴和有界上下文发现。
关键原则: 故事从领域专家的角度讲述,使用他们的语言和理解。
何时使用此技能
关键词: 领域故事讲述、图示化、参与者、工作对象、活动、现状、未来、业务流程、领域建模、故事收集、有界上下文发现、需求收集
在以下情况下使用此技能:
- 从领域专家收集需求
- 理解现有业务流程(现状)
- 设计未来状态流程(未来)
- 新成员入职到领域
- 准备事件风暴会话
- 识别有界上下文候选
- 构建统一语言词汇表
故事类型
现状故事
记录当前的工作方式:
- 当前状态流程
- 现有痛点
- 变通方法和例外情况
- 真实行为(非理想化)
何时使用: 理解当前状态、识别问题、变更前基线。
未来故事
记录应该如何工作:
- 期望的未来状态
- 改进流程
- 新能力
- 理想化流程(但可实现)
何时使用: 需求收集、设计解决方案、沟通愿景。
图示化语言
领域故事讲述使用简单的图示化元素:
| 元素 | 符号 | 描述 |
|---|---|---|
| 参与者 | 🧑(简笔画人物) | 执行活动的人或系统 |
| 工作对象 | 📄(文档) | 交换的数据、文档或物理物品 |
| 活动 | ➡️(带动词的箭头) | 参与者执行的动作 |
| 序列 | ① ② ③ | 活动的编号顺序 |
| 注释 | 💬(笔记) | 额外上下文或解释 |
详细符号指南: 参见references/pictographic-notation.md
AI辅助故事收集协议
阶段1:故事收集
目标: 用用户自己的语言收集叙述。
提示:
- “告诉我一个典型的[流程]从头到尾的过程”
- “当[触发事件]发生时,发生了什么”
- “谁参与,他们做什么?”
捕获:
- 谁做什么(参与者和活动)
- 他们用什么(工作对象)
- 以什么顺序(序列)
- 任何变化或例外
阶段2:故事细化
目标: 探索边界情况和变化。
提示:
- “如果[X]失败或不可用,会发生什么?”
- “有任何特殊情况或例外吗?”
- “最常见的路径与罕见路径是什么?”
- “关于这个过程,什么让你感到沮丧?”
捕获:
- 替代流程
- 错误处理
- 痛点
- 隐含知识
阶段3:参与者识别
目标: 映射故事中的所有参与者。
提示:
- “还有谁参与了我们没提到的?”
- “有任何系统或外部方吗?”
- “谁批准、审查或审计?”
捕获:
- 人类参与者(按角色,非名称)
- 系统参与者(内部和外部)
- 参与者职责
阶段4:工作对象编目
目标: 识别所有交换的数据和文档。
提示:
- “参与者之间传递什么信息?”
- “使用什么文档或表格?”
- “创建、更新或引用什么数据?”
捕获:
- 文档和表格
- 数据实体
- 物理物品(如适用)
- 工作对象生命周期
阶段5:边界发现
目标: 找到有界上下文候选。
分析:
- 术语在哪里变化?
- 哪些参与者紧密合作?
- 哪些工作对象属于一起?
- 自然交接点在哪里?
输出: 用于事件风暴的潜在有界上下文候选。
详细边界发现: 参见references/boundary-discovery.md
故事输出格式
文本表示
# 领域故事: [故事名称]
**类型:** 现状 | 未来
**领域:** [领域名称]
**日期:** YYYY-MM-DD
## 叙述摘要
[2-3句平实语言摘要]
## 故事序列
① **客户**向**销售代表**提交**订单表格**
② **销售代表**使用**产品目录**验证**订单表格**
③ **销售代表**在**订单系统**中创建**订单**
④ **订单系统**用**拣货单**通知**仓库**
⑤ **仓库员工**使用**拣货单**拣货
...
## 参与者
| 参与者 | 类型 | 职责 |
| --- | --- | --- |
| 客户 | 人类(外部) | 发起订单 |
| 销售代表 | 人类(内部) | 验证并输入订单 |
| 订单系统 | 系统(内部) | 订单管理 |
| 仓库 | 系统(内部) | 库存和履行 |
## 工作对象
| 工作对象 | 类型 | 使用者 | 描述 |
| --- | --- | --- | --- |
| 订单表格 | 文档 | 客户、销售代表 | 客户订单请求 |
| 产品目录 | 参考 | 销售代表 | 可用产品 |
| 订单 | 数据 | 订单系统 | 已验证订单记录 |
| 拣货单 | 文档 | 仓库员工 | 要拣的货物 |
## 注释
- [注1]: 缺货项异常处理
- [注2]: 旺季需要额外员工
Mermaid 图表(可选)
sequenceDiagram
participant C as 客户
participant SR as 销售代表
participant OS as 订单系统
participant W as 仓库
C->>SR: ① 提交订单表格
SR->>SR: ② 使用产品目录验证
SR->>OS: ③ 创建订单
OS->>W: ④ 用拣货单通知
W->>W: ⑤ 拣货
故事模板: 参见references/story-templates.md
与事件风暴的集成
领域故事自然融入事件风暴:
| 故事元素 | 事件风暴元素 |
|---|---|
| 活动 | 命令或事件 |
| 参与者 | 参与者(黄色便签) |
| 工作对象 | 聚合或读取模型 |
| 序列 | 时间线排序 |
| 边界 | 有界上下文候选 |
工作流程:
领域故事讲述(理解“发生了什么”)
↓
事件风暴(设计“如何发生”)
↓
有界上下文 → 模块化架构
继续事件风暴: 调用enterprise-architecture:event-storming技能,并将收集的故事作为输入。
促进模式
交互模式(推荐)
技能引导与用户的交互对话:
- 提问开放式问题
- 捕获响应作为故事元素
- 反馈以验证
- 迭代直到故事完整
快速模式
从用户提供的叙述快速捕获故事:
- 用户提供完整叙述
- 技能提取参与者、工作对象、活动
- 技能结构化到故事格式
- 用户验证和细化
文档模式
从现有文档提取故事:
- 读取现有流程文档
- 提取故事元素
- 结构化到故事格式
- 与用户验证
词汇表构建
收集故事时,构建领域词汇表:
| 术语 | 定义 | 上下文 | 别名 |
|---|---|---|---|
| 订单 | 客户对产品的已验证请求 | 销售 | 采购订单、PO |
| 拣货单 | 从仓库检索货物的列表 | 仓库 | 拣货票 |
词汇表目的:
- 建立统一语言
- 识别术语冲突(同一词,不同含义)
- 记录领域知识
- 支持有界上下文发现
最佳实践
做
- 使用领域专家的语言,而非技术术语
- 以适当的粒度捕获故事(不过于详细)
- 包括例外和变化
- 按顺序编号活动
- 记录注释以隐含知识
- 随进展构建词汇表
不做
- 强加技术术语
- 跳过边界情况和例外
- 未经询问即假设理解
- 在同一故事中混合现状和未来
- 忘记与领域专家验证
参考文献
references/pictographic-notation.md- 带示例的详细符号指南references/story-templates.md- YAML标题、输出格式references/boundary-discovery.md- 从故事发现有界上下文
相关技能
事件风暴- 理解“发生了什么”后设计“如何发生”模块化架构- 实现从故事发现的有界上下文ADR管理- 记录故事讲述中发现的重要决策
最后更新: 2025-12-22
用户界面
当用户直接调用时,此技能创建领域故事。
执行工作流程
- 解析参数 - 提取旅程名称和类型(现状或未来)。如果未提供名称,询问用户要捕获的业务流程。默认类型是
现状。 - 启动故事促进者 - 启动
story-facilitator代理指导交互会话:- 收集故事(参与者、工作对象、活动、序列)
- 细化边界情况和变化
- 识别参与者(人类角色和系统)
- 编目工作对象(文档、数据、物理物品)
- 用编号活动和Mermaid序列图结构化
- 发现边界 - 从术语变化、参与者分组和自然交接点识别有界上下文候选。
- 保存结果 - 保存到
docs/domain-stories/[旅程名称]-[类型]-[日期].md(或自定义--dir)。 - 建议后续 - 推荐未来故事、相关流程、事件风暴用于领域模型设计。
版本历史
- v1.0.0 (2025-12-26): 初始发布