このセクションでは、ソリューションがパターン図を BizTalk Server 成果物に変換する方法について説明します。
接続と完全性の条件
パターンを BizTalk Server コンポーネントに変換することで、あらゆる場所から始めることができます。 ただし、コンポーネント間の接続は、実際にはコンポーネントのインフラストラクチャであるため、開始するのに適した場所と思われます。 また、アグリゲーター パターンの場合は、必要なすべての情報が含まれているとどう伝わるかを考える必要があります。 これは、他のコンポーネントへの接続とその設計の両方に影響します。
このソリューションでは、便利で一貫した使用方法を提供する必要があります。 サービス インターフェイスは、他のアプリケーションで使用できる方法を指定します。 このソリューションは、IBM WebSphere MQ を使用してレガシ・アプリケーションと通信する必要があるため、WebSphere MQ はサービス・インターフェースの一部である必要があります。 ただし、新しいアプリケーションの場合、Web サービス インターフェイスは明白な選択肢のようです。 Web サービス インターフェイスは、サービスを使用する他のアプリケーションに最大限の柔軟性を提供します。 ここでは、BizTalk Server の柔軟性を使用して、デュアル サービス インターフェイスを使用できます。 オーケストレーションを Web サービスとして公開する方法については、「オーケストレーションを Web サービスにマップする方法」を参照してください。
その他の接続は、サービス インターフェイスと受信者リストの間、受信者リストとバックエンド アプリケーションの間、およびバックエンド アプリケーション、アグリゲーター、およびサービス インターフェイス間の接続です。
受信者リストへの接続が同期している場合、ソリューションでは、受信者リストへのすべてのメッセージが送受信されるように相関関係を使用する必要はありません。 バックエンド アプリケーションとアグリゲーター間の接続は、同じ理由で同期できます。 アグリゲーターは、クエリ応答を完了するために、バックエンド アプリケーションの 3 つすべての応答を必要とします。 同期接続が適切であり、ソリューションが簡略化されるように、応答時間は短くする必要があります。
アグリゲーター パターンでは、通常、完全性条件があります。 複数のバックエンド サーバーがあり、応答時間が遅い場合は、たとえば、特定の期間内に少なくとも 1 つの応答を受信するなど、完全性の条件が考えられます。 このサービス指向ソリューションでは、最終的なメッセージを構築するために、3 つの応答がすべて必要です。 したがって、ここでは、完全性条件は、3つの応答すべてを受け取っています。
注
WebSphere MQ を介して要求を受信する場合、ソリューションは、応答メッセージのMQMD_CorrelIdにMQMD_MsgId値をコピーすることによって相関 ID を追加します。 これは、競合状態の可能性を回避するために、要求/応答で MQSeries アダプターを使用する標準的な方法の一部です。 詳細については、「 Request-Reply を使用したメッセージの関連付け」を参照してください。
オーケストレーション境界の決定
このソリューションでは、Web サービス・インターフェースを介してだけでなく、WebSphere MQ キューからの要求も許可する必要があります。 サービス・インターフェースを一つのオーケストレーションに組み込むことで、IBM WebSphere MQ入力を別のオーケストレーションに分け、処理の大部分を三番目に配置することで、外部通信を処理から分離します。
コンポーネントをオーケストレーション図形に変換する
図形に変換するパターンは、最終的なソリューションでは、1 つのオーケストレーションになります。 メッセージ ボックス サブスクリプションの作成など、BizTalk Server でコンテンツ ベースのルーターを作成する方法は多数あります。 ソリューションでは、ルーティングで MessageBox サブスクリプションが使用されます。 式の図形は、メッセージに必須フィールドの値が含まれているかどうかを評価します。 決定図形は、式図形に設定された変数を評価し、オーケストレーションを通じてパスを選択します。
CustomerService オーケストレーションは、並列図形を使用してバックエンド アプリケーションにメッセージを送信し、同時に応答を受信します。 次の要求を行う前に、1 つのアプリケーションが完了するのを待つ必要はありません。 アプリケーションの数が頻繁に変更される場合、またはアプリケーションへの接続が信頼性が低い場合は、オーケストレーションでパターンを異なる方法で変換する必要があります。
ソリューションでは、アグリゲーターは 3 つの応答メッセージの要素を結合する必要があります。 並列図形を使用すると、バックエンド システムとの通信が並列になります。 また、図形はすべての応答またはタイムアウトを受け取るまで終了しないため、アグリゲーターは続行できるタイミングを常に認識します。 オーケストレーションでは、3 つのバックエンド応答メッセージと元の要求メッセージの要素を応答メッセージ内の要素にマップする変換図形を使用します。
注
バックエンド システムとの通信もタイムアウトになる場合があります。タイムアウト期間は、 受信 図形をスコープ図形に囲み、 スコープ の Timeout プロパティを設定することで設定できます。
オーケストレーション図形の完全な一覧については、「 オーケストレーション図形」を参照してください。