DDD:关于聚合边界的问题
Posted
技术标签:
【中文标题】DDD:关于聚合边界的问题【英文标题】:DDD: Question about Aggregate boundaries 【发布时间】:2010-08-03 02:12:08 【问题描述】:我有一个复杂的场景,其中两个聚合边界相互矛盾。
我有 2 个实体:请求和任务。用户创建请求,然后他可以创建任务并将现有请求分配给任务。
请求和任务可以独立创建。换句话说,我在创建请求时不需要任务,反之亦然。
所以我假设我们在这里有 2 个不同的聚合:请求聚合和任务聚合,每个实体都是其自己聚合的根。
但是,我们有一个不变量违反了这个假设:您可以推迟或取消任务,这会导致分配给它的所有请求的状态都会相应更新。
如果 Request 和 Mission 位于两个不同的聚合中,我该如何强制执行此约束?如果我将它们放在同一个聚合中,则无法分辨谁是聚合根,因为每个实体都可以独立创建。
有什么建议吗?
莫什
【问题讨论】:
【参考方案1】:您已经走在正确的轨道上。您缺少的部分是:聚合可以包含其他聚合。
您的Mission
可以触发其包含的任何Requests
上的Status
更改。
【讨论】:
【参考方案2】:我的建议是使用事件模式。当一个 Agreegate 的状态是更改发布事件时。这可以在处理程序中使用,该处理程序将能够更改其他聚合状态。希望有道理。
【讨论】:
以上是关于DDD:关于聚合边界的问题的主要内容,如果未能解决你的问题,请参考以下文章