原典情報: $ORACLE_HOME\owb\misc\mappingWS\readme.txt
スクリプトuse_webservice_in_mapping.tclは、マッピング内でWebサービスを使用するために使用されます。これは、ファンクションによって実装されます。
このスクリプトの実行後に、エキスパート・モジュールWSDL_UTLとパブリック変換パッケージWB_WEBSERVICEが作成されます。
WB_WEBSERVICEには、2つの変換と1つのプロシージャがあります。
HTTP_SET_PROXY: このプロシージャは、UTL_HTTPコールに対するHTTPプロキシの設定に使用され、通常は、マッピングでpre_processとして使用されます。
WS_INVOKE_P: このファンクションは、UTL_HTTPパッケージを介してWebサービスをコールします。
WS_INVOKE: WS_INVOKE_Pの特別なケースで、パラメータはありません。
WSDL_UTLには、2つのエキスパートがあります。
CREATE_FUNCTION_FROM_WSDL: このエキスパートは、WSDLファイルに基づいてファンクションを生成します。生成されたファンクションは、WS_INVOKE_PをコールしてWebサービスをコールします。
CREATE_UTILS_FROM_WSDL: このエキスパートは、プラッガブル・マッピングを生成します。UTL_HTTPコールで返されたXMLドキュメントから値を抽出する場合に使用されます。
ファンクションおよびプラッガブル・マッピングが生成された後は、これらをマッピングで使用してWebサービスをコールし、結果を取得できます。
スクリプトを実行する前に、リポジトリ所有者情報など、スクリプトの情報を変更する必要があります。
use_webservice_in_mapping.tclはtclスクリプトです。このスクリプトは、「OMBPlus.sh use_webservice_in_mapping.tcl」と指定して実行するか、最初にOMBPlusを実行した後、ソースとしてスクリプトを指定します。
このスクリプトを(vncの場合と同様に)X11 DISPLAYで実行していることを確認してください。X11 DISPLAYが使用できない場合は失敗します。
スクリプトの実行後は、エキスパートとファンクションが作成されます。 これで、OWBクライアントにログインして、パブリック・プロジェクトに移動し、エキスパートを実行できます。
エキスパートを実行する前に、最初にプライベート・プロジェクトを入力する必要があります。入力すると、エキスパートによって、処理するWSDLファイルを選択するように要求されます。次に、生成されたファンクションまたはプラッガブル・マッピングの格納に使用する名前を指定する必要があります。 生成されたファンクションは、パブリック・プロジェクトの「パブリック変換」に格納され、プラッガブル・マッピングは、選択したプライベート・プロジェクトの「プラッガブル・マッピング」に格納されます。
対応するファンクションの生成後、そのファンクションは、通常のファンクションと同様にマッピング内で使用できます。 WSDLの例は、http://www.dataaccess.nl/wk2006/footballpoolwebservice.wso?WSDLを参照してください。
通常のプロセスは次のとおりです。
Citiesなどのマッピングにファンクションを追加します。
ファンクションに対する入力を指定します(ある場合)。
値を抽出するためのプラッガブル・マッピングを選択します。正しいプラッガブル・マッピング名は、操作の出力メッセージであるWSDLから取得できます。ここではCITIESRESPONSEです。
アップストリーム・プラッガブル・マッピングの戻り結果を確認します。戻り結果が目的としている単純型の場合、処理は完了です。それ以外の場合は、複合型を抽出するためのプラッガブル・マッピングの検索を続行します。 ここでは、CITIESRESPONSEの戻り結果はCITIESRESULTであり、まだ複合型です。このため、さらに抽出するために、CITIESRESULTプラッガブル・マッピングも追加します。 CITIESRESULTの出力は単純型です。したがって、抽出プロセスは完了です。 これで、値をターゲット表にロードできます。
WebサービスのコールにUTL_HTTPを使用しているため、これに対するHTTPプロキシを設定する必要があります。 設定すると、「マッピング前プロセス」を追加してHTTP_SET_PROXYプロシージャにバインドし、「マッピング入力パラメータ」を使用してプロシージャに値を指定できます。
マッピングの式にextractValueを使用しているため、マッピングの生成モードを「セット・ベース」に変更します。
WB_WEBSERVICEパッケージをデプロイし、使用済ファンクションをデプロイし(コントロール・センターに移動し、Oracleモジュールを選択すると、パブリック変換を検索できます)、マッピングと関連表をデプロイします。
マッピングを実行して結果を取得します。
次の点に注意する必要があります。
Oracle 11gではセキュリティ機能が拡張されているため、WebサービスのURLをACLに追加する必要があります。追加しない場合は、正しい結果が取得されません。
プラッガブル・マッピングはカーディナリティの変更演算子として処理されるため、異なるグループからターゲット表に属性を接続するために、JoinまたはSet演算子を使用する必要がある場合があります(拡張のOracle Bug#4319045)。または、プラッガブル・マッピングは参照するのみにして、独自の式演算子を作成することもできます。