「集約名」プロパティーの値セットがすべて同じで「タイムアウト」プロパティーの値が異なる複数の AggregateControl ノードを持つファンアウト・フローを設計することが役に立つ場合もあります。
「集約名」を再利用できるのは、この場合だけです。
始める前に:
このタスクを完了するには、以下のタスクを完了している必要があります。
例えば、出張旅行を予約する集約フローを作成した場合、2 日以内に応答が必要な要求がある一方で、2 時間以内に応答が必要な、より緊急性の高い要求もあるかもしれません。
複数の AggregateControl ノードを使用する集約フローを構成するには、以下のようにします。
- 「ブローカー・アプリケーション開発」パースペクティブに切り替えます。
- ファンアウト・メッセージ・フローを作成するか、または開きます。
- 必要な数の AggregateControl ノードを構成します。
基本プロパティー「集約名」を同じ値に設定します。
例えば、2 つのノードを組み込み、両方に「集約名」として JOURNEY という名前を入力します。
- それぞれのノードの「タイムアウト」 プロパティーの値を異なる値に設定します。
例えば、1 つ目のノードの「タイムアウト」を 2 時間に、2 つ目のノードの「タイムアウト」を 2 日間に設定します。
- 着信要求を受信するように Filter ノードを構成し、その内容をチェックし、それらの着信要求を正しい AggregateControl ノードに経路指定します。
- 必要な結果を得るには、ノードを一緒に接続します。 例えば、優先順位フィールドを「緊急」に設定して、要求をテストするように Filter ノードを構成した場合、短いタイムアウトを設定して True ターミナルを AggregateControl ノードに接続します。
より長いタイムアウトで false ターミナルを AggregateControl ノードに接続します。
AggregateControl ノードの out ターミナルをファンアウト・フロー内の以下のノードに接続します。
2 つの AggregateControl ノードを直列にではなく、並列に接続する必要があります。
つまり、両方のノードを Filter ノードに (1 つを true ターミナル、もう 1 つを false ターミナルに)、および両方のノードをファンアウトに対して要求を処理する、ダウンストリーム・ノードに接続する必要があります。
それぞれの入力メッセージは、AggregateControl ノードのうちの 1 つのみを通過しなければなりません。
単一のメッセージが複数の AggregateControl ノードによって処理されるようにノードを接続する場合、重複レコードが AggregateRequest ノードによってデータベース内に作成され、後続の処理結果は予測不能です。
以下の図では、この技法を使用するファンアウト・メッセージ・フローの例が説明されます。
