この章では、Oracle Data IntegratorのWebサービスでの使用方法について説明します。
この章では、次の項目について説明します。
Oracle Data Integratorは、サービス指向アーキテクチャ(SOA)への次のエントリ・ポイントを提供します。
図15-1は、異なるタイプのWebサービスが相互作用する方法を示しています。
この図は、データ・サービス、ランタイムWebサービス(パブリックWebサービスおよびエージェントWebサービス)およびOdiInvokeWebServiceツールを含む単純な例を示しています。
データ・サービスおよびランタイムWebサービスのコンポーネントはサードパーティ・アプリケーションによって呼び出されるのに対し、OdiInvokeWebServiceツールはサードパーティWebサービスを呼び出します。
データ・サービスは、データストア(ソースおよびターゲットの両方のデータストア)に含まれるデータ、ならびにチェンジ・データ・キャプチャ・フレームワークによりトラップされた変更内容へのアクセスを可能にします。このWebサービスはOracle Data Integratorによって生成され、Java EEアプリケーション・サーバーにデプロイされます。
パブリックWebサービスは、リポジトリに接続してコンテキストおよびシナリオのリストを取得します。このWebサービスはJava EEアプリケーション・サーバーにデプロイされます。
エージェントWebサービスは、Oracle Data Integratorエージェントに対してシナリオの開始と監視およびセッションの再開を命令します。このWebサービスはJava EEエージェントまたはスタンドアロン・エージェントに組み込まれている点に注意してください。
OdiInvokeWebServiceツールはパッケージで使用され、サードパーティWebサービスのポート上で、特定の操作(BPELプロセスのトリガーなど)を呼び出します。
Oracle Data IntegratorのランタイムWebサービスとデータ・サービスは、2つの異なるタイプのWebサービスです。Oracle Data IntegratorのランタイムWebサービスでは、WebサービスによってOracle Data Integratorの機能にアクセスできますが、データ・サービスはOracle Data Integratorによって生成され、Webサービスを使用してデータにアクセスできます。
データ・サービスは、データストアに含まれるデータ、ならびにチェンジ・データ・キャプチャを使用してこれらのデータストア用に取得された変更内容へのアクセスを可能にする、特殊なWebサービスです。これらのWebサービスはOracle Data Integratorによって自動生成され、アプリケーション・サーバーのWebサービス・コンテナにデプロイされます。
データ・サービスの設定、生成およびデプロイ方法の詳細は、第8章「データ・サービスの使用」を参照してください。
Oracle Data Integratorランタイム・サービスは、サービス指向アーキテクチャ(SOA)でユーザーがOracle Data Integratorの機能を活用できるようにするWebサービスです。これらのWebサービスはサードパーティ・アプリケーションによって開始され、Oracle Data Integratorで開発されたシナリオの開始を管理します。
ODIランタイム・サービスにより各種ODI実行タスク(シナリオの実行、セッションの再開、実行コンテキストおよびシナリオのリストなど)を実行する方法については、21.11項「Webサービスを使用した実行の管理」を参照してください。21.11項では、SOAPリクエストおよびレスポンスの例も示しています。
この項では、Oracle Data IntegratorにおけるサードパーティWebサービスの呼出し方法について説明します。
この項の内容は次のとおりです。
Webサービスは次のように呼び出せます:
Oracle Data IntegratorパッケージまたはプロシージャでOdiInvokeWebServiceツールを使用: このツールでは、サードパーティWebサービスを呼び出し、Oracle Data Integratorで処理可能なXMLファイルにレスポンスを保存できます。
データ・サービスのテスト目的: 生成したデータ・サービスが正しく動作しているかどうかをテストする最も簡単な方法は、OdiInvokeWebServiceツールのグラフィカル・インタフェースを使用する方法です。詳細は、15.4.2項「OdiInvokeWebServiceツールの使用」を参照してください。
OdiInvokeWebServiceツールでは、HTTPまたはHTTPSプロトコルを使用してWebサービスを呼び出し、返されたレスポンスをXMLファイルに書き込むことができます。レスポンスは、XMLペイロード、またはSOAPのヘッダーと本文が含まれている完全なSOAPメッセージで書き込まれます。OdiInvokeWebServiceツールでは、記述ファイル(WSDL)のURLが提供されるWebサービスのポート上で特定の操作を呼び出します。この操作にSOAPリクエストが必要な場合は、リクエスト・ファイルまたはツール・コマンドで提供されます。Webサービス・リクエストのレスポンスは、Oracle Data Integratorで使用可能なXMLファイルに書き込まれます。
注意: Webサービス操作が一方向でレスポンスを返さない場合、レスポンス・ファイルは生成されません。 |
Webサービス・リクエストの作成方法の詳細は、15.4.3項「統合フローにおけるWebサービスの呼出し」を参照してください。
注意: XMLペイロードの形式を使用すると、OdiInvokeWebServiceツールでは、リクエストのSOAPヘッダーがサポートされません。たとえば、保護されたWebサービスの呼出しなど、SOAPヘッダーを処理するためには、完全なSOAPメッセージを使用して、SOAPヘッダーを手動で変更します。 |
このツールは、パッケージのツール・ステップで、およびプロシージャやナレッジ・モジュールで、標準のOracle Data Integratorツールとして使用されます。パッケージにおけるツール・ステップの作成方法は10.3.1.4項「Oracle Data Integratorツール・ステップの追加」を、またOdiInvokeWebServiceツール・パラメータの詳細は付録A「OdiInvokeWebService」を参照してください。
OdiInvokeWebServiceツールには、コードを生成するための拡張エディタが用意されています。この拡張エディタは、パッケージ内でOdiInvokeWebServiceツールを使用する場合またはデータ・サービス・テストを実行する場合に使用できます。この拡張エディタでは、次の操作が可能です。
WSDLへの接続
「プロパティ」ペインで指定されたパラメータに加えて、ツールのパラメータを指定する
自動選択されたポートにおける特定の操作を選択し、SOAPエディタでリクエスト・パラメータを指定する
Webサービスの呼出し
SOAPエディタでのWebサービス・レスポンスの閲覧
図15-2では、拡張エディタの概要を示しています。
拡張エディタは、表15-1に説明するセクションで構成されています。
表15-1 拡張エディタの各セクション
セクション | アイコン名 | 図の中の位置 | 説明 |
---|---|---|---|
Webサービス記述 ファイル(WSDL)のURL |
上 |
ここには、WSDLの場所を入力します。 |
|
ポート |
左 |
Webサービスのポートがデフォルトで設定されます。Webサービスで複数のポートを使用できる場合は、適切なポートを選択します。 |
|
Webサービスの呼出し |
ツールバー・アイコン |
現在のWebサービスをすぐに呼び出し、SOAPエディタにレスポンスを表示します。 |
|
|
パネル位置の切替え |
ツールバー・アイコン |
SOAPエディタを垂直または水平に並べて表示します。 |
レスポンスXSDのエクスポート |
ツールバー・アイコン |
現在のレスポンスXMLスキーマ記述をファイルに保存します。 |
|
デフォルトのリクエストに戻す |
ツールバー・アイコン |
現在のリクエストを破棄して、デフォルトの空白のリクエスト構造に戻します。 |
|
空のオプション・コンポーネントの削除 |
ツールバー・アイコン |
すべての空のオプション・コンポーネントを問合せから削除します。有効な問合せを作成するために、この操作が必要になる場合があります。 |
|
実行前のクリーンアップ |
ツールバー・アイコン |
「Webサービスの呼出し」をクリックすると、SOAPリクエストにある空のオプション要素が自動的に削除されます。実行時のパッケージ・ステップでは、このチェックボックスは機能しません。 |
|
リクエスト・ファイルの使用 |
ツールバー・アイコン |
SOAPエディタで指定されたパラメータのかわりに、ファイルに格納されたSOAPリクエストを使用します。 |
|
タイムアウト(ミリ秒) |
ツールバー・アイコン |
リクエストの完了を待つ最長期間を指定します。 |
|
操作 |
選択したポートの操作リスト。 |
||
オプション |
HTTPリクエストのオプション:
|
||
SOAPエディタ |
中央と右 |
SOAPエディタの左パネルまたは「ソース」タブにWebサービス・リクエストが表示され、右パネルにSOAPレスポンスが表示されます。 |
SOAPエディタ
SOAPエディタでは、WebサービスのXMLリクエストを図を使用して作成し、レスポンスを表示できます。
OdiInvokeWebServiceステップを作成している場合、SOAPエディタに入力されたこのSOAPリクエストはそのステップにより保存されます。
エディタの左側にはリクエストの構造が表示され、右側にはレスポンスの構造が表示されます。この配置を変更するには、「パネル位置の切替え」をクリックします。リクエストは、階層形式のエディタ表示(「SOAPエディタ」タブ)またはXML形式(「ソース」タブ)のいずれかで表示されます。「SOAPエディタ」タブを使用している場合は、SOAPエンベロープの本文のみを編集できます。SOAPヘッダーを含めたエンベロープ全体を編集または表示するには、「ソース」タブを使用する必要があります。
エディタでは、リクエストの各要素の値(およびオプションで属性)を入力できます。
警告: 空の要素は、Webサービスにそのまま渡されます。文字列の場合、これは空の文字列に相当します。数値タイプまたは日付タイプの場合、これはエラーの原因となる可能性があります。nullの文字列、数値または日付を送信する場合、 |
オプションの要素はイタリックで表示されます。繰返し可能な要素は、名前の後に...(n*)が付けられます。
任意の要素を右クリックして、次のいずれかの操作を実行できます(可能な場合)。
コンテンツの複製: 要素の構造およびコンテンツをコピーします。
構造の複製: 構造をコピーしますが、すべてのフィールドが空のままとなります。
削除: 要素を削除します。
エクスポート・リクエスト: SOAPリクエスト全体をXMLファイルにエクスポートします。
結果
インタフェースのこの部分は、OdiInvokeWebServiceツール・ステップをパッケージで使用している場合にかぎり、レスポンスをXMLファイルに書き込む方法を制御するために表示されます。
ファイル・モード(-RESPONSE_MODE
): NEW_FILE、FILE_APPEND、NO_FILEのいずれか
結果ファイル(-RESPONSE_FILE
): 書き込む結果ファイルの名前
結果ファイルの形式(-RESPONSE_FILE_FORMAT
): Webサービス・レスポンス・ファイルの形式(使用可能な値はXML (デフォルト)とSOAP)
XMLキャラクタ・セット(-RESPONSE_XML_ENCODING
): XMLファイルに書き込む文字エンコーディングの名前
Javaキャラクタ・セット(-RESPONSE_FILE_CHARSET
): ファイルの書込み時に使用される文字エンコーディングの名前
これらのパラメータの詳細は、A.6.22項「OdiInvokeWebService」を参照してください。
注意: 結果ファイル・パラメータは、実行時にのみ考慮されます。「Webサービスの呼出し」をクリックした際に、結果ファイルは生成されません。 |
OdiInvokeWebServiceツールを使用したWebサービスのコール
Webサービスをコールするには:
パッケージでOdiInvokeWebServiceツール・ステップを作成するか、データストアを右クリックしてコンテキスト・メニューの「Webサービスのテスト」を選択します。
WSDLの場所を入力します。次のいずれかを使用できます。
サーバーにデプロイされたWSDLのURL (例: http://host:8080/services/WSCustomer?wsdl
)
ローカル・ファイルの位置(例: c:/DataServices/WSCustomer.wsdl
)
ポートを選択します(複数のポートが使用可能な場合)。
左側のリストから操作を選択します。
SOAPエディタで、Webサービス・ペイロードを入力します。OdiInvokeWebServiceツールでは、SOAPリクエストのXML本文のみ、またはSOAPのヘッダーと本文で構成される完全なSOAPエンベロープの2つのWebサービス・リクエスト形式をサポートしています。
注意: 入力形式(リクエスト)と出力形式(レスポンス)は独立しています。Oracle Data Integratorでは、入力メッセージ形式が自動的に認識され、RESPONSE_FILE_FORMAT (デフォルトはXML)に従ってレスポンスが書き込まれます。ただし、拡張エディタでは、リクエスト・ファイル形式によって、レスポンス・ファイル形式が決まります。XMLペイロード・メッセージを使用して呼出しをテストすると、レスポンスはXMLペイロードになります。完全なSOAPメッセージを使用してテストすると、レスポンスは完全なSOAPメッセージになります。Oracle Data IntegratorでWebサービス・リクエスト・ファイルを生成する方法は、リクエスト・ファイルの生成を参照してください。 |
(オプション)「空白のオプション要素の削除」をクリックして、指定されていないオプション・リクエスト・パラメータを削除します。一部のWebサービスでは、空の要素は無効として処理されます。
「Webサービスの呼出し」をクリックして、Webサービスをすぐに呼び出します。レスポンスはSOAPエディタの右側ペインに表示されます。
OdiInvokeWebServiceツール・ステップを作成している場合、レスポンス・ファイル・パラメータを定義します。
「ファイル」メニューから、「保存」を選択します。
レスポンス・ファイルの処理
OdiInvokeWebServiceツールを使用してWebサービスをコールする場合、レスポンスはXMLファイルに書き込まれます。
このXMLファイルの処理は、次のガイドラインを使用してOracle Data Integratorで実行できます。
Webサービスを一度呼び出し、「レスポンスXSDのエクスポート」オプションを使用してXMLスキーマをエクスポートします。
このXMLスキーマ・ファイルに基づいてレスポンス・ファイルのXMLモデルを作成し、XSDをリバースエンジニアリングしてモデル構造を取得します。
XMLテクノロジの標準Oracle Data Integratorインタフェース・ソースを使用して、レスポンスの情報を処理できます。
XMLファイル処理の詳細は、Oracle Data Integrator接続性およびモジュール・ガイドを参照してください。
注意: Oracle Data Integratorにおいて各XMLファイルはモデルとして定義されます。リクエストまたはレスポンス・ファイルにXMLファイル処理を使用する際に、リクエストまたはレスポンス・ファイルごとにモデルが作成されます。モデルを配置するにはモデル・フォルダを使用することをお薦めします。詳細は、18.2項「フォルダによるモデルの編成」を参照してください。 |
Oracle Data Integratorでは、Webサービス・レスポンスを処理するためのOdiXMLConcatおよびOdiXMLSplitツールが用意されています。これらのツールの使用方法は、付録A「カテゴリごとのODIツール」のXMLの項を参照してください。
リクエスト・ファイルの生成
リクエスト・ファイルを作成するには、複数の方法があります。
OdiInvokeWebServiceツールの「拡張」タブにあるSOAPエディタで、リクエストを直接作成します。使用可能な形式はXMLです。
レスポンス・ファイルの処理を実行する場合と同様に、XMLドライバを使用します。XMLドライバを使用してリクエスト・ファイルを生成する場合、リクエストは完全なSOAPではなく、簡略化されたXML形式になります。テンプレート・リクエストの生成にはSOAPエディタを使用してください。
ODIを使用して以前に生成した外部リクエスト・ファイルを使用します。使用可能な形式はXMLおよびSOAPです。
SOAPリクエストを作成します。SOAPリクエストを生成するには、たとえば、JDeveloperによって提供されるHTTPアナライザなど、サードパーティ・ツールを使用する必要があります。詳細は、Oracle SOA Suite開発者ガイドのHTTPアナライザの使用に関する説明を参照してください。
SOAPリクエストを使用してWebサービスをコールするには、OdiInvokeWebServiceツールを使用したWebサービスのコールで説明している標準の手順を実行し、次の手順を実行してWebサービス・リクエストをSOAP形式で作成します。
サードパーティ・ツールでSOAPリクエストを作成します。
SOAPリクエストをコピーし、ODI StudioのSOAPエディタの「ソース」タブに、SOAPメッセージ全体を貼り付けます。
オプションで、リクエストを編集します。
Webサービス・レスポンスはSOAP形式になります。
リクエストに対するバインディング・メカニズムの使用
プロシージャでWebサービス・コールを使用する場合、バインディング・メカニズムを使用できます。この方法では、問合せによって返された行ごとにWebサービスをコールし、行の値に基づいてリクエストをパラメータ化できます。詳細は、バインディングのソースおよびターゲット・データを参照してください。