2つの集約ルートと1つの通常のエンティティの単純な例のドメインがあります。
Tenant
、UserGroup
およびUser
この特定のサンプルのどこで、2つのAggregateRootsTenant
を補います。User
UI /サービスレイヤーからコマンドを受信すると、書き込み専用ドメインを操作するコマンドハンドラーに到達します。
これはAggregateRootUser
であるとはまったく考えられていませんが、他のユーザーから参照されるため、通常のエンティティにすることはできません。(はい?)
これらの2つのAggregateRootsは通信する必要があります。の制限付きコンテキスト内のエンティティである、にUser
属さずにAを作成することはできません。おそらく、単純な制約であるため、コンストラクターを介してユーザーを作成できます。UserGroup
Tenant
User.Create(TenantId, UserGroupId)
DomainEvent
(ユーザーの)with Date、AggregateVersion、およびAggregateIdを生成します。次に、ぼやけた部分に行きます。
このイベントをストアにコミットすると、このイベントはバス(メモリなど)にブロードキャストされます。これは、コマンドハンドラーと同様に、ドメインのイベントハンドラーが作成されたユーザーをキャッチし、通知/操作してTenant
?UserGroup
を追加するポイントUserId
です。
これを解決することについての私の考えは完全に間違った方向に進んでいますか?