3. 为订单上下文建立统一语言词汇表
从对话到词汇表:订单上下文统一语言提取
统一语言不是把业务名词抄一遍,而是把同一概念在不同角色口中的多种说法收敛为一个唯一术语,并明确它的定义、所属上下文、同义词与冲突项。下面以一段真实的订单业务对话为输入,演示如何提取术语、消除歧义并产出可共享的词汇表。
输入:一段订单业务对话(教学示例)
销售:客户下单后,我先建个"订单草稿",确认库存再"转正式单"。
运营:我们叫"预订单"和"正式订单",草稿不算数,只有正式单才占用库存。
仓储:我这边看到的是"发货单",一个正式单可能拆成多张发货单。
财务:我关心"应收单",正式单确认后就生成,跟发货单不一定一一对应。
销售:客户改地址时,我改的是"收货信息",但已经发货的不能改。
运营:对,只有"未发货"的正式单才能改地址,改完要重新校验库存。
提取与消歧过程
- 切分候选术语:从对话中圈出所有被反复提及的名词性短语,如"订单草稿/预订单""正式单/正式订单""发货单""应收单""收货信息/收货地址"。
- 判定是否同一概念:若两个说法指向同一业务对象且生命周期一致,则合并为同一术语;若生命周期或归属不同,则拆分为不同术语。
- 标注同义词与冲突:同一概念的多说法记为同义词;同一说法被不同角色赋予不同含义,记为冲突,必须由领域专家裁决。
- 绑定上下文与定义:每个术语标注所属限界上下文、一句话定义、关键状态或约束。
冲突项不能靠"少数服从多数"解决。例如"订单"在销售口中指草稿,在仓储口中指已确认单,必须明确:订单(Order)仅指已确认的正式单,草稿另立术语 订单草稿(OrderDraft)。
订单上下文统一语言词汇表(示例交付物)
| 术语 | 英文名 | 所属上下文 | 定义 | 同义词 | 冲突/备注 |
|---|---|---|---|---|---|
| 订单草稿 | OrderDraft | 订单 | 客户提交但尚未确认库存与价格的临时订单 | 预订单、草稿单 | 不占用库存,可废弃 |
| 订单 | Order | 订单 | 已确认库存与价格、正式生效的订单 | 正式单、正式订单 | 与"草稿"严格区分 |
| 订单行 | OrderLine | 订单 | 订单中一条商品明细,含数量与单价 | 明细行 | — |
| 收货地址 | ShippingAddress | 订单 | 订单指定的收货地点,未发货前可修改 | 收货信息 | 已发货后不可改 |
| 发货单 | Shipment | 仓储 | 一次实际出库的发货记录,可对应多张订单 | 出库单 | 与订单非一一对应 |
| 应收单 | Receivable | 财务 | 订单确认后生成的应收款项记录 | 账单 | 与发货单解耦 |
词汇表使用与维护要点
- 唯一术语优先:代码、文档、接口命名统一使用词汇表中的英文名,禁止在代码里混用同义词。
- 冲突项必须裁决:出现"同一词不同义"时,由领域专家指定唯一含义,其余含义另立术语。
- 随上下文演进:当订单上下文与仓储、财务交互时,若发现新歧义,应回到词汇表补充或修订,而不是在代码里临时起名。
- 可验证:任意两个团队成员对同一术语的理解应一致;若不一致,说明词汇表尚未收敛。
词汇表不是一次性文档。建议在每次需求评审或建模工作坊后,用 10 分钟检查新增术语是否与既有词汇冲突,冲突则当场裁决并更新表格。