0

我正在努力理解如何为我的问题建模:

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

刚才,我有 3 个限界上下文 - 公司、团队和报告。我相信我应该将 Team 移入 Company 以强制执行我的唯一名称不变 - 但是,据我了解:

“聚合边界之外的任何东西都不能包含对内部任何东西的引用,除了根实体”。

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

我认为团队可能作为它自己的 BC 存在,也可能存在于公司 BC 中。团队的创建只能在 BC 公司内部作为一个实体进行。在这里,可以确保该团队名称的命名和不变实施。然后,团队 BC 将仍然存在,并且报告仍然可以保留对来自报告 AR 的 TeamId 的引用。但是,这将导致 TeamId 和 TeamName 重复 - 在 Company BC 和 Team BC 内。

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

如果我有 3 个 BC 应该是 2 个 BC,或者在公司 BC 中缺少团队实体概念,我会感到困惑。

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

咕噜,救命!

4

1 回答 1

0

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

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

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

于 2015-03-16T18:03:07.613 回答