知识卡片

不要把流程图与事件的因果关系混为一谈

普通读书笔记卡 · 1980.l

内容

有实践者把查询操作也纳入事件风暴,认为用户执行查询获得读模型后触发决策命令。作者认为不妥:这是把流程图与事件的因果关系混为一谈。流程图反映现实世界的问题空间,事件风暴获得领域模型是解空间内容,分属DDD两个阶段。买家查询购物车再创建订单是操作流程,但从因果关系看并非「查询购物车触发创建订单」,而是用户查询获得读模型后再度发起创建订单命令、触发事件。查询与创建是两个不同、无时序连续性的独立业务服务;查询不改变状态故不触发事件、不导致命令。因此事件风暴建模过程没有查询操作的位置,查询结果以读模型形式出现。发散:区分「用户操作顺序」与「状态变更的因果」,能避免把 UI 流程误当成领域模型。

参考来源

- 位置:《解构领域驱动设计》附录B B.1.3(源文件:_epub-src/OEBPS/035.xhtml) - 结论依据:原文批评将查询纳入事件因果,指出流程图属问题空间、事件模型属解空间。 - 原始内容:它将流程图与事件的因果关系混为一谈了……查询操作不会改变目标对象的状态,因而不会触发事件……事件风暴驱动的建模过程没有查询操作的位置。