繁体   English   中英

聚合之间的 DDD 事件示例

[英]DDD Events Between Aggregates Example

我有两个聚合

项目和价格调整。

价格调整将包含项目调整,即对于特定项目,将其提高 x%(例如 10%)

我的物品有一个需要更新/调整的标价。

因此,在处理价格调整时,它将找到该项目,并需要按特定百分比调整该项目的标价。 调整完成后,需要将调价中的项目调整标记为完成

我的问题是,这种对标价的更新和对项目调整的标记是如何组成事件的?

我更新标价并将项目调整标记为已完成以下事件的正确方法是什么?

这是一个正确的解决方案吗?:

  • 在AdjustListPrice等项目上调用function,并传入要调整的id和百分比等价格调整信息。
  • 然后引发一个事件,例如 ItemListPriceAdjusted 让价格调整监听,以便它可以将调整标记为完成并引发另一个事件,例如 itemPriceadjustmentCompleted

如果这是正确的方法,是否应将新计算的标价添加到 ItemListPriceAdjusted 价格中,还是应仅添加调整百分比,然后在应用/从聚合中读取时计算?

谢谢

编辑:

我目前使用的选项是在处理价格调整时,它将通过每个项目调整 go。

它将找到它所针对的项目并调用 function AdjustPrice(Guid priceAdjustmentId, decimal adjustPercentage)

这将计算该商品的新标价,并且该商品将发出一个 ItemPriceAdjusted 事件,其中包含价格调整 ID、和新标价

然后价格调整将监听这些事件并将相关的项目调整标记为完成,进而发出自己的 ItemAdjustmentCompleted 事件

我们在这里谈论 DDD。 所以我要问的第一个问题是你想用代码反映的业务中发生了什么。

企业不太可能决定对整个品种“调整价格”10%。 这与定价策略有关。 哪个是产品或产品类别的个体。 所以,我会先问业务。

接下来,如果在基础业务中,您有一些专门的人员或部门来处理定价,这将为您提供上下文边界。 最有可能的定价是与库存(列出产品)分开的域。 很可能存在一些基本价格,即产品的主要成本。 然后有一些额外的成本,一些利润将形成利润。 那么,通过“调整”价格——你要达到什么目的? 这是否意味着主要成本发生了变化? 还是保证金改变了? 或者一些营销活动结束了? 弄清楚 - 你会得到你问题的答案。 您将能够从中派生事件名称。

总结一下:存储/解雇/提出/调度与业务相关的事件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM