チュートリアル
チュートリアル 2. 融資申し込みの変換
データ トランスフォーメーションとは、あるフォーマットから別のフォーマットにデータをマッピングすることです。この節では、BEA AquaLogic Service Bus を使用し、プロキシ サービスのコンフィグレーションで設定した条件に応じてメッセージをルーティングおよび変換する方法を説明します。
この節の内容は以下のとおりです。
前提条件
「チュートリアル 1. 融資申し込みのルーティング」を完了していることです。
チュートリアルの目的
チュートリアルの目的は、AquaLogic Service Bus Console のグラフィカル環境を使用して開発された、ルーティングとトランスフォーメーションのシナリオを作成およびテストする手順を示すことです。
「チュートリアル 1. 融資申し込みのルーティング」で学習した内容を基に、AquaLogic Service Bus Console を使用して次のことを行います。
コンテンツ ベースのルーティングをコンフィグレーションする。
XPath 式を使用してメッセージ本体のコンテンツを変更する。
シナリオの定義
主要な金融会社が、BEA AquaLogic Service Bus を使用して、第二の融資会社に売却しやすい融資申し込みを識別し、再ルーティングします。25,000,000.00 を超える元本を要求する融資申し込みは、第二の融資会社への売却の候補です。この条件を満たす融資申し込みが検出されると、Web サービスへのコールアウトによってその申し込み者の信用格付け情報が取得されて融資申し込みに追加され、その融資申し込みが第二の金融会社の Web サービスに転送されて処理されます。
25,000,000.00 以下の元本を要求する融資申し込みは、別のビジネス サービスにルーティングされて処理されます。
対象のビジネス サービスは、その融資申し込みを承認するか拒否するかを示す応答を返します。
次の図に、エンタープライズ環境で BEA AquaLogic Service Bus がエンタープライズ サービスとビジネス サービスとのメッセージングを中継する仕組みを示します。
図 4-1 AquaLogic Service Bus を介した融資申し込み処理 Web サービスのエクスポーズ
AquaLogic Service Bus の実行時処理の概要
主要な金融会社が融資申し込みを受け取ります。この融資申し込みは AquaLogic Service Bus プロキシ サービス LoanGateway2
を使ってルーティングされ、申し込みを処理する対象ビジネス サービスが選択されます。融資額が 25000000
を超える場合、申し込みは LoanSaleProcessor
ビジネス サービスにルーティングされます。融資額が 25000000
以下の場合、申し込みは NormalLoan
ビジネス サービスにルーティングされます。融資額が 25000000
を超える場合、要求パイプラインは CreditRatingService
へのサービス コールアウトを実行し、$creditRating
変数を使用して申し込み者の信用格付けを受け取ります。第二の融資会社のサービスのインタフェース要件を満たすために、メッセージ本体が変換され、信用格付けの詳細が追加されます。変換されたメッセージ ($body
) は、大口の融資申し込みを処理するビジネス サービスにルーティングされます。サービスから以下の応答メッセージが返されます。
Loan Application Response: 信用格付け : AA : 融資は<i><b>大口</b></i>融資サービスにより購入されました
必要なリソース
プロジェクト フォルダ MortgageBroker
と前のチュートリアルで作成したディレクトリ構造を使用して、プロジェクトのアーティファクトを保持します。このシナリオに必要なリソースを次の表に示します。
表 4-1 「融資申し込みのルーティング」チュートリアルのリソース
リソース名
|
説明
|
CreditRatingService、LoanSale
|
WSDL リソース
|
NormalLoan、LoanSaleProcessor、CreditRatingService
|
AquaLogic Service Bus で使用される外部ビジネス サービス
|
LoanGateway2
|
AquaLogic Service Bus のプロキシ サービス
|
このチュートリアルの手順
このチュートリアルでは、「チュートリアル 1. 融資申し込みのルーティング」で学習した内容を基に、追加 WSDL リソースのインポート、新しいビジネス サービスおよびプロキシ サービスの登録、プロキシ サービスのルーティング動作のコンフィグレーションを行います。ルーティング動作のコンフィグレーションには次の操作が含まれます。
信用格付けを取得するサービス コールアウトを追加する
発信 (要求) メッセージで、ネームスペースを変更して新しい CreditRating
要素を挿入する
応答メッセージで、ネームスペースの変更を元に戻して CreditRating
要素を削除する
以下の手順に従ってプロキシ サービスおよび関連するリソースを AquaLogic Service Bus で設計およびコンフィグレーションし、このユーザ事例シナリオを解決します。
手順 1 : 環境の準備
このチュートリアル用に作成したドメインで AquaLogic Service Bus が動作していること、および「チュートリアル 1. 融資申し込みのルーティング」の説明どおりに手順が完了していることを確認します。
手順 2 : セッションの作成とプロジェクトの設定
このチュートリアルでは、プロジェクト フォルダ MortgageBroker
と「チュートリアル 1. 融資申し込みのルーティング」で作成したディレクトリ構造を使用して、プロジェクトのアーティファクトを保持します。
Change Center で [作成] をクリックして新しいセッションを作成します。
AquaLogic Service Bus Console のナビゲーション パネルで [プロジェクト エクスプローラ] を選択します。
ナビゲーション パネルに [プロジェクト エクスプローラ] ペインが開き、コンソールにプロジェクト ページが表示されます。
[プロジェクト エクスプローラ] で [MortgageBroker
] プロジェクト ツリーを展開して、プロジェクトのアーティファクトが格納されている以下のサブフォルダを表示します。
ProxyService
BusinessServices
WSDL
手順 3 : リソースの作成
この手順では、WSDL リソースをインポートし、このチュートリアルに必要なプロキシ サービスとビジネス サービスを作成します。
WSDL リソースの作成
WSDL はビジネス サービスおよびプロキシ サービスを作成するための基礎であるため、このシナリオに必要なその他のリソースを作成する前に WSDL リソース (LoanSale および CreditRatingService) を作成する必要があります。
適切な WSDL をインポートして WSDL リソースを作成するには、「WSDL をインポートするには」の手順を実行します。ただし、リソース名と WSDL については次の表に従います。
表 4-2 WSDL コンフィグレーションの設定
リソース名
|
WSDL の場所
|
LoanSale
|
BEA_HOME \weblogic91\servicebus\examples\src\examples\webservices\jws_basic\large\LargeLoanPurchasingService.wsdl
|
CreditRatingService
|
BEA_HOME \weblogic91\servicebus\examples\src\examples\webservices\jws_basic\credit\CreditLoanApprovalService.wsdl
|
この手順を完了すると、MortgageBroker/WSDL
フォルダにこのチュートリアルおよび「チュートリアル 1. 融資申し込みのルーティング」で作成した WSDL リソースが次の図のように格納されます。
図 4-2 WSDL リソース
プロキシ サービスの作成
この手順では、プロキシ サービスを作成します。プロキシ サービスを使用して融資申し込みを適切なビジネス サービスにルーティングします。要求融資額が 25 000 000.00 を超える場合は、ルックアップ サービスを呼び出して申し込み者の信用格付けを取得します (融資額には単位が指定されていませんが、ドルなどの任意の通貨を指定できます)。
新しいプロキシ サービスを作成するには、「プロキシ サービスを作成するには」の手順を実行します。ただし、使用するプロキシ サービス名とエンドポント URI は次の表に従います。
表 4-3 プロキシ サービスのコンフィグレーション設定
プロキシ サービス名
|
LoanGateway2
|
サービスの種類
|
[WSDL ポート ] オプションを選択する。
[WSDL の選択] ブラウザ ウィンドウで normalLoan WSDL を選択する。
[WSDL 定義の選択] ページで helloPort ポートを選択する。
|
エンドポイント URI
|
/loan/gateway2
|
この手順が完了すると、次の図のようにプロキシ サービスのコンフィグレーション設定の概要が表示されます。プロキシ サービスを登録する前にコンフィグレーションの設定を確認します。
図 4-3 LoadGateway2 プロキシ サービス - コンフィグレーション設定の概要
この手順を完了すると、MortgageBroker/ProxyService
フォルダにこのチュートリアルおよび「チュートリアル 1. 融資申し込みのルーティング」で作成したプロキシ サービスが次の図のように格納されます。
図 4-4 プロキシ サービス リソース
ビジネス サービスの作成
このシナリオでは、ビジネス要件に応じてメッセージが、複数のビジネス サービスのうちの 1 つにルーティングされるようにプロキシ サービスをコンフィグレーションします。
CreditRatingService - 指定した条件を満たす融資申し込みを受け取ると、その顧客の信用格付けを返します。これは、Web サービス コールアウト (サービス コールアウト) により実装されます。
NormalLoan - 第二の金融会社のビジネス サービス。このサービスは、要求融資額が 25 000 000 以下の場合に呼び出されます。
LoanSaleProcessor - 第二の金融会社のビジネス サービス。このサービスは、要求融資額が 25 000 000 を超える場合に呼び出されます。
「チュートリアル 1. 融資申し込みのルーティング」で標準融資サービスを作成しました。このシナリオ用に LoanSaleProcessor
ビジネス サービスと CreditRatingService
ビジネス サービスを作成するには、「NormalLoan ビジネス サービスを作成するには」の手順を実行します。ただし、ここでサービスのコンフィグレーションに使用する名前、サービスの種類、エンドポイント URI は、次の表に従います。
表 4-4 LoanSaleProcessor ビジネス サービスのコンフィグレーション設定
ビジネス サービス名
|
LoanSaleProcessor
|
サービスの種類
|
[WSDL ポート ] オプションを選択する。
[WSDL の選択] ブラウザ ウィンドウで LoanSale WSDL を選択する。
[WSDL 定義の選択] ページで helloPort ポートを選択する。
|
エンドポイント URI
|
[既存の URI] フィールドに表示されているエンドポイント URI の値が http:// host:port /njws_basic_ejb/LargeSimpleBean であることを確認する。
host:port は、AquaLogic Service Bus サーバが動作するマシンとポートを表す。host と port の値は、BEA_HOME\weblogic91\samples\servicebus\examples\src\examples.properties に指定された値と同じである必要がある。
詳細については、「examples.properties ファイルの編集」を参照。
|
表 4-5 CreditRatingService ビジネス サービスのコンフィグレーション設定
ビジネス サービス名
|
CreditRatingService
|
サービスの種類
|
[WSDL ポート ] オプションを選択する。
[WSDL の選択] ブラウザ ウィンドウで creditRatingService WSDL を選択する。
[WSDL 定義の選択] ページで helloPort ポートを選択する。
|
エンドポイント URI
|
[既存の URI] フィールドに表示されているエンドポイント URI の値が http:// host:port /njws_basic_ejb/CreditSimpleBean であることを確認する。
host:port は、AquaLogic Service Bus サーバが動作するマシンとポートを表す。host と port の値は、BEA_HOME\weblogic91\samples\servicebus\examples\src\examples.properties に指定された値と同じである必要がある。
詳細については、「examples.properties ファイルの編集」を参照。
|
この手順を完了すると、MortgageBroker/BusinessService
フォルダにこのチュートリアルおよび「チュートリアル 1. 融資申し込みのルーティング」で作成したビジネス サービスが次の図のように格納されます。
図 4-5 ビジネス サービス リソース
まとめ
「手順 1 : 環境の準備」から「手順 3 : リソースの作成」までを完了すると、このシナリオに必要なリソースの作成が完了します。プロキシ サービスには基本コンフィグレーションを設定しました。以降の手順 (「手順 4 : LoanGateway2 プロキシ サービスのルーティングのコンフィグレーション」から「手順 6 : LoanGateway2 プロキシ サービスのルーティング テーブル応答アクションのコンフィグレーション」) では、融資申し込みメッセージのルーティング、トランスフォーメーション、およびサービス コールアウトの動作を追加してプロキシ サービスのコンフィグレーションを完了する方法を説明します。
手順 4 : LoanGateway2 プロキシ サービスのルーティングのコンフィグレーション
このプロキシ サービスを、要求パイプラインと応答パイプラインを使用するメッセージ フローとして実装します。この手順のタスクは以下のとおりです。
ルーティング テーブルの作成
AquaLogic Service Bus Console のナビゲーション パネルで [リソース ブラウザ] を選択します。
ナビゲーション パネルに [リソース ブラウザ] ペインが開き、コンソールに [プロキシ サービスの概要] ページが表示されます。
注意 : リソースの編集はセッション内で行う必要があります。セッションを開始していない場合は、Change Center で [作成] をクリックしてセッションを開始し、プロキシ サービスのコンフィグレーションやメッセージ フローの編集ができるようにします。
LoanGateway2
プロキシ サービスの [アクション] カラムにある [メッセージ フローの編集] アイコン をクリックします。
プロキシ サービス LoanGateway2
の[メッセージ フローの編集] ページが表示されます。
[LoanGateway2] をクリックし、[ルート ノードの追加] を選択します。
コンフィグレーションのダイアログに RouteNode1
が追加されます。
[RouteNode1] をクリックし、ポップアップ メニューから [編集|ルート ノード] を選択します。
[ステージ コンフィグレーションの編集] ページが表示されます。このページには、[アクションの追加] という 1 つのリンクがあります。
[アクションの追加] をクリックし、[ルーティング テーブル] を選択します。
[ステージ コンフィグレーションの編集] ページにルーティング テーブルのコンフィグレーション ページが表示されます。
着信メッセージの amount
要素の評価に基づいてビジネス サービスにメッセージをルーティングするようにルーティング テーブルをコンフィグレーションします。そのためには XQuery 式を作成する必要があります。XQuery 式の作成には XQuery 式エディタを使用します。
ルーティング式のコンフィグレーション
[ルーティング テーブル] の [<式>
] リンクをクリックします。[XQuery 式エディタ] ページが表示されます。
このページのデフォルトである [XQuery テキスト] をそのまま使用します。
[変数の構造] をクリックします。[変数の構造] ペインが表示されます。
[変数の構造] ペインの [構造の選択] ドロップダウン リストで [body
] を選択します。
body
要素の構造が [変数の構造] ペインに表示されます。
processLoanApp 要素の横の [+] をクリックして、要素を展開します。
processLoanApp 要素は、$body - processLoanApp (request) 要素内にあります。
[+] をクリックして、loanRequest 要素を展開します。
融資要求ドキュメントの構造がグラフィカル表示されます。
実行時に、プロキシ サービスは、メッセージの amount
要素の値に基づいてルーティングを決定します。
Amount
ノード要素に対応する円形アイコン を選択し、XQuery 式のテキスト ボックスにドラッグ アンド ドロップします。
$body/exam:processLoanApp/loanRequest/java:Amount
XQuery 式がテキスト ボックスに書き込まれます。
注意 : ドラッグ アンド ドロップ機能を使用できるのは Internet Explorer (IE) ブラウザのみです。IE 以外のブラウザを使用する場合は、[変数の構造] ペインで amount
要素を選択します。式が [プロパティ インスペクタ] パレットに表示されます。XQuery 式のテキスト ボックスにカーソルを置いて、[プロパティのコピー] をクリックします。式がテキスト ボックスにコピーされます。パレットの式をコピーし、XQuery 式のテキスト ボックスに貼り付けることもできます。
[検証] をクリックして、XQuery を検証します。
式を送信する前に検証することをお勧めします。式の構文が検証されます。式にエラーがある場合は、[検証] ボタンのすぐ上に表示されます。次の図に示す例では、式は有効です。
図 4-6 ルーティング式の検証
[ステージ コンフィグレーションの編集] ページのルーティング テーブルに戻ります。<式>
は、メッセージの Amount
要素の値を返す式に置き換えられています。
[演算子] ドロップダウン リストで [>] を選択し、関連するテキスト フィールドに数値 25000000 を入力します (カンマは入力しません)。
これで、ルーティング テーブルにルーティング動作を決める式が含まれました。Amount
要素の値が 25000000 より大きい場合、ルーティング テーブルのコンフィグレーションに従ってメッセージがルーティングされます。
金額が 25000000 より大きい場合のメッセージのルーティング先サービスを定義するために、[サービス
] リンクをクリックします。[サービスの選択] ブラウザ ウィンドウが表示されます。
[LoanSaleProcessor] ビジネス サービスを選択します。
[ルーティング テーブル] の [操作] ドロップダウン リストで、[processLoanApp
] 操作を選択します。
これは、融資申し込みの要求融資額が 2500000 より大きい場合に、LoanSaleProcessor ビジネス サービスで実行時に呼び出される操作です。
これで、LoanSaleProcessor
ビジネス サービスへの融資申し込みのルーティング ケースが定義されました。
図 4-7 LoanSaleProcessor への融資申し込みのルーティング
要求融資額が 25000000 を超える融資申し込みが検出されると、Web サービス コールアウト (サービス コールアウト) によってその顧客の信用格付けが取得されます。取得された信用格付け情報が融資申し込みに追加され、その融資申し込みが第二の金融会社のビジネス サービスに転送されて処理されます。次の節 (手順 5 : LoanGateway2 プロキシ サービスのルーティング テーブル要求アクションのコンフィグレーション) では、対象サービスに適したメッセージのサービス コールアウトおよび変換を行うようにプロキシ サービスをコンフィグレーションする方法を説明します。
手順 5 : LoanGateway2 プロキシ サービスのルーティング テーブル要求アクションのコンフィグレーション
ルーティング テーブル要求アクションをコンフィグレーションするには、以下の手順を実行します。
サービス コールアウトの入力パラメータのコンフィグレーション
サービス コールアウトにより融資申し込みが CreditRatingService
ビジネス サービスに送信され、申し込み者の信用格付けが返されます。サービス コールアウト アクションをコンフィグレーションする前に、次の手順に従ってサービス コールアウト アクションの入力パラメータを割り当てる必要があります。
[ルーティング テーブル] の [要求アクション] パネルで [アクションの追加] をクリックし、[割り当てる] を選択します。
割り当てアクションが [ルーティング テーブル] の [要求アクション] パイプラインに追加されます。
[<式>
] リンクをクリックします。[XQuery 式エディタ] ページが表示されます。
このページのデフォルトである [XQuery テキスト] をそのまま使用します。
[変数の構造] ペインの [変数の構造] ドロップダウン リストで [body
] を選択し、要素のリストを展開して、loanRequest
要素を XQuery 式のテキスト ボックスにドラッグ アンド ドロップします。次の XQuery 式がテキスト ボックスに書き込まれます。
$body/exam:processLoanApp/loanRequest
[検証] をクリックして XQuery を検証し、[保存] をクリックします。
[ステージ コンフィグレーションの編集] ページのルーティング テーブルに戻ります。<式>
は、サービス コールアウト サービスに送信するメッセージ コンテンツを返す式に置き換えられています。
[変数] テキスト ボックスに inputparam
と入力します。
図 4-8 サービス コールアウトの入力パラメータのコンフィグレーション
この手順で、XQuery 式 ($body/exam:processLoanApp/loanRequest) で返される値を inputparam
変数に割り当てる作業は完了です。
サービス コールアウト アクションの追加
この節では、融資申し込みを CreditRatingService
ビジネス サービスに送信し、申し込み者の信用格付けを取得するサービス コールアウト アクションをコンフィグレーションする方法を説明します。
[ルーティング テーブル] の [要求アクション] パネルで をクリックし、[アクションの追加|サービス コールアウト] を選択します。
サービス コールアウト アクションが [ルーティング テーブル] の [要求アクション] パイプラインに追加されます。
[サービス コールアウト] の [サービス] リンクをクリックします。[サービスの選択] ブラウザ ウィンドウが表示されます。
[サービスの選択] ウィンドウで [CreditRatingService
] を選択します。
[操作] ドロップダウン リストで [processLoanApp
] を選択します。サービス コールアウトの要求パラメータおよび応答パラメータをコンフィグレーションできるフィールドが表示されます。
[サービス コールアウト] の [要求パラメータ] セクションで、loanRequest パラメータを inputparam
(前の節で定義したメッセージ コンテキスト変数) に設定します。
[サービス コールアウト] の [応答パラメータ] セクションで、return パラメータ名を creditRating
に設定します。
図 4-9 サービス コールアウト アクションのコンフィグレーション
この手順で、サービス コールアウトを CreditRatingService
Web サービスにコンフィグレーションする作業は完了です。Web サービスから返された信用格付けが creditRating
コンテキスト変数に割り当てられます。
メッセージのトランスフォーメーションのコンフィグレーション
この節では、loanSaleProcessor
サービスのパブリック コントラクト (インタフェース要件) を満たすようにメッセージのトランスフォーメーションをコンフィグレーションします。ここで説明する内容は次のとおりです。
メッセージのネームスペースを対象サービスで使用するネームスペースの名前に変更するように、プロキシ サービスをコンフィグレーションする。それには、XPath 式を使用します。このコンフィグレーションの詳細については、「ネームスペースを変更するには」を参照してください。
メッセージに新しい要素を挿入するように、プロキシ サービスをコンフィグレーションする。それには、コンフィグレーションに要素のアクションを追加する必要があります。このコンフィグレーションの詳細については、「メッセージに新しい要素を挿入するには」を参照してください。
ネームスペースを変更するには
[サービス コールアウト] アイコン をクリックし、[アクションの追加|名前変更する] を選択します。
名前変更アクションのコンフィグレーション フィールドが [要求アクション] パネルに追加されます。
[名前変更する] という文の [<XPath>] リンクをクリックします。XPath 式エディタが表示されます。
XPath 式のテキスト ボックスに以下の XPath 式を入力します。
.//java:*
この式では、プレフィックス java
が付いたすべてのネームスペースが識別されます。
[保存] をクリックします。[ステージ コンフィグレーションの編集] ページに戻ります。
[変数] テキスト ボックスに body
と入力します。
body
コンテキスト変数にメッセージ本体が保持されます。以上の手順を完了すると、body
コンテキスト変数でプレフィックスが java
であるすべてのネームスペースを検出する XPath 式の作成は完了です。次の手順では、XPath 式で検出されたネームスペースを置換するネームスペースを指定します。
[ネームスペース] オプションを選択して、メッセージ内で置換するネームスペースの完全修飾名を入力します。新しいネームスペースは java:large.client
です。
注意 : この例では、置換前のネームスペースは java:normal.client
です。
名前変更アクションは次の図のように表示されます。
図 4-10 ネームスペースの名前変更
メッセージに新しい要素を挿入するには
[名前変更する] アイコン をクリックし、[アクションの追加|挿入する] を選択します。
挿入アクションのコンフィグレーション フィールドが [要求アクション] パネルに追加されます。
[XQuery 式エディタ] ページが表示されます。このページで新しいネームスペースを追加します。
[ネームスペース定義] パレットで、[ユーザ定義済みネームスペース] 領域に移動します。
図 4-11 ユーザ定義済みネームスペース
[プレフィックス] フィールドに lg
と入力します。
[URI] フィールドに java:large.client
と入力します。
新しいネームスペースが、[ネームスペース定義] パレットの [ユーザ定義済みネームスペース] 領域に表示されます。
XQuery 式のテキスト ボックスに次の式を入力して、新しい要素の作成方法を指定します。
<lg:CreditRating>{data($creditRating)}</lg:CreditRating>
メッセージに追加する要素を java:large.client
ネームスペースに関連付ける必要があるため、要素のネームスペースに lg を指定する。
{}
は、{}
内のコンテンツが XML ではないため、解釈する必要があることを XQuery エンジンに通知する。
実行時に、信用格付けサービス (「サービス コールアウト アクションの追加」でサービス コールアウト アクションをコンフィグレーションしたサービス) により $creditRating
変数に信用格付けの値が割り当てられます。
[検証] をクリックし、[保存] をクリックします。
注意 : 送信する前に、式を検証することをお勧めします。
[挿入する] 式のドロップダウン リストから [の後ろに] を選択します。
[<XPath>] リンクをクリックします。[XPath 式エディタ] ページが表示されます。
[変数の構造] をクリックします。[変数の構造] ペインが表示されます。
[変数の構造] ペインの [構造の選択] ドロップダウン リストで [body
] を選択します。
要素リストを展開し、Notes
要素を XPath 式のテキスト ボックスにドラッグ アンド ドロップします。
次の XPath 式がテキスト ボックスに書き込まれます。
./exam:processLoanApp/loanRequest/java:Notes
注意 : ドラッグ アンド ドロップ機能を使用できるのは Internet Explorer (IE) ブラウザのみです。IE 以外のブラウザを使用する場合は、[変数の構造] ペインで notes
要素を選択します。XPath 式が [プロパティ インスペクタ] パレットに表示されます。XPath 式のテキスト ボックスにカーソルを置いて、[プロパティのコピー] をクリックします。式がテキスト ボックスにコピーされます。パレットの式をコピーし、XPath 式のテキスト ボックスに貼り付けることもできます。
この文のネームスペース java
を lg
に変更します。
./exam:processLoanApp/loanRequest/lg:Notes
[検証] をクリックし、[保存] をクリックして、[ステージ コンフィグレーションの編集] ページに戻ります。
[変数] テキスト フィールド (式の最初のフィールド) に body
と入力します。これは、実行時に新しい <CreditRating>
要素を挿入するコンテキスト変数です。
挿入アクションは次の図のように表示されます。
図 4-12 メッセージへの新しい要素の挿入
これで、発信メッセージのコンフィグレーションは完了です。信用格付け要素をメッセージに追加し、ネームスペースを変更して、メッセージが対象サービスのパブリック コントラクト (インタフェース) に準拠するようにしました。
ここまでの手順を完了すると、発信メッセージのコンフィグレーションは次のように表示されます。
図 4-13 発信メッセージのコンフィグレーション
次の手順では、LoanGateway2
プロキシ サービスの応答アクションをコンフィグレーションする方法を説明します。
手順 6 : LoanGateway2 プロキシ サービスのルーティング テーブル応答アクションのコンフィグレーション
この手順では、プロキシ サービスからクライアントに返されるメッセージがクライアントのパブリック コントラクト (WSDL) に準拠するようにルーティング テーブルの応答アクションをコンフィグレーションする方法を説明します。ここで説明する内容は次のとおりです。
CreditRating 要素を応答メッセージから削除するように、プロキシ サービスをコンフィグレーションする。このコンフィグレーションの詳細については、「要素を削除するには」を参照してください。
ネームスペースを元のメッセージのネームスペース (java:normal.client
) に戻すように、プロキシ サービスをコンフィグレーションする。このコンフィグレーションの詳細については、「名前変更アクションを追加するには」を参照してください。
要素を削除するには
前の手順で作成およびコンフィグレーションしたルーティング テーブルの [ステージ コンフィグレーションの編集] ページが AquaLogic Service Bus Console で開いていることを確認します。
[ルーティング テーブル] の [応答アクション] パネルで、[アクションの追加|削除する] をクリックします。
削除アクションのコンフィグレーション フィールドが、[ルーティング テーブル] の [応答アクション] に追加されます。
[変数の <XPath>] オプションを選択し、[<XPath>] をクリックします。[XPath 式エディタ] ページが表示されます。
XPath 式のテキスト ボックスに以下の式を入力します。
./exam:processLoanAppResponse/return/lg:CreditRating
processLoanAppResponse
は、呼び出された WSDL 操作に文字列 Response
を追加したものを表し、return
は WSDL パート名を表します。
[検証] をクリックし、[保存] をクリックします。[ステージ コンフィグレーションの編集] ページに戻ります。
削除アクションの [変数] テキスト フィールドに body
と入力します。
削除アクションのコンフィグレーションは次のようになります。
変数 body
の ./exam:processLoanAppResponse/return/lg:CreditRating
図 4-14 要素の削除
以上の手順で、メッセージを応答パイプラインで処理するときに応答メッセージから信用格付け要素を削除するように指定する作業を完了しました。
名前変更アクションを追加するには
この節では、ネームスペースをクライアントで使用するネームスペースの名前 (java:normal.client
) に変更する方法を説明します (loanSaleProcessor
ビジネス サービスへの要求メッセージで、ネームスペースを対象サービスで使用するネームスペースに変更しました。「ネームスペースを変更するには」を参照してください)。
[削除する] アイコン をクリックし、[アクションの追加|名前変更する] を選択します。
名前変更アクションのコンフィグレーション フィールドが [応答アクション] パネルに追加されます。
[名前変更する] という文の [<XPath>] をクリックします。XPath 式エディタが表示されます。
XPath 式のテキスト ボックスに以下の式を入力します。
.//lg:*
この XPath 式では、プレフィックス lg:
が付いたすべてのネームスペースが検出されます。
[保存] をクリックします。[ステージ コンフィグレーションの編集] ページに戻ります。
名前変更アクションの [変数] テキスト フィールドに body
と入力します。
[ネームスペース] オプションを選択し、ネームスペースのテキスト フィールドに java:normal.client
と入力します。
以上の手順で、次の図のように応答メッセージでプレフィックス lg:
が付いたすべてのネームスペースを java:normal.client
に変更するように指定する作業を完了しました。
図 4-15 名前変更アクションの追加
ここまでの手順を完了すると、プロキシ サービスの応答アクションのコンフィグレーションは次のように表示されます。
図 4-16 プロキシ サービスの応答アクションのコンフィグレーション
LoanGateway2 プロキシ サービスのルーティング テーブルのコンフィグレーションの最後の手順では、デフォルト ルーティング ケース (else 条件) をケース式に追加します。
手順 7 : ルーティングのデフォルト ケースの追加
この手順では、LoanGateway2 プロキシ サービスのルーティング テーブルにデフォルト ルーティング ケースをコンフィグレーションする方法を説明します。実行時に、ルーティング テーブルに設定された条件が 1 つも満たされない場合、このデフォルト ケースに従ってメッセージがルーティングされます。
ルーティング テーブルの [ケース] アイコン をクリックし、[デフォルト ケースの挿入] を選択します。
デフォルト ケースが [ステージ コンフィグレーションの編集] ページのルーティング テーブルの下に追加されます。
[<サービス>] をクリックして [サービの選択] ブラウザを表示します。
[NormalLoan
] ビジネス サービスを選択します。
デフォルト ケースのコンフィグレーション フィールドで、次の図のように [processLoanApp
] 操作を選択します。
図 4-17 デフォルト ルーティング ケースの追加
[保存] をクリックしてルート ノードのコンフィグレーションを保存し、LoanGateway2
プロキシ サービスの [メッセージ フローの編集] ページに戻ります。
[プロキシ サービスの概要] ページに戻るまで、各コンフィグレーション ページで [保存] をクリックします。
Change Center で [アクティブ化] をクリックし、[送信] をクリックしてセッションのコンフィグレーション情報を保存します。
次の図に示すように、プロキシ サービスのメッセージ フローのマップを確認できます。
図 4-18 LoanGateway2 プロキシ サービスのメッセージ フローのマップ
手順 8 : 融資申し込みのルーティング コンフィグレーションのテスト
AquaLogic Service Bus でクライアントと対象ビジネス サービスを使用するためのコンフィグレーションが完了したので、コンフィグレーションをテストできます。このシナリオのプロキシ サービスのルーティング動作は、融資申し込みメッセージの融資額の値に基づいています。融資額を変更すると、ルーティング動作は次のように変わります。
値が 25000000 以下の場合、メッセージは NormalLoan
ビジネス サービスにルーティングされる。
値が 25000000 より大きい場合、メッセージは LoanSaleProcessor
ビジネス サービス (大口融資処理サービス) にルーティングされる。
この節では、これらの 2 つのケースのプロキシ サービスをテストする方法を説明します。テストの実行後にコマンド ウィンドウに返されるメッセージに、テストの成功または失敗と、要求を処理したビジネス サービスが示されます。
この節のテスト シナリオは以下のとおりです。
LoanSaleProcessor (大口融資処理サービス) ビジネス サービスをテストするには
setEnv.cmd
を実行して環境を設定する作業が済んでいない場合は、ここで実行します。
BEA_HOME
\weblogic91\samples\servicebus\examples\src\
このディレクトリで、コマンドラインから次のコマンドを実行します。
setEnv.cmd
注意 : UNIX システムでコンフィグレーションをテストする場合は、コマンドライン プロンプトで setEnv.sh
スクリプトを実行します。
BEA_HOME
\weblogic91\samples\servicebus\examples\src\examples\webservices\jws_basic\normal
AquaLogic Service Bus のルーティング動作を変更するには、build.xml
ファイルで、run ターゲットを編集する必要があります。
build.xml
ファイルの最後までスクロールして次の文字列を探します。
<arg line="http://$...
見つかった文字列を次のように変更し、変更内容を保存します。
<arg line="http://${wls.hostname}:${wls.port}/loan/gateway2 steve 555 25000001 20 5.1 notes" />
これで、プロキシ サービスの URI が、チュートリアルのドメインで動作中のデプロイされた Web サービス (gateway2
) の URI に変更され、融資額の値に 25000001
が指定されます (テスト用の入力パラメータの詳細については、表 3-5 を参照してください)。
ビジネス サービスをまだデプロイしていない場合は、デプロイします。
コマンド ウィンドウで、次のディレクトリに移動します。
BEA_HOME
\weblogic91\samples\servicebus\examples\src\examples\webservices\jws_basic\normal
このビルドをテストするには、コマンドラインで次のように入力します。
ant
run
これで、プロキシ サービスのルーティング ロジックがテストされます。Web サービスからのメッセージがコマンド ラインに出力されます。
[java] Loan Application Response: 信用格付け : AA : 融資は<i><b>大口</b></i>融資サービスにより購入されました
[java] Rate: 5.1
BUILD SUCCESSFUL
この応答メッセージは、要求融資額が 25000001 (25000000 より多い) であるため、「大口融資サービス」で要求が処理されたということを示します。
NormalLoan ビジネス サービスをテストするには
BEA_HOME
\weblogic91\samples\servicebus\examples\src\examples\webservices\jws_basic\normal
このケースでは、NormalLoan
ビジネス サービスをテストするために、build.xml
ファイルに融資額の値 25000000
を入力し (表 3-5 を参照)、変更を保存します。
ビジネス サービスをまだデプロイしていない場合は、デプロイします。
コマンド ウィンドウで、次のディレクトリに移動します。
BEA_HOME
\weblogic91\samples\servicebus\examples\src\examples\webservices\jws_basic\normal
プロキシ サービスのルーティング ロジックをテストするため、コマンドラインで次のように入力します。
ant run
Web サービスからの応答メッセージがコマンド ラインに出力されます。
[java] Loan Application Response: <i><b>標準</b></i>融資申し込み処理サービスにより承認されました
[java] Rate: 5.1
BUILD SUCCESSFUL
この応答メッセージは、要求融資額が 25000000 であるため、「標準融資申し込み処理サービス」で要求が処理されたということを示します。
ベスト プラクティス
このチュートリアルでは、トランスフォーメーションをコンフィグレーションし、ルート ノードのネームスペースを変更します。代わりに、パイプライン ペアの要求パイプラインに同一のロジックをコンフィグレーションすることも可能です。
トランスフォーメーションおよびネームスペース変更に必要な作業は、どちらの方法を選択しても同じです。
このチュートリアル シナリオの場合、既存のルート ノードの要求アクションおよび応答アクションにアクションを追加する方が、独立したパイプライン ペアを作成し、ステージを追加して、そのステージにトランスフォーメーション アクションを追加するよりも簡単です。
実装の選択が重要になるシナリオもあります。
ルート ノードから 5 種類のサービスにメッセージをルーティングし、各サービスで必要とするトランスフォーメーションが同一である場合がその例です。このシナリオでは、1 つのトランスフォーメーションを要求パイプラインに追加する方が、各ルート ノードの各ルーティング コンフィグレーション用に同一のトランスフォーメーションを 5 セット用意するよりも適切です。実行コストは同じでも、保守、コンフィグレーション、わかりやすさの点で後者の実装の方が高コストであり、作業負担が大きくなります。