|
データ トランスフォーメーションとは、異種システム環境で情報を互換性のあるものにするために、あるフォーマットから別のフォーマットにデータをマッピングすることです。Oracle Service Bus は、特定のプロキシ サービスのコンフィグレーションに基づいて、必要なときにメッセージのルーティングやトランスフォーメーションを行うようにコンフィグレーションできます。
このチュートリアルを開始する前に、「チュートリアル 1. 融資申し込みのルーティング」を完了する必要があります。
このチュートリアルは、Oracle Service Bus Console のグラフィカル環境を使用して開発されたルーティングとトランスフォーメーションのシナリオを作成およびテストするためのタスクを示します。「チュートリアル 1. 融資申し込みのルーティング」で学習した内容を基に、Oracle Service Bus Console を使用して次のタスクを実行します。
主要な住宅金融会社が、Oracle Service Bus を使用して、第二の融資会社に売却しやすい融資申し込みを識別し、再ルーティングします。2,500 万ドルを超える元本を要求する融資申し込みは、第二の融資会社への売却の候補です。Oracle Service Bus がこの条件を満たす融資申し込みを受け取ると、Web サービスへのコールアウトによって、その申し込み者の信用格付け情報が取得されます。
取得された信用格付け情報は、融資申し込みに追加されます。次に、その融資申し込みが第二の金融会社の Web サービスに転送されて処理されます。2,500 万ドル以下の元本を要求する融資申し込みは、別のビジネス サービスにルーティングされて処理されます。対象のビジネス サービスは、その融資申し込みを承認するか拒否するかを示す応答を返します。
図 4-1 は、エンタープライズ環境で Oracle Service Bus がエンタープライズ サービスとビジネス サービスとのメッセージングを中継する仕組みを示します。

主要な金融会社が融資申し込みを受け取ります。この融資申し込みは Oracle Service Bus プロキシ サービス LoanGateway2 を使用してルーティングされ、申し込みを処理する対象ビジネス サービスが選択されます。要求融資額が 2,500 万ドルを超える場合、申し込みは LoanSaleProcessor ビジネス サービスにルーティングされます。要求融資額が 2,500 万ドル以下の場合、申し込みは NormalLoan ビジネス サービスにルーティングされます。
融資額が 2,500 万ドルを超える場合、要求パイプラインは CreditRating ビジネス サービスへのサービス コールアウトを実行し、$creditRating 変数を使用して申し込み者の信用格付けを受け取ります。第二の融資会社のサービスのインタフェース要件を満たすために、メッセージ本体が変換され、信用格付けの詳細が追加されます。変換されたメッセージ ($body) は、大口の融資申し込みを処理するビジネス サービスにルーティングされます。サービスから次のような応答メッセージが返されます。
Loan Application Response: CREDIT RATING: AA: LOAN PURCHASED BY THE <i><b>LARGE</b></i> LOANS SERVICE
MortgageBroker プロジェクト フォルダと前のチュートリアルで作成したディレクトリ構造を使用して、プロジェクトのアーティファクトを保持します。このシナリオに必要なリソースを次の表に示します。
このチュートリアル用に作成したドメインで Oracle Service Bus が動作していること、および「チュートリアル 1. 融資申し込みのルーティング」で説明されているタスクが完了していることを確認します。
このチュートリアルでは、「チュートリアル 1. 融資申し込みのルーティング」で作成した MortgageBroker プロジェクト フォルダとディレクトリ構造を使用する必要があります。
この節では、WSDL リソースをインポートし、このチュートリアルに必要なプロキシ サービスとビジネス サービスを作成する方法を学習します。
WSDL リソース (loanSale と creditRating) を作成してから、このシナリオに必要なその他のリソースを作成する必要があります。WSDL リソースは、ビジネス サービスおよびプロキシ サービスを作成する構成要素です。適切な WSDL をインポートして WSDL リソースを作成するには、「チュートリアル 1. 融資申し込みのルーティング」の「normalLoan WSDL リソースを作成するには」で説明するタスクを実行します。ただし、この場合、リソースの名前と場所は次の表に従います。
|
このタスクを完了すると、MortgageBroker/WSDL フォルダには、このチュートリアルおよび「チュートリアル 1. 融資申し込みのルーティング」で作成した WSDL リソースが格納されます (図 4-2 を参照)。

