如何在不同的有界上下文中创建两个聚合?

时间:2018-02-02 00:56:03

标签: domain-driven-design bounded-contexts dddd

关于整合有界上下文的问题。 例如。我在organization AR中有indentity BCcourier service AR中的logistics BC必须连接。

organization AR包含:

  • OrganizationId
  • 名称
  • TaxCode
  • LegalAddress
  • ...

courier service AR包含:

  • CourierServiceId
  • 名称
  • TransportationPriority
  • 评分
  • ...

客户在一个请求中发送所有这些信息(Name,TaxCode,LegalAddress,TransportationPriority,Rating)。

问题:

  1. 我应该在哪个应用程序中提交创建两个AR的请求?
  2. 我应该如何创建两个AR?在我在第一个BC创建第一个AR之后,我应该如何从第二个BC创建第二个AR?
  3. 我遇到的问题:

    首先,我想在创建organization AR时发布域事件,以通知logistics BC并创建courier service AR当我在第一个BC中发布域事件时,我必须使用语言概念TransportationPriority, Rating(需要在第二个BC中创建AR)。但这种语言概念不属于第一个BC。但是它们被用在了它里面。我知道这是错误的。

    那么如何解决我的问题?对不起,我的英语不好。非常感谢。

1 个答案:

答案 0 :(得分:1)

为什么"他们必须连接"?根据我的理解,你可以拥有一个带有多个CourServAR的OrgAR。在这里,可以做的是:

  • 用户登陆他放置此信息的页面(您写道所有数据汇集在一起​​,因此应该使用表格或类似的东西)
  • 他很快就在那里,我给了他几张身份证(在Udi Dahan的一个帖子里,我现在都找不到了)
  • 使用您用于OrganizationId和CourierServiceId的ID,您可以将这两个命令发送到不同的域,而不必使用共享他们不知道/不必使用的数据的事件
    • 当然可能是存储一个AR出错了,所以你需要一种方法来验证数据的完整性(通过工作或类似的东西 - 然后你就可以通知用户在出现问题时过程)

要获取ID,可能需要编写两个服务,为OrgAR和CourServAR提供下一个有用的ID。

无论如何,两个AR绑在一起的事实,你必须将它们存储在一起,在我的大脑中发出警报。

事实上,我要做的是:

  • 确定用户必须真正存储的内容(OrgAR或CourServAR?例如,我采用OrgAR)
  • 使用此方法,创建一个用于存储OrgAR的表单
  • 然后,给他机会存储CourServAR
    • 第二个AR已经链接到第一个(因为我的ID),我现在需要的是一个命令(在OrgBC中),它表示" assignCourServtoOrg"只是绑定OrgAR中的两个ID