1

私は現在、最初の物語を書いていますが、読み取りモデルに少し戸惑っています。例を挙げて説明しましょう:

私には、プログラミング請負業者制御という3つの境界のあるコンテキストがあります。それぞれに固有の読み取りモデルがあります。

worflow:

  • プログラミングはイベント「JobScheduled」を送信します
  • 佐賀はこのイベントを受け取り、請負業者に「作業をスケジュールする」ように指示します。
  • 完了したら、請負業者はイベント「JobDone」を送信します。
  • 佐賀はこのイベントを受け取り、コントロールに「コントロール期間の開始」を指示します。

ここではすべてがうまくいくことがわかります。私たちは書き込み側にいるので、プロセスを進めるための重要な情報を渡します。

私の質問には不要な情報が含まれています。イベント「JobScheduled」にメモフィールド「テストノート」があり、このジョブが実行される前に、このフィールドが「テストノート重要」に変更されたとします。この変更は、説明されているワークフローにとって重要ではありませんが、請負業者が制限されたコンテキストの読み取りモデルを見るときに、請負業者が現場で変更を確認できることが重要です。

佐賀にイベントNoteChangedを与えて処理するのですか、それとも請負業者の境界のコンテキストでこのイベントを直接リッスンするプロジェクションを作成する必要がありますか?

ここではreadmodelを更新しているだけなので、サガに渡すのは不要な作業のように見えます。変更に関係するドメインはありません。

一方、2つの境界のあるコンテキストを直接結合すると、ワークフロー内で境界のあるコンテキストが相互に持つ相互作用を変更できる可能性のあるsagasのアセットの1つが削除されます。

読んでくれてありがとう、

4

2 に答える 2

0

メモを変更することが重要な場合は、明示的にモデル化する必要があります。これは、すでに行ったようにイベントを導入することで実現できます。

上記のイベントがプロセスに関連している場合は、佐賀が処理できます。異なる読み取りモデルでのみ表現する必要がある場合は、それぞれの投影で処理するだけで問題ありません。

あるコンテキストは、アプリケーションの境界を越えても、別のコンテキストのイベントを非常によくリッスンして処理する場合があります。少なくともこれは、イベント中心のアーキテクチャでクロスコンテキスト統合がどのように機能するかです。

于 2012-05-29T07:11:03.327 に答える
0

個人的には、「変更メモ」というコマンドを送信します。これは、集計のイベント ストリームに保存する必要がある情報のように見えるからです。あなたのサガがこのコマンドについて誰にも伝えたくない、または読み取りモデルを静かに更新するハンドラーに情報を提供するだけの場合よりも、問題ないと思います。

于 2012-05-29T05:41:51.217 に答える