UI から送信されたコマンドへの応答として、管理者のリストに電子メールを送信する必要があります。通知が必要な管理者は、読み取りモデルに対するクエリから取得されます。
現時点では、私の理解では、オプションは 1 つしかありません。コマンドを送信する前に必要な管理者を集めて、それら (名前/電子メールのペア) をコマンドに追加することです。
または、コマンド ハンドラーから読み取りモデルにクロスすることは許容されますか? 気分が悪いですが、これを行う他の方法は本当にありませんか?
UI から送信されたコマンドへの応答として、管理者のリストに電子メールを送信する必要があります。通知が必要な管理者は、読み取りモデルに対するクエリから取得されます。
現時点では、私の理解では、オプションは 1 つしかありません。コマンドを送信する前に必要な管理者を集めて、それら (名前/電子メールのペア) をコマンドに追加することです。
または、コマンド ハンドラーから読み取りモデルにクロスすることは許容されますか? 気分が悪いですが、これを行う他の方法は本当にありませんか?
ドメインは一時的なものであり、読み取りモデルではないため、ドメインから読み取りモデルにアクセスすることはできません。あなたはコマンドの時に取られた電子メールのリストを持っている必要があります:)
管理者の電子メールのリストをメールでトリガーするコマンドに含めるか、イベントとして永続化するか、ドメインエンティティに、リストの管理者の電子メールを取得する他のドメインエンティティをインスタンス化させることができます。
この助けを願っています。
コマンドがイベントをスローしていると仮定します...
私にとってこれを実行する正しい方法は、コマンドのイベントをキャプチャして電子メールの送信をトリガーする別のイベントハンドラーを用意することです。イベントハンドラーは、既存の読み取りモデルに管理者のリストを照会します。
コマンドハンドラーは、管理者に電子メールを送信する必要があることを認識する必要がないため、物事をシンプルに保ちます。
これには、管理者が作成/削除したイベントを処理し、電子メールを送信する管理者のリストを保持するためだけに特定の読み取りモデルに保存する、このための別個のシステムを概念的に持つこともできます。
コマンド側をどのように実装したかについては何も言いません。通常、この情報はコマンド ハンドラーで使用できます。次に、コマンドに追加された ID に基づいて、電子メールと名前のデータソースをクエリします。これを行うためにドメイン モデルを使用する必要はありません。コマンド側で利用可能なデータがない場合、サービスを介して読み取り側からデータを収集することに大きな問題はないと思います。ドメインモデルからこれを行うことはありません。