現在、集約ルートごとに 1 つのイベント ストリームと 2 つの集約ルートがRoom
ありRoomType
ます。
の動作は、それがRoom
何であるかによって異なりRoomType
ます。両方の集計を分離するために、TheRoomType
は集計で roomTypeId として表されRoom
ます。の変更はRoomType
、イベントによって表されRoomTypeChanged
ます。
はRoomTypes
個別に管理でき、別のアグリゲートにある必要があります。
ここで、次の使用例を検討してください。
ユーザーが を無効にするRoomType
と、すべてRooms
がRoomtype
フォールバックに切り替わるはずRoomType
です。
私はいくつかのアプローチを考えましたが、それらはすべて問題があるようです:
イベント リスナーに -event をリッスンさせ、それを持つすべての-aggregates
RoomTypeInvalidated
に を送信します。どうすればこれを行うことができますか?私のreadmodelにアクセスしない限り、どの集計がそれを持っているかを知る方法はありません。これは間違っているようです。すべての集約をロードする場合でも、(geteventstore を使用して) すべてのストリームのサブセットをロードできないため、そのタイプの集約のみをロードする方法はありません。SwitchToFallbackRoomType
Room
Roomtype
Roomtype
RoomTypeChanged
-events を集計に再適用するときは、単に適用するのではなく、まだ存在するRoom
かどうかを確認しますが、どれが存在するかを確認するにはどうすればよいでしょうか(1 と同じ状況になりますが、逆になります)。 ? また、イベントの再適用にロジックを入れるのは間違っているようです。それらは状態の変化を表すだけでよいと思います。RoomType
RoomTypes
これをどのように解決しますか?