Domain driven design DDD:关于聚合边界的问题

Domain driven design DDD:关于聚合边界的问题,domain-driven-design,aggregateroot,Domain Driven Design,Aggregateroot,我有一个复杂的场景,两个总的边界有点相互矛盾 我有两个实体:请求和任务。用户创建请求,然后可以创建任务并将现有请求分配给任务 请求和任务可以独立创建。换句话说,创建请求时我不需要任务,反之亦然 因此,我假设这里有两个不同的聚合:请求聚合和任务聚合,每个实体都是自己聚合的根 但是,我们有一个不变量违反了这个假设:您可以推迟或取消任务,这会导致分配给它的所有请求的状态相应地更新 如果请求和任务位于两个不同的聚合中,我如何实施此约束?如果我把它们放在同一个聚合中,就不可能知道谁是聚合根,因为每个实体都

我有一个复杂的场景,两个总的边界有点相互矛盾

我有两个实体:请求和任务。用户创建请求,然后可以创建任务并将现有请求分配给任务

请求和任务可以独立创建。换句话说,创建请求时我不需要任务,反之亦然

因此,我假设这里有两个不同的聚合:请求聚合和任务聚合,每个实体都是自己聚合的根

但是,我们有一个不变量违反了这个假设:您可以推迟或取消任务,这会导致分配给它的所有请求的状态相应地更新

如果请求和任务位于两个不同的聚合中,我如何实施此约束?如果我把它们放在同一个聚合中,就不可能知道谁是聚合根,因为每个实体都可以独立创建

有什么建议吗


莫斯

你已经走上了正确的轨道。您缺少的部分是:聚合可以包含其他聚合


您的
任务
可以触发它包含的任何
请求
状态
更改。

我的建议是使用事件模式。当一个Agreegate的状态为changes publish事件时。这可以在处理程序中使用,该处理程序将能够更改其他聚合状态。希望它有意义