このタスクでは、プロキシ サービスを作成します。プロキシ サービスを使用して融資申し込みを適切なビジネス サービスにルーティングします。要求融資額が 2,500 万ドルを超える場合は、ルックアップ サービスを呼び出して申し込み者の信用格付けを取得します。
| 注意 : | 融資額には単位が指定されていませんが、ドルなどの任意の通貨を指定できます。 |
新しいプロキシ サービス (LoanGateway2) を作成するには、「プロキシ サービスを作成するには」のタスクを実行します。この場合、次の表に示されたプロキシ サービス名とエンドポイント URI を使用します。
このタスクを完了すると、プロキシ サービスのコンフィグレーション設定の概要が表示されます。
このタスクを完了すると、MortgageBroker/ProxyService フォルダには、このチュートリアルおよび「チュートリアル 1. 融資申し込みのルーティング」で作成したプロキシ サービスが格納されます (図 4-3 を参照)。

このシナリオでは、次のように、ビジネス要件に応じてメッセージが複数のビジネス サービスのうちの 1 つにルーティングされるようにプロキシ サービスをコンフィグレーションします。
「チュートリアル 1. 融資申し込みのルーティング」で NormalLoan サービスを作成しました。このシナリオ用に LoanSaleProcessor ビジネス サービスと CreditRatingService ビジネス サービスを作成するには、「NormalLoan ビジネス サービスの作成」のタスクを実行します。ここでサービスのコンフィグレーションに使用する名前、サービスのタイプ、エンドポイント URI は、次の 2 つの表に従ってください。
このタスクを完了すると、MortgageBroker/BusinessService フォルダには、このチュートリアルおよび「チュートリアル 1. 融資申し込みのルーティング」で作成したビジネス サービスが格納されます (図 4-4 を参照)。

「環境の準備」から「リソースの作成」までのタスクをすべてを完了すると、このシナリオに必要なリソースの作成が完了します。また、プロキシ サービスには基本コンフィグレーションを設定しました。以下の 3 つのタスクでは、融資申し込みメッセージのルーティング、トランスフォーメーション、およびサービス コールアウト動作を追加することによってプロキシ サービスをコンフィグレーションします。
プロキシ サービスを、Oracle Service Bus で要求パイプラインと応答パイプラインを使用するメッセージ フローとして実装します。このタスクは以下のとおりです。
ナビゲーション ペインに [リソース ブラウザ] ペインが開き、コンソールに [プロキシ サービスの概要] ページが表示されます。
ルーティング テーブル] を選択します。
[ステージ コンフィグレーションの編集] ページにルーティング テーブルのコンフィグレーション情報が表示されます。
着信メッセージの amount 要素に基づいてビジネス サービスにメッセージをルーティングするようにルーティング テーブルをコンフィグレーションするには、XQuery 式エディタを使用して XQuery 式を作成する必要があります。
$body - processLoanApp (request)] 要素内にある [processLoanApp] 要素を展開します。$body/exam:processLoanApp/loanRequest/java:Amount
| 注意 : | ドラッグ アンド ドロップ機能を使用できるのは Internet Explorer (IE) ブラウザのみです。IE 以外のブラウザを使用している場合は、[変数の構造] ペインで Amount 要素を選択します。式が [プロパティ インスペクタ] パレットに表示されます。パレットの式をコピーし、XQuery 式のテキスト ボックスに貼り付けます。 |
ルーティング テーブルが [ステージ コンフィグレーションの編集] ページに表示されます。<式> は、メッセージの amount 要素の値を返す式に置き換えられています。
これで、ルーティング テーブルにルーティング動作を決める式が含まれました。Amount フィールドの値が 2,500 万ドルより大きい場合、ルーティング テーブルのコンフィグレーションに従ってメッセージがルーティングされます。
これは、融資申し込みの要求融資額が 2,500 万ドルより多い場合に、LoanSaleProcessor ビジネス サービスで実行時に呼び出される操作です。
これで、図 4-8 に示すように、LoanSaleProcessor ビジネス サービスへの融資申し込みのルーティング ケースが定義されました。

