【问题标题】:DDD: Question about Aggregate boundariesDDD:关于聚合边界的问题
【发布时间】:2010-08-03 02:12:08
【问题描述】:

我有一个复杂的场景,其中两个聚合边界相互矛盾。

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

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

所以我假设我们在这里有 2 个不同的聚合:请求聚合和任务聚合,每个实体都是其自己聚合的根。

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

如果 Request 和 Mission 位于两个不同的聚合中,我该如何强制执行此约束?如果我将它们放在同一个聚合中,则无法分辨谁是聚合根,因为每个实体都可以独立创建。

有什么建议吗?

莫什

【问题讨论】:

    标签: domain-driven-design aggregateroot


    【解决方案1】:

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

    您的Mission 可以触发其包含的任何Requests 上的Status 更改。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2021-05-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-22
        • 1970-01-01
        相关资源
        最近更新 更多