domain-driven-design - 事件风暴:领域事件“已请求添加到购物车”是好做法还是坏做法?
问题描述
我对 Event Storming 中的“域事件”(橙色便利贴)有疑问
当我查看一些事件风暴的示例时,我有时会看到如下所示的领域事件:
- “要求取消订单”
- “要求加入购物车”
- “求票”
- “请求创建帐户”
- ...
但是我想知道像这样创建橙色便利贴是否是一种好习惯,因为它会产生一种重复。例如 :
如果我添加这个便利贴:“请求创建帐户”,我还应该有“创建帐户”便利贴。
如果我添加这个便利贴:“已请求添加到购物车”,我还应该有“已添加到购物车”便利贴。
如果我添加这个便利贴: “订单取消请求”,我也应该有“订单取消”便利贴。
...
而且我觉得这是一种不好的做法,因为在我看来,这会使便利贴的数量乘以 2。
如果你觉得这样的橙色便利贴很有趣,你能解释一下为什么吗?如果你认为不是,你能解释一下吗?
谢谢你未来的回答者。
解决方案
显式地建模一些动作是一件好事。因为这样一来,很明显,有一个演员参与其中。因此,在实现的系统中应该有一些接口。
这些绝对是事件,因为我们认为它们是已经发生的事情。但它们在某种意义上与事件非常不同,例如事件溯源(不是风暴)。它们是短暂的,会导致其他事件,我们过去称之为领域事件。那种反映领域状态变化的事件。
对我来说,第一组的事件更像是从事件结果到触发交互的意图的垫脚石。
这对于展开流程非常合乎逻辑和有用。
更改状态:添加到购物车。是什么导致了它?要求添加到购物车。是什么触发了它?客户将商品添加到购物车。
我会在这种短暂的“事件”上花一张卡片吗?如果它带来额外的清晰度 - 那么肯定是的。因为它有助于专家与开发人员的交流。如果这对暴风雨的各方,特别是开发人员来说是显而易见的,那么可能不会......因为它增加了噪音而不增加价值。
推荐阅读
- javascript - 网络蓝牙:如何检查是否使用 javascript 启用了蓝牙?
- c# - 保持集合的位置和改变位置
- python - 这两个numpy数组有什么区别?
- java - java.sql.SQLException:没有为参数 1 指定值
- python - 替换数组中的数据 2D 更简单的解决方案
- flutter - 如何在颤振网络中播放音频文件(.raw)?
- php - IIS 中的应用程序抛出 404 页面,这是根文件夹中的子文件夹
- javascript - 在 Material UI 中哪里可以找到 Select 的所有 MenuProps 属性
- excel - SortFields.Clear 说明
- python - Pandas - 提高应用方法的性能