私が見たすべての CQRS の例で、ドメイン イベントは読み取りモデルの更新をトリガーしますが、それ以外は何もしません。しかし、ドメイン イベントがドメイン内の他の変更を引き起こしたい場合はどうでしょうか?
たとえば、次の要件があるとします。
- 「口座を解約する」ボタンがクリックされた場合、口座を解約する
- 口座の支払いが完了したら、口座を閉鎖します
- アカウントが閉鎖されたら、アカウント所有者を「特別」としてマークします
これを処理する最良の方法は何ですか?
- Account.Close() で AccountClosed イベントを作成し、所有者を「特別」としてマークします。
- 所有者を「特別」としてマークする AccountClosed ハンドラーを作成する
- MarkOwnerAsSpecial コマンドを送信する AccountClosed ハンドラーを作成する
- アカウントを閉じるコマンド ハンドラーも、アカウント所有者を「特別」としてマークするようにします。