融資額が 2,500 万ドルを超える融資申し込みが検出されると、Web サービス コールアウト (サービス コールアウト) によってその顧客の信用格付けが取得されます。取得された信用格付け情報は、融資申し込みに追加されます。次に、その融資申し込みが第二の金融会社のビジネス サービスに転送されて処理されます。
この節では、対象サービスに対して適切にサービス コールアウトを実行し、メッセージを変換するようにプロキシ サービスをコンフィグレーションする方法について説明します。
サービス コールアウトにより融資申し込みが CreditRating ビジネス サービスに送信され、申し込み者の信用格付けが返されます。サービス コールアウト アクションを追加する前に、次のタスクを実行して、サービス コールアウトの入力パラメータをコンフィグレーションする必要があります。
次のように削除アクションの追加とコンフィグレーションを行って、メッセージから「xsi:type」属性を削除する必要があります。
メッセージ処理
削除する] をクリックします。
[削除する] アクションが、ルーティング テーブルの [要求アクション] パイプラインに追加されます。
[削除する] アクションのコンフィグレーションは次のようになります。
変数 body の ./exam:processLoanApp/loanRequest/@xsi:type を削除します (図 4-9 を参照)。
次に、サービス コールアウト アクション用の入力パラメータを次のように割り当てる必要があります。
割り当てる] を選択します。
[割り当てる] アクションが、ルーティング テーブルの [要求アクション] パイプラインに追加されます。
$body/exam:processLoanApp/loanRequest
このタスクで、XQuery 式 ($body/exam:processLoanApp/loanRequest) で返される値を loanRequestVariable 変数に割り当てる作業が完了します。
次に、以下のタスクを使用して、サービス コールアウトに割り当てた入力パラメータのネームスペースを変更する必要があります。
.//java:*
この式では、プレフィックス java が付いたすべてのネームスペースが識別されます。
loanRequestVariable コンテキスト変数でプレフィックスが java であるすべてのネームスペースを検出する XPath 式の作成が完了しました。次のタスクでは、XPath 式で検出されたネームスペースを置換するネームスペースを指定します。
| 注意 : | この例では、置換前のデフォルトのネームスペースは java:normal.client です。 |
図 4-11 に示すように、[名前変更する] アクションが表示されます。
この節では、融資申し込みを CreditRating ビジネス サービスに送信し、申し込み者の信用格付けを取得するサービス コールアウト アクションをコンフィグレーションする方法について説明します。
通信
サービス コールアウト] を選択します。
[サービス コールアウト] アクションが、ルーティング テーブルの [要求アクション] パイプラインに追加されます。
このタスクで、creditRating Web サービスを呼び出すサービス コールアウトのコンフィグレーションが完了します。この Web サービスから返された信用格付けが $creditRating コンテキスト変数に割り当てられます。
この節では、LoanSaleProcessor ビジネス サービスのパブリック規約 (インタフェース要件) を満たすようにメッセージのトランスフォーメーションをコンフィグレーションします。プロキシ サービスを次のようにコンフィグレーションします。
.//java:*
この式では、プレフィックス java が付いたすべてのネームスペースが識別されます。
body コンテキスト変数でプレフィックスが java であるすべてのネームスペースを検出する XPath 式の作成が完了しました。次のタスクでは、XPath 式で検出されたネームスペースを置換するネームスペースを指定します。
| 注意 : | この例では、置換前のデフォルトのネームスペースは java:normal.client です。 |
図 4-14 に示すように、[名前変更する] アクションが表示されます。
メッセージ処理
挿入する] を選択します。
[挿入する] アクションのコンフィグレーション フィールドが [要求アクション] ペインに追加されます。
図 4-15 に示すように、新しいネームスペースが [ネームスペース定義] パレットの [ユーザ定義済みネームスペース] 領域に表示されます。
<lg:CreditRating>{data($creditRating)}</lg:CreditRating>
実行時に、CreditRating ビジネス サービスによって、$creditRating 変数に信用格付けの値が割り当てられます。このビジネス サービスは、「サービス コールアウト アクションの追加」でサービス コールアウト アクションをコンフィグレーションしたビジネス サービスです。
./exam:processLoanApp/loanRequest/java:Notes
| 注意 : | ドラッグ アンド ドロップ機能を使用できるのは Internet Explorer (IE) ブラウザのみです。IE 以外のブラウザを使用している場合は、[変数の構造] ペインで Notes 要素を選択します。XPath 式が [プロパティ インスペクタ] パレットに表示されます。パレットの式をコピーし、XPath 式のテキスト ボックスに貼り付けます。 |
./exam:processLoanApp/loanRequest/lg:Notes
図 4-16 に示すように、[挿入する] アクションが表示されます。
このタスクで、発信メッセージのコンフィグレーションが完了します。信用格付け要素をメッセージに追加し、メッセージのネームスペースを変更して、メッセージが対象サービスのパブリック規約 (インタフェース) に準拠するようにしました。
発信メッセージのコンフィグレーションは、次の図に示すように表示されます。

