0

2 つの集計境界が互いに矛盾する複雑なシナリオがあります。

リクエストとミッションの 2 つのエンティティがあります。ユーザーはリクエストを作成し、後でミッションを作成して既存のリクエストをミッションに割り当てることができます。

リクエストとミッションは個別に作成できます。つまり、リクエストを作成するときにミッションを作成する必要はなく、その逆も同様です。

したがって、ここには 2 つの異なる集約があると仮定しています。要求集約とミッション集約であり、各エンティティは独自の集約のルートです。

ただし、この仮定に違反する不変条件があります。ミッションを延期またはキャンセルできます。これにより、それに割り当てられたすべてのリクエストのステータスがそれに応じて更新されます。

Request と Mission が 2 つの異なる Aggregate にある場合、この制約を強制するにはどうすればよいですか? それらを同じ Aggregate に入れると、各エンティティは個別に作成できるため、Aggregate Root が誰であるかを知ることはできません。

何かアドバイス?

モッシュ

4

2 に答える 2

1

私の提案は、イベントパターンを使用することです。1 つの Agreegate の状態が変更されたときは、イベントを公開します。これは、他の集約状態を変更する機能を持つハンドラーで使用できます。それが理にかなっていることを願っています。

于 2010-10-05T00:30:43.077 に答える
1

あなたはすでに正しい軌道に乗っています。あなたが見逃しているのはこれです:集計には他の集計を含めることができます。

含まれているものに対して変更Missionをトリガーしても問題ありません。StatusRequests

于 2010-08-03T12:52:38.437 に答える