動的なトランスフォーメーションとルーティングのサンプル
このサンプルでは、ステートレス メッセージのルーティングとトランスフォーメーションに関する一般的な問題に対処する方法を示します。
注意 : このサンプルは dev2dev で提供されていますが、BEA のサポート対象外です。
サンプルの動作
このサンプルでは、メッセージを JMS キューで受信し、メッセージのペイロードまたはヘッダ内に特定の値があるかどうかを調べ、メッセージを変換し、2 つの JMS 送り先のいずれかに送信します。 このトランスフォーメーションは動的に選択されるため、アプリケーションには記述されていません。トランスフォーメーションは、実行時にコンフィグレーションできます。
このサンプルでは、動的トランスフォーメーション コントロールを使用して XQuery マップを動的に取得し、受信ドキュメントを地域固有のスキーマに変換します。 このビジネス プロセスは入力キューをリスンし、メッセージを outputQ1 および outputQ2 に動的にルーティングします。
サンプルの動作のしくみ
このサンプルのアーキテクチャには、次の図に示すコンポーネントが含まれています。
JPD/Java クライアント — JMS メッセージをルーティング変数と共に送信する。 このサンプルでは "From" および "To"。
ルーティング処理アプリケーション — ステートレス ルーティングおよびトランスフォーメーションの使用例の実装である WLW アプリケーション。
XML メタデータ キャッシュ — 適用する "From" フィールドとトランスフォーメーションの間のマッピングが含まれる。 ルーティング処理アプリケーションによるルックアップとして使用される。
XQ リポジトリ アプリケーション — ユーザが XQ マッパーを使用して作成した XQuery 定義を含む WLW アプリケーション。
このサンプルには、次の 2 つの WebLogic Integration アプリケーションが含まれています。
XQ リポジトリ — XQuery およびトランスフォーメーション コントロールを含む XQuery リポジトリ アプリケーション。
ルーティング処理 — 1 つの同期ビジネス プロセスと関連する主要アイテム (JMS イベント ジェネレータ、JMS コントロール、スキーマ、XML メタデータ キャッシュ、および動的トランスフォーメーション コントロール) が含まれる。
ルーティング処理アプリケーションは、JMS メッセージのルーティング フィールド ("From" および "To") をプロパティとして抽出し、"From" ルーティング フィールドに基づいて、受信メッセージに適用するトランスフォーメーションを XML メタデータ キャッシュから抽出し、動的トランスフォーメーション コントロールを呼び出します。
トランスフォーメーションの完了後、ルーティング処理アプリケーションは、変換したメッセージのルーティング先となる JMS 送り先を XML メタデータ キャッシュから抽出し、プロパティを適用して JMS コントロールを動的にコンフィグレーションします。
このサンプルは、インターネットで医薬品を販売する Avitek Inc. という架空の会社を基に作成されています。 注文を受けた地域に基づいて市外局番に固有のトランスフォーメーションを適用し、該当する送り先キューにルーティングします。この過程を次に示します。
リスン先の定義済みキューで XML メッセージを受信する
JMS メッセージは、"From" フィールドと "To" フィールドを含む JMS プロパティで構成される
適用する "From" フィールドと XQuery の間のマッピングを含む XML ドキュメントで構成される XML メタデータ キャッシュに対してルックアップを実行する
トランスフォーメーションを使用して、適用する XQuery URI を抽出する
受信メッセージに注文 ID (Java ノードで生成) を追加して、メッセージを拡張する
特定の市外局番に適用する XQuery を使用して動的トランスフォーメーション コントロールを呼び出し、受信 XML ドキュメントを地域固有のフォーマットに変換する
XML メタデータ コントロールに対してルックアップを実行し、"To" フィールドを使用してメッセージのルーティング先となる送り先のプロパティを取得する
JMS コントロールの Set Dynamic プロパティを呼び出して送り先のプロパティを設定する
JMS コントロールを介して、XML メッセージを JMS キューに送信する
XQuery はそれぞれ個別のアプリケーションに実装することをお勧めします。これにより柔軟性が確保され、ビジネス アプリケーションを開くことなく新しいトランスフォーメーションを動的に追加できるためです。
たとえば、値 100 を使用して "From" フィールドの新しいトランスフォーメーションを追加するには、次の変更が必要になります。
XQ リポジトリ アプリケーションに新しいトランスフォーメーションのマップ (.xq) ファイルを追加する
このエントリを追加するために、XML ドキュメントとキャッシュを更新することによって、適用する "from" フィールドとトランスフォーメーションの間のマッピングが含まれる XML キャッシュを更新する
新しい物理 JMS 送り先が必要な場合、必要に応じて "to" フィールドの新しいエントリを XML キャッシュに追加する
リポジトリとキャッシュのエントリを更新するだけで済み、実際のビジネス アプリケーションを変更する必要はありません。 新しいトランスフォーメーションおよびルーティングを新しい送り先に動的に適用する場合は、ビジネス アプリケーションを変更する必要があります。
必須ソフトウェア
このサンプルには次のソフトウェアが必要です。
WebLogic Integration 8.1 SP4 以降 (Jython 2.1 を含む)。 WebLogic Integration 8.1 は dev2dev のダウンロード ページからダウンロードできます。
WLI Common Utilities バージョン 2.5。 WLI Common Utilities はダウンロード ページからダウンロードできます。
WebLogic Server Scripting Tool (WLST) (WLI Common Utilities に含まれる)。 WLST はダウンロード ページからもダウンロードできます。
注意 : WLST Offline および WLST Online は BEA の dev2dev サイトからダウンロードおよび評価することができますが、正式な WebLogic Platform 8.1 製品には含まれません。 WLST は BEA ニュースグループのみでサポートされ、ユーティリティと API は変更される場合があります。 WebLogic Platform の将来のリリースではこの機能を正式にサポートする予定です。
補足資料
このサンプルには、アプリケーション コードに加えて次の項目が含まれています。
アプリケーションをサポートするように BEA WebLogic Integration クラスタをコンフィグレーションするための手順およびスクリプト
適切にコンフィグレーションされたクラスタにアプリケーションをデプロイするための手順およびスクリプト
タスクを作成して割り当てるための手順、ガイドライン、および注意事項
ダウンロード方法
動的なトランスフォーメーションとルーティングのサンプル、および WLI Common Utilities は dev2dev のダウンロード ページからダウンロードできます。