1

我有以下情况:

您需要在它成为商店并获得所有者帐户之前创建一个请求。

所以有一天你注册了一个请求。经理审核并批准您的请求后 2 天,这意味着系统必须创建商店和所有者帐户。

在我的模型中,我认为请求、商店和所有者帐户是 3 个聚合根,但后来我读到我不能在一个事务中更新多个聚合,因为它们可能是(事实上它们是,因为所有者帐户位于外部身份验证服务)在单独的数据库服务器中。

问题是..我仍然有一个请求,当它获得批准时,我需要创建 2 个聚合根,即商店(具有所有商店属性,我只有一些数据不变量,例如联系电子邮件或电话的限制) 和所有者帐户。

然后可以允许一个所有者帐户编辑其他人的商店(如协作者)

我怎么能建模呢?

谢谢!

4

1 回答 1

3

根据您的要求,我的设计将是:

两个有界上下文:

  • Shopping:它有两个聚合( Request 和 Shop )。

  • 身份验证:一个聚合( OwnerAcount )。

存在最终一致性:

(1) 请求聚合将有一个“批准”方法。此方法创建 RequestAproved 事件。

(2) Shopping BC 发布 RequestAproved 事件。

(3) 认证 BC 是该事件的订阅者。它对创建 OwnerAcount 聚合的事件做出反应。

(4) OwnerAcount聚合的构造方法创建OwnerAcountCreated事件。

(5) Auth BC 发布 OwnerAcountCreated 事件。

(6) Shopping BC 是本次活动的订阅者。它对创建 Shop 聚合的事件做出反应。

创建 Shop 聚合的事务与创建 Request 聚合的事务不同。

这是一个图表:

(注意:每种事件类型都有一个消息队列。另一种选择是所有事件类型只有一个队列)

在此处输入图像描述

于 2021-05-13T05:27:01.107 回答