次のタスクでは、LoanGateway2 プロキシ サービスの応答アクションをコンフィグレーションする方法を説明します。
この節では、プロキシ サービスからクライアントに返されるメッセージがクライアントのパブリック コントラクト (WSDL) に準拠するようにルーティング テーブルの応答アクションをコンフィグレーションする方法を説明します。プロキシ サービスは次のようにコンフィグレーションできます。
[削除する] アクションのコンフィグレーション フィールドが、[ルーティング テーブル] の [応答アクション] に追加されます。
[削除する] アクションのコンフィグレーションは次のようになります。
変数 body の ./exam:processLoanAppResponse/return/lg:CreditRating を削除します (図 4-18 を参照)。
メッセージを応答パイプラインで処理するときに、応答メッセージから <CreditRating> 要素を削除するよう Oracle Service Bus をコンフィグレーションしました。
この節では、ネームスペースを、クライアントで使用するネームスペースの名前 (java:normal.client) に変更する方法を説明します。
| 注意 : | LoanSaleProcessor ビジネス サービスへの要求メッセージで、ネームスペースを対象サービスで使用するネームスペースに変更しました (「メッセージのネームスペースの変更」を参照してください)。 |
メッセージ処理
名前変更する] を選択します。
[名前変更する] アクションのコンフィグレーション フィールドが [応答アクション] パイプラインに追加されます。
図 4-19 に示すように、応答メッセージでプレフィックス lg: が付いたすべてのネームスペースを java:normal.client に変更するように指定するタスクを完了しました。
このタスクを完了すると、プロキシ サービスの応答アクションのコンフィグレーションは、図 4-20 に示すように表示されます。

LoanGateway2 プロキシ サービスのルーティング テーブルのコンフィグレーションの最後のタスクでは、デフォルト ルーティング ケース (else 条件) をケース式に追加します。
この節では、LoanGateway2 プロキシ サービスのルーティング テーブルにデフォルト ルーティング ケースをコンフィグレーションする方法を説明します。実行時に、ルーティング テーブルに設定された条件が 1 つも満たされない場合、このデフォルト ケースのコンフィグレーションに従ってメッセージがルーティングされます。
デフォルト ケースが [ステージ コンフィグレーションの編集] ページのルーティング テーブルの下に追加されます。
プロキシ サービスのメッセージ フローのマップが表示されます。
この節では、テスト コンソールを使用して融資申し込みをテストする方法について説明します。融資申し込みをテストするには、まず WebLogic Server Console でクライアント jar をデプロイする必要があります。詳細については、「クライアント アプリケーションのロード」を参照してください。
<loanRequest xmlns:java="java:normal.client">
<!--Optional:-->
<java:Name>Smith</java:Name>
<!--Optional:-->
<java:SSN>1234567</java:SSN>
<!--Optional:-->
<java:Rate>5</java:Rate>
<!--Optional:-->
<java:Amount>900000000</java:Amount>
<!--Optional:-->
<java:NumOfYear>10</java:NumOfYear>
<!--Optional:-->
<java:Notes>大口融資処理</java:Notes>
</loanRequest>
その他のデフォルト設定をそのまま使用し、[実行] をクリックします。応答は、図 4-22 のようになります。

[呼び出しのトレース] は、要求融資額が 2,500 万ドルより多いため、申し込みが LoanGateway2 プロキシ サービスから、要求を処理した LoanSale プロセッサにルーティングされたことを示します。
<loanRequest xmlns:java="java:normal.client">
<!--Optional:-->
<java:Name>Smith</java:Name>
<!--Optional:-->
<java:SSN>1234567</java:SSN>
<!--Optional:-->
<java:Rate>5</java:Rate>
<!--Optional:-->
<java:Amount>2000000</java:Amount>
<!--Optional:-->
<java:NumOfYear>10</java:NumOfYear>
<!--Optional:-->
<java:Notes>標準融資</java:Notes>
</loanRequest>
その他のデフォルト設定をそのまま使用し、[実行] をクリックします。応答は、図 4-23 のようになります。

[呼び出しのトレース] は、要求融資額が 2,500 万ドル未満であるため、申し込みが LoanGateway2 プロキシ サービスから、要求を処理した NormalLoanApproval ビジネス サービスにルーティングされたことを示します。
このチュートリアルでは、トランスフォーメーションをコンフィグレーションし、ルート ノードのネームスペースを変更しました。代わりに、パイプライン ペアの要求パイプラインに同一のロジックをコンフィグレーションすることも可能です。トランスフォーメーションおよびネームスペース変更に必要な作業は、どちらの方法を選択しても同じです。
このチュートリアル シナリオの場合、既存のルート ノードの要求アクションおよび応答アクションにアクションを追加する方が、独立したパイプライン ペアを作成し、ステージを追加して、そのステージにトランスフォーメーション アクションを追加するよりも簡単です。
次のシナリオでは、実装の選択が重要となる状況について説明します。
ルート ノードは 5 つのサービスにメッセージをルーティングします。各サービスは同じトランスフォーメーションを要求します。このシナリオでは、すべてのルート ノードの各ルーティング コンフィグレーションで同一のトランスフォーメーションを 5 つコンフィグレーションするよりも、単一のトランスフォーメーションを要求パイプラインに追加することをお勧めします。実行時の実行コストは同じですが、同一のトランスフォーメーションを 5 つコンフィグレーションする実装の方が、メンテナンス、コンフィグレーション、および理解により多くのコストと労力を要します。
|