DDD:存储来自不同有界上下文的非聚合根实体的引用

时间:2015-03-16 17:33:42

标签: domain-driven-design domain-model aggregateroot bounded-contexts

我很难理解如何为我的问题建模:

  • 公司可以有很多团队。
  • 每个团队必须拥有每个公司的唯一名称。
  • 特定团队的报告必须是可检索的,以及公司所有报告的列表。

刚才,我有3个有界的背景 - 公司,团队和报告。我相信我应该在公司内部移动Team来强制执行我的唯一名称不变 - 但是,据我所知:

  

"聚合边界之外的任何内容都不能包含引用   里面的任何东西,除了根实体"。

如果我只能从报告AR中引用AR,我就无法存储我的报告所属的团队 - 只是公司。

我认为团队可以作为其自己的BC以及BC公司内部存在。那么,团队的创建只会在BC公司内部作为实体进行。在这里,可以确保该团队名称的命名和不变执行。然后BC团队仍然存在,报告仍然可以从报告AR中引用TeamId。 但是,这会导致TeamId和TeamName重复 - 无论是在公司BC还是BC团队中。

这种方法听起来不错,还是我错过了什么?

如果我有3个不列颠哥伦比亚省的BC,或者在BC公司内缺少团队实体概念,我感到很困惑。

也许我混淆有界上下文我只有/需要聚合根 - 我不确定!

Gulp,求救!

1 个答案:

答案 0 :(得分:0)

在您的示例中,公司和团队不能是有界上下文,它是实体(公司或团队可以是聚合根,它取决于任务),公司有名称标识,团队有公司名称+团队名称。

有界上下文是一组有凝聚力的模型,应该反映所选子域的含义。团队和公司可以组成一个BC,报告是另一个背景。

如果在您的示例中,报告只是汇总了一些信息以便于用户显示,那么此报告有界上下文不包含任何聚合根,因为没有业务逻辑和规则。在报告中,您应该使用简单的DTO来显示数据。