一个有界上下文中的复杂聚合是否应该在另一个有界上下文中聚合?

Should a complex aggregate in one bounded context be aggregate in another bounded context?

有两个限界上下文 Context1 和 Statistics。

Context1 包含具有复杂结构的 SomeEntity SomeEntity 1---* EntitiesLevel1 1---* EntitiesLevel2

统计上下文中需要 SomeEntity、EntitiesLevel1 和 EntitiesLevel2 的简单版本(没有某些字段),因为它们用于构建此上下文中的某些图形。

当 Context1 中的实体 EntitiesLevel1 或 EntitiesLevel2(通过 SomeEntity)发生更改时,事件将发送到 Statistics 上下文。

我应该通过 SomeEntity 更新 Statistics 上下文中的 EntitiesLevel1 和 EntitiesLevel2(换句话说,在 Statistics 上下文中实现与 Context1 中几乎相同的聚合,但没有一些字段)或 SomeEntity,EntitiesLevel1 和 EntitiesLevel2 应该被视为只是值对象哪些可以在不使用聚合模式的情况下单独更新?

我不确定,因为从一方面来看,SomeEntity、EntitiesLevel1 和 EntitiesLevel2 仍然在统计上下文中保留它们的层次结构,因此它们只能以聚合模式定义的方式更新,但从另一方面来看,这些实体。*在 Statistics context 中仅用于图形并且 Statistics context 无法更改它们(仅来自 Context1 的事件处理程序)

聚合 保护事务边界,确保不变量永远不会被破坏,并在代码中表示域概念。 None 其中在您的统计上下文中似乎是必要的或有意义的。

因此,无论您是复制 Statistics 上下文中的结构还是将其替换为其他内容,您都应该在心理上断开(并积极避免)将 Context1 中的聚合与 Statistics 上下文联系起来。 术语“聚合”、“值对象”和“事件”在您的统计上下文中没有意义。

您计划在 Statistics 上下文中构建的 read-only 数据结构只是 - read-only 模型 可以具有任何格式但构建只有一个目标 - 以帮助以后以特定方式查询。您可以自由使用任何格式或结构,以便更轻松地满足统计上下文中的要求。