プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle SOA SuiteでのSOAアプリケーションの開発
12c (12.2.1.2.0)
E82771-02
目次へ移動
目次

前
次

36 REST操作とSOAコンポジット・アプリケーションとの統合

この章では、REST (Representational State Transfer)操作をサービス・バインディング・コンポーネントおよび参照バインディング・コンポーネントとしてSOAコンポジット・アプリケーションに統合する方法について説明します。また、バインディング・コンポーネント構成中のWebアプリケーション記述言語(WADL)ファイルの使用方法についても説明します。

この章の内容は次のとおりです。

RESTアダプタの使用方法の詳細は、『Oracle SOA Suiteの理解』のRESTサービスによる出荷リソースの定義に関する説明を参照してください。

36.1 RESTサポートの概要

RESTは、ネットワーク・アプリケーションの設計用のアーキテクチャです。RESTfulアプリケーションは、HTTPリクエストを使用してデータのポスト(作成と更新)、データの取得(たとえば問合せの作成)、データの更新およびデータの削除を実行します。RESTは、Webサービスを使用するかわりの方法となります。

12.2.1から、SOAコンポジットでエンドツーエンドのJSONを使用できるようになりました。すなわち、RESTサービスはRESTリクエストを受信し、XMLに変換することなくBPELエンジンにルーティングすることができます。BPELコンポーネントはJavaScriptアクションを使用して、さらに条件付きおよび反復コンストラクトでJavaScriptを使用して、JSONオブジェクトで直接動作できます。REST参照はBPELエンジンからRESTメッセージを受信し、変換することなく外部RESTエンドポイントにルーティングできます。

注意:

RESTインタフェースとBPELコンポーネントはエンドツーエンドのJSONをサポートしています。ただし、メディエータのような他のサービス・コンポーネントを使用している場合は、RESTリソースと動詞をWSDL操作とXMLスキーマに内部的にマッピングして着信ペイロードをXMLに変換する、12.1.3スタイルのコンポジットを使用する必要があります。

Oracle SOA Suiteでは次のRESTサポートを提供します。

  • SOAコンポジット・アプリケーションでのサポート:

    • エンドツーエンドのJSONの有効化

    • 新規または既存のサービスでのRESTサポートの有効化。

    • 外部REST APIとの統合。

    • RESTful状態遷移セットの編成 (RPC/HATEOAS (Hypermedia as the Engine of Application State)アプローチ)。

    • XML、JavaScript Object Notation (JSON) (XMLへおよびXMLからの自動翻訳を含む)、テキスト、不透明(Opaque)(バイナリ)およびURLエンコード・ペイロード・データのサポート。

    • RESTサービス操作用のサンプルURIの生成。

    • WADLサービスのサポート。WADLは、デプロイ済のOracle SOA SuiteまたはOracle Service Busサービス、あるいはJersey RESTサービスなど、Oracle SOA SuiteまたはOracle Service Bus以外のサービスでも提供できます。

  • 開発の容易さ:

    • Oracle JDeveloperウィザードには、RESTインタフェースおよびWSDL操作バインディングをモデル化するためのいくつかのオプションが用意されています。

      • REST定義からWSDLへのマッピングが含まれる基礎となるWSDLを生成するための、リソース・パスおよびREST操作の手動による定義。

      • WSDL操作をリソース・パスおよびHTTP動詞にマッピングするサービス・コンポーネントまたは外部参照のWSDLの選択。

      • RESTアダプタに操作マッピングを自動的に移入する多数のソース(たとえば、アプリケーション・サーバーやSOA-MDS)からのWSDLの選択。

    • 開発時に使用する各メソッドを公開する読取り可能API。

    • Oracle JDeveloperからOracle RESTエンドポイント(Oracle Service Busなど)をブラウズおよび消費可能。

  • Oracle Web Service Manager (OWSM)ポリシーのRESTセキュリティのサポート。

  • 次のユースケースをサポートします。

    • 顧客リストの取得

    • 新規顧客の作成

    • 顧客の詳細情報の取得

    • 顧客の詳細情報の更新

    • 顧客の削除

    • 顧客の新住所の作成

    • 顧客の住所の取得

    • 顧客の住所の更新

36.2 サービスおよび参照バインディング・コンポーネントにおけるRESTサポートの作成

Oracle SOA Suiteコンポーネント、サービスおよび参照は、RESTサービスとして選択および公開できます。この項では、次のタスクの実行方法について説明します。

  • 既存のSOAコンポジット・アプリケーションのサービス・バインディング・コンポーネントとしてRESTサポートを追加します。

  • SOAコンポジット・アプリケーションから起動できる参照バインディング・コンポーネントとしてRESTサポートを追加します。

  • ショートカットを使用してRESTサポートを構成します。

  • RESTスキーマを生成します

  • ホスト、ポートおよびプロトコル値のグローバル・トークン変数を使用します。

注意:

  • RESTバンディングは、非同期コンポーネント(例: 非同期BPELプロセス)に添付できません。この添付を試みると、この操作はサポート対象ではないため、RESTサービスと一方向インタフェースを持つサービスの間にOracle Mediatorを配置し、サービス・コールバックを別の(アウトバウンド) RESTアダプタにルーティングするための回避策の提案を示すメッセージが表示されます。

  • RESTサービス・バインディング・コンポーネントはREST参照バインディング・コンポーネントに接続できません。

36.2.1 SOAコンポジット・アプリケーションのRESTバインディング・コンポーネントを構成する方法

この項では、RESTバインディング・コンポーネントをSOAコンポジット・アプリケーションに追加する方法について説明します。RESTバインディング・コンポーネントをサービスまたは参照バインディング・コンポーネントとして追加できます。

RESTアダプタをSOAコンポジット・アプリケーションのサービスまたは参照バインディング・コンポーネントとして構成する手順:

  1. JDeveloperで、RESTサービスまたは参照コンポーネントをコンポジット・ビューの適切なスイムレーンに追加します。「コンポーネント」ウィンドウからRESTコンポーネントをドラッグすることもできます。
    • RESTサービス・コンポーネントを追加するには、SOAコンポジット・エディタの「公開されたサービス」スイムレーンを右クリックし、「挿入」「REST」を選択します。この操作で、適切なサービス・コンポーネントと相互作用するサービス・バインディング・コンポーネントとしてRESTサポートを追加できます。

    • REST参照コンポーネントを追加するには、SOAコンポジット・エディタの「外部参照」スイムレーンを右クリックし、「挿入」「REST」を選択します。この操作で、外部RESTエンドポイントと相互作用する参照バインディング・コンポーネントとしてRESTサポートを追加できます。

    RESTバインディング構成ウィザードが表示されます。

    RESTバインディング構成ウィザード

  2. RESTサービスまたは参照の名前を入力します。

    タイプフィールドにRESTバインディングのタイプが表示されます。これは、RESTサービスの場合は「サービス」、REST参照の場合は「参照」です。

  3. オプションで「サービスはWSDLインタフェースを使用してコンポーネントを起動します」または「参照はWSDLインタフェースを使用してコンポーネントによって起動されます」オプションを選択します。

    • RESTサービスの場合、コンポジットで内部的にXMLスキーマとWSDL操作が使用される場合は、「サービスはWSDLインタフェースを使用してコンポーネントを起動します」を選択します。

    • REST参照の場合、コンポジットで内部的にXMLスキーマとWSDL操作が使用される場合は、「参照はWSDLインタフェースを使用してコンポーネントによって起動されます」を選択します。

    12.2.1から、SOAコンポジットでエンドツーエンドのJSONを使用できるようになりました。すなわち、RESTサービスはRESTリクエストを受信し、XMLに変換することなくBPELエンジンにルーティングすることができます。BPELコンポーネントはJavaScriptアクションを使用して、さらに条件付きおよび反復コンストラクトでJavaScriptを使用して、JSONオブジェクトで直接動作できます。REST参照はBPELエンジンからRESTメッセージを受信し、変換することなく外部RESTエンドポイントにルーティングできます。

    デフォルトでは、新しいRESTサービス/参照バインディングはWADLを使用します。ただし、RESTリソースと動詞をWSDL操作とXMLスキーマに内部的にマッピングして、着信ペイロードをXMLに変換する12.1.3スタイルのコンポジットを使用する必要がある場合は、このオプションを選択します。コンポジットでWSDLベースの操作のみをサポートするメディエータのようなコンポーネントが使用される場合も、このチェック・ボックスを選択できます。

    • このオプションを選択すると、XMLスキーマの順序付けを強制オプションが表示されます。

      「XMLSchemaの順序付けを強制」を選択すると、XMLスキーマの順序付けが強制されます。

      選択すると、XMLスキーマの要素の順序付けと一致するようにJSONペイロードを並べ替えます。これには、インバウンド・リクエスト・ペイロードおよびアウトバウンド・リクエストからのレスポンスが含まれます。このオプションによって、パフォーマンスのオーバーヘッドが追加される可能性があります。

      このチェック・ボックスを選択すると、RESTサービス・バインディングのプロパティreorderJsonAsPerXmlSchemacomposite.xmlファイルでtrueに設定されます。

  4. 「次へ」 をクリックします。

    「リソース」ページが表示されます。

  5. 表36-1では、このページのフィールドについて説明します。

    表36-1 「リソース」ページ

    フィールド 説明
    構成ショートカット コンテキストに基づいて構成ショートカットを提供します。
    • RESTサービス・インタフェースの場合:

      • WADLベースのRESTサービスを作成する場合は、「WADLサービスからリソースとメソッドを追加」を選択できます。これにより、既存のWADLサービスを使用して、リソースとメソッドをRESTサービスに追加できます。

      • サービスがSDLインタフェースを使用してコンポーネントを起動する場合、「RESTコンポーネントや参照の有効化」および「REST外部Webサービスの有効化」オプションを選択できます。すなわち、選択したコンポーネントまたはサービスのフォルト・バインディングが、WSDLファイルで定義されたフォルトに基づいて自動的に生成されます。

        選択したWSDLが読み取られ、WSDL操作が、「リソース」ページの「操作バインディング」セクションのリソース・パスおよびHTTP動詞にマッピングされます。操作バインディングで追加の構成マッピングが必要な場合は、「完了」列の「いいえ」の値でそのことが示されます。

    • REST参照インタフェースの場合:

      「WADLサービスに基づいてリソースと操作のマッピングを追加」を使用して、WADLリソースからリソースと操作のマッピングを追加できます。WADLリソースは、ローカル・ファイル・システムまたはプロジェクト、デザインタイムOracle Metadata Servicesリポジトリ(MDSリポジトリ)あるいはアプリケーション・サーバーにあります。

    説明

    このフィールドは、RESTサービスに対して表示されます。

    RESTサービスの説明を入力します。この説明は、開発時に使用される読取り可能なAPIの一部として公開されます。

    ベースURI

    このフィールドは、REST参照に対して表示されます。

    インタフェースでサポートされているすべてのリソースのベースURI接続情報。例: http://search.mydomain.com/search.format

    リソース・パス

    デフォルト・リソース・パス(/)をダブルクリックしてリソース・パスを更新するか、「追加」をクリックして新しいリソース・パスを追加します。

    「相対パス」フィールドで、リソース・パス(この例では/orders)を入力し、「OK」をクリックします。

    操作バインディング

    このセクションは、RESTリソースと動詞をWSDL操作とXMLスキーマに内部的にマッピングして、着信ペイロードをXMLに変換する12.1.3スタイルのコンポジットを作成している場合に表示されます。

    「追加」をクリックして、新しい操作バインディングを追加します。

    既存の操作バインディングを選択して「編集」をクリックすることもできます。

    「追加」または「編集」をクリックすると、「REST操作バインディング」ダイアログが表示されます。「REST操作バインディング」ダイアログに表示されるフィールドの構成の詳細情報は、「「REST操作バインディング」ダイアログ」を参照してください。

    メソッド このセクションは、タイプ付きでないペイロードをスキーマなしで使用するWADLベースのサービスまたは参照を作成している場合に表示されます。

    「追加」をクリックして新しいメソッドを追加します。

    既存のメソッドを選択して「編集」をクリックすることもできます。

    「追加」または「編集」をクリックすると、「RESTメソッド定義」ダイアログが表示されます。「RESTメソッド定義」ダイアログに表示されるフィールドの詳細情報は、「「RESTメソッド定義」ダイアログ」を参照してください。

  6. 「終了」をクリックして、RESTバインディング構成を完了します。

36.2.1.1 「RESTメソッド定義」ダイアログ

「RESTメソッド定義」ダイアログを使用して、WADLおよびタイプ付きでないペイロードをスキーマなしで使用するSOA RESTサービスまたは参照のRESTメソッドを定義します。

表36-2 「RESTメソッド定義」ダイアログ

フィールド 説明

メソッド

定義するRESTメソッドの名前を入力します。

リソース

既存のURLリソース・パスをリストから選択するか、「追加」アイコンをクリックして新しいリソース・パスを追加します。

HTTP動詞

WSDL操作にバインドされる動詞(GETPUTPOSTDELETEなど)を選択します。

説明

説明を入力します(オプション)。これは、メソッドについて公開される説明テキストです。

リクエスト

「ペイロード」セクションでは、リクエスト・ペイロードの形式をJSON (デフォルト選択項目)、XML、URLエンコード、テキスト、不透明(Opaque)またはペイロードなしのいずれかに指定できます。「メソッドのサンプルURLを生成します」をクリックして、メソッド操作のサンプルURLを表示します。

「URIパラメータ」セクションでは、REST問合せまたはテンプレート・パラメータから対応するランタイム・プロパティへのマッピングを指定できます。

  1. 「メソッドのサンプルURLを生成します」アイコン(最初のアイコン)をクリックして、以前入力したすべてのバインディング情報に基づいてサンプルURLを生成します。このオプションは通常、すべてのパラメータを構成した後に選択します。

  2. 「パラメータの追加」アイコン(2番目のアイコン)をクリックして、マッピング・パラメータを手動で追加します。

  3. 「スタイル」で、「問合せ」または「テンプレート」を選択します。テンプレート変数は、通常、POST操作およびPUT操作に使用されます。問合せパラメータは、通常、GET操作およびDelete操作に使用されます。

  4. 「タイプ」で、パラメータのデータ型を選択します。すべてのXSDプリミティブ型がサポートされています。

  5. 「デフォルト値」で、パラメータの設計時のデフォルト値を設定できます。RESTリクエストにURIパラメータがない場合は、RESTサービスによって対応するデフォルト値が使用されます。

  6. 「ランタイム・プロパティ」に、メソッド・パラメータのマッピング先のランタイム・プロパティの名前が表示されます。

レスポンス

成功および失敗セクションでは、レスポンス・ペイロードとメソッドのステータスを選択できます。

デフォルトのレスポンス・ペイロードは「ペイロードなし」です。成功した操作のデフォルトのHTTPステータス・コードは204で、失敗した操作の場合は500です。

36.2.1.2 「REST操作バインディング」ダイアログ

「REST操作バインディング」ダイアログを使用し、WSDLインタフェースを使用してコンポーネントを起動するRESTサービスのREST操作を定義します。リソース・パスおよびREST操作を定義できます。REST定義からWSDLへのマッピングが含まれた基礎となるWSDLが生成されます。

表36-3 「REST操作バインディング」ダイアログ

フィールド 説明

操作

マッピングするWSDL操作名を表示します。生成されたWSDLで使用されている名前を指定できます。

リソース

既存のURLリソース・パスをリストから選択するか、「追加」アイコンをクリックして新しいリソース・パスを追加します。

選択したリソース・パスが、このダイアログの下部にある「リクエスト」セクションの「URIパラメータ」表に追加されます。選択したリソースに{var}などのテンプレート変数が含まれている場合、その変数がURIパラメータに追加されます。

HTTP動詞

WSDL操作にバインドされる動詞(GETPUTPOSTDELETEなど)を選択します。

この選択内容によって、受信REST問合せパラメータからWSDLスキーマへのマッピングが「URIパラメータ」表に移入されます。

操作のHTTP動詞は、「OK」をクリックした後に、「RESTバインディングの作成」ダイアログの「操作バインディング」セクションにも追加されます。

説明

説明を入力します(オプション)。参照バインディング・コンポーネントには、「ベースURI」フィールドがあります。

リクエスト

「スキーマ」セクションには、使用されているリクエスト・スキーマが表示されます。

  • スキーマURL: 使用するリクエスト・スキーマが表示されます。「RESTバインディングの作成」ダイアログで「RESTコンポーネントや参照の有効化」を選択した場合、スキーマはサービスの操作WSDLから取得されるため、このフィールドは読取り専用になります。「RESTバインディングの作成」ダイアログで「操作バインディングの追加」を選択した場合、スキーマを参照するか、ネイティブ・フォーマット・ビルダー・ウィザードを使用してサンプルから新しいスキーマを作成する必要があります。

  • 要素: 使用する要素が表示されます。

「ペイロード」セクションでは、リクエスト・ペイロードの形式をXML (デフォルト選択項目)、JSON、URLエンコードまたはペイロードなしのいずれかに指定できます。「サンプル・ペイロードの生成」をクリックして、選択したリクエスト・ペイロードのサンプルを表示します。

「URIパラメータ」セクションでは、REST問合せパラメータからWSDLスキーマへのマッピングを指定できます。このセクションは、「HTTP動詞」リストでスキーマを指定する際に(動詞に応じて)自動的に移入されます。GET動詞およびDELETE動詞では、パラメータはWSDLスキーマにバインドされます。POST動詞およびPUT動詞では、インバウンド・ペイロードがWSDLスキーマにマッピングされます。

  1. 「操作用のサンプルURLを生成」アイコン(最初のアイコン)をクリックして、以前入力したすべてのバインディング情報に基づいてサンプルURLを生成します。このオプションは通常、すべてのパラメータを構成した後に選択します。

  2. 「パラメータの追加」アイコン(2番目のアイコン)をクリックして、マッピング・パラメータを手動で追加します。

  3. 「スタイル」列で特定の行をクリックするとリストが呼び出され、このリストで問合せまたはテンプレートを選択できます。テンプレート変数は、通常、POST操作およびPUT操作に使用されます。問合せパラメータは、通常、GET操作およびDelete操作に使用されます。

  4. 「タイプ」列で、パラメータのデータ型を選択します。すべてのXSDプリミティブ型がサポートされています。多くの場合、パラメータがスキーマから自動的に生成されるときにタイプが設定されます。新しいパラメータを作成した場合は、「タイプ」列でリストからタイプを選択できます。

  5. 「デフォルト値」列で、パラメータの設計時のデフォルト値を設定できます。RESTリクエストにURIパラメータがない場合は、RESTサービスによって対応するデフォルト値が使用されます。

  6. 「式」列で特定の行をクリックすると、xpath-expression関数を追加するための「式ビルダー」ダイアログが表示されます。スキーマが操作に対して定義されていない場合、「式ビルダー」パラメータにはプロパティ変数のみが表示され、メッセージ変数は表示されません。式によってパラメータがWSDLスキーマのフィールドにバインドされます。パラメータが自動的に生成される(既存または生成されたスキーマに基づいて)すべての場合に、この式はすでに自動的に生成されています。新しいパラメータを追加する場合や実行時プロパティなどの別のものにバインドする場合にのみ、式を追加します。XPath式は、特定のURIパラメータを正規化されたメッセージに挿入する場所を指定します。

レスポンス

「HTTPステータス」セクションでHTTPステータス・コードを指定できます。空白で区切られた複数のステータスを入力できます。参照では、成功と解釈される可能性のあるステータスがあります。サービスでは、返すことができる可能性のある成功ステータス(BPELなどのサービス・コンポーネントによって設定)があります。

「ペイロード」セクションでは、可能なレスポンス・ペイロードであるXML (デフォルト)、JSONまたはペイロードなしを指定できます。実行時に返される出力は、受信リクエストに応じて異なります。「サンプル・ペイロードの生成」をクリックして、選択したレスポンス・ペイロードのサンプルを表示します。

「スキーマ」セクションには、可能なペイロードのタイプが選択されている場合に使用されるレスポンス・スキーマが表示されます。ペイロードなしが選択されている場合、このフィールドは表示されません。

  • スキーマURL: 使用するレスポンス・スキーマが表示されます。スキーマを指定していない場合は、既存のスキーマを参照するか、ネイティブ・フォーマット・ビルダー・ウィザードを使用してサンプルから新しいスキーマを作成するかを選択できます。このウィザードでは、JSON Interchangeフォーマット、XMLサンプル、URIエンコード形式またはURIサンプルのいずれかでスキーマを作成できます。詳細は、「サンプルからのスキーマの生成方法」を参照してください。

  • 要素: 使用する要素が表示されます。

「フォルト・バインディング」セクションには、レスポンス・フォルト名、タイプ、ステータスおよびスキーマが表示されます。フォルトの詳細がWSDLファイルで定義されている場合は、フォルト・バインディングがこのセクションに自動的に作成されます。フォルト・バインディングは、「追加」アイコンをクリックして、手動でも定義できます。フォルトの詳細は、「RESTフォルト・バインディングに関する必知事項」を参照してください。

36.2.2 例: 既存のRESTサービス・コンポーネントの有効化

RESTバインディング構成ウィザードの「構成ショートカット」からRESTコンポーネントやサービスの有効化 オプションを使用して、既存のRESTサービス・コンポーネントを有効化できます。

  1. SOAコンポジット・エディタの「公開されたサービス」スイムレーンを右クリックし、「挿入」「REST」を選択します。

    RESTバインディング構成ウィザードが表示されます。

  2. 「サービスはWSDLインタフェースを使用してコンポーネントを起動します」を選択します。

  3. 「次へ」 をクリックします。

  4. 「構成ショートカット」RESTコンポーネントやサービスの有効化を選択します。

    「サービス・エクスプローラ」ダイアログが表示されます。

  5. ナビゲータを開いて、サービス・コンポーネントのWSDL (この例ではBPELプロセス)を選択し、「OK」をクリックします。この操作で、WSDL操作をリソース・パスおよびHTTP動詞にマッピングできます。図36-1に詳細を示します。

    図36-1 REST操作をリソース・パスおよびHTTP動詞にマッピングするために選択されたWSDL

    図36-1の説明が続きます
    「図36-1 REST操作をリソース・パスおよびHTTP動詞にマッピングするために選択されたWSDL」の説明

    RESTバインディング構成ウィザードの「リソース」ページが更新され、図36-2に示すように表示されます。

    選択したWSDLが読み取られ、WSDL操作が、「操作バインディング」セクションのリソース・パスおよびHTTP動詞にマッピングされます。「リソース・パス」および「HTTP動詞」セクションには、構成マッピングを追加する必要があることに注意してください。これは、「完了」列の「いいえ」の値でも示されます。

    図36-2 RESTバインディング構成ウィザードの「リソース」ページ

    図36-2の説明が続きます
    「図36-2 RESTバインディング構成ウィザードの「リソース」ページ」の説明

    今度は、各操作のリソース・パスおよびHTTP動詞を構成する必要があります。この例では、操作は1回のみです。WSDLによっては、「操作」列に複数の操作が表示される可能性があります。

  6. 「リソース」セクションの「リソース・パス」表で、「/」のデフォルト・パス・エントリをダブルクリックします。操作バインディングを開始する前にリソース・パスを定義することもできます。この場合、選択されているリソースが新しいバインディングに使用されます。

    「RESTリソースの更新」が起動します。

  7. 「相対パス」フィールドで、リソース・パス(この例では/orders)を入力し、「OK」をクリックします。図36-3に詳細を示します。

    図36-3 「RESTリソースの更新」ダイアログ

    図36-3の説明が続きます
    「図36-3 「RESTリソースの更新」ダイアログ」の説明

    古いリソース・パスを持つ操作マッピングが、「リソース」セクションおよび「操作バインディング」セクション(この例では、/orders)の新しいリソース・パスで更新されます。既存のコンポーネントを更新する場合は、通常はすべての操作が更新されます。

    必要に応じて、「リソース」セクションの「追加」アイコンをクリックし、「RESTリソースの作成」ダイアログを表示して、リソース・パスを追加で作成できます。

    今度は、「操作バインディング」セクションの「HTTP動詞」列を構成する必要があります。

  8. 「操作バインディング」セクションで操作を選択して、「編集」をクリックします。

    「REST操作バインディング」ダイアログが表示されます。

    このダイアログを使用して、操作のHTTP動詞を選択し、HTTP動詞およびリソースをWSDL操作にバインドしてRESTパラメータをコンポーネント・サービスのWSDLスキーマにマッピングするために「URIパラメータ」セクションに移入できます。「「REST操作バインディング」ダイアログ」で、このダイアログのフィールドについて説明しています。

  9. 必要に応じて、「リソース」リストで新しいリソースを選択します。

    「URIパラメータ」セクションが更新され、選択内容が反映されます。

  10. 「HTTP動詞」リストで操作(この例ではGET)を選択します。

    「URIパラメータ」セクションが更新され、選択内容が反映されます。

    スタイル(queryまたはtemplate)は、「URIパラメータ」セクションの「スタイル」列で自動的に選択されます。

    テンプレート変数を含む新規RESTリソースを選択または作成する場合、Oracle JDeveloperでは、同じ名前のテンプレート・パラメータの作成を試みます。その名前のパラメータがすでに存在する場合、その名前が再使用されます(また、問合せパラメータだった場合はテンプレート・パラメータになります)。重複したパラメータ名は決して作成されません。重複したパラメータが手動で作成されると、エラーが返されます。

  11. 「レスポンス」タブをクリックして、HTTPステータス・コード、ペイロード出力タイプ、スキーマおよびフォルト・バインディングの詳細を表示します。スキーマはこの例ですでに定義したので、選択項目の編集が無効になっています。

  12. フォルト名をダブルクリックして、「RESTフォルト・バインディング」ダイアログを表示します。このダイアログの詳細は、「ヘルプ」アイコンをクリックするか、「RESTフォルト・バインディングに関する必知事項」を参照してください。

  13. 必要に応じて編集し、「OK」をクリックします。

  14. 「OK」をクリックして「リソース」ページに戻ります。追加したHTTP動詞が表示されます。

  15. 「操作バインディング」セクションで、操作を選択し、「編集」をクリックして、残りの操作についてもリソースおよびHTTP動詞を定義します。

  16. 「OK」をクリックしてSOAコンポジット・エディタに戻ります。

    RESTサービスはBPELプロセス・サービス・コンポーネントに接続されます。

36.2.3 例: WADLサービスからREST参照へのリソースおよび操作の追加

RESTバインディング構成ウィザードの「構成ショートカット」を使用して、WADLサービスからREST参照にリソースおよび操作を追加できます。

  1. SOAコンポジット・エディタの「外部参照」スイムレーンを右クリックし、「挿入」「REST」を選択します。

    RESTバインディング構成ウィザードが表示されます。

  2. RESTサービスまたは参照の名前を入力します。

    タイプフィールドに参照が表示されます。

  3. 「サービスはWSDLインタフェースを使用してコンポーネントにより起動されます」を選択します。

  4. 「次へ」 をクリックします。

  5. 「構成ショートカット」「WADLサービスに基づいてリソースと操作のマッピングを追加」を選択します。

    「WADLの場所」ダイアログが表示されます。

  6. 次のいずれかの方法で、WADLファイルを指定します。

    1. 「WADL URL」フィールドでWADLファイルのURLを指定し、手順7に進みます。

      または

    2. 「検索」アイコンをクリックして、WADLファイルを検索する「WADLチューザ」ダイアログを表示します。WADLの検索オプションが表示され、ローカル・ファイル・システムまたはプロジェクト内、あるいはデザインタイムOracle Metadata Servicesリポジトリ(MDSリポジトリ)内を検索するか、アプリケーション・サーバーに接続して、デプロイ済のOracle SOA SuiteまたはOracle Service Busサービスに関連するWADLを検索するかを選択できます。図36-4に詳細を示します。

      図36-4 「WADLチューザ」ダイアログ

      図36-4の説明が続きます
      「図36-4 「WADLチューザ」ダイアログ」の説明
    3. WADLファイルを選択し、「OK」をクリックします。

    4. 手順7に進みます。

  7. 「OK」をクリックします。

  8. WADLファイル内で参照されているスキーマは新しいRESTアダプタ参照で使用されるため、「スキーマ・アーティファクトをプロジェクトにコピー。」を選択してこれらのスキーマをローカル・プロジェクトにコピーします。これが推奨される方法です。

  9. 選択したWADLファイルのタイプに応じて、手順を参照してください。表36-4に詳細を示します。

    表36-4 WADLファイルのステータス

    選択したWADLファイルの提供元 結果 手順

    Oracle SOA SuiteまたはOracle Service BusのRESTサービス

    「リソース」ページが、WADLファイルの情報で完全に構成されます。すべての操作、リソース・パスおよび動詞が「操作バインディング」セクションに表示されます。すべての構成が、「操作バインディング」セクションの「完了」列に「はい」の値で表示されます。

    9.a

    Oracle SOA SuiteまたはOracle Service Bus以外のRESTサービス(Jerseyサービスなど)。

    「WADL解析問題」ダイアログに、追加の構成が必要と表示されます。

    9.b

    1. 「リソース」ページを表示して内容を確認し、「OK」をクリックします。

    2. 「WADL解析問題」ダイアログ(図36-5を参照)で、推奨修正処理のリストを確認し、「OK」をクリックします。後の参照用に、同じ情報がOracle JDeveloperの「ログ」ウィンドウに書き込まれます。

      Oracle SOA SuiteまたはOracle Service Bus以外のサービスのWADLファイルには、通常、必要な情報がすべて含まれていません。構成を手動で完了する必要があります。図36-5などの多くの場合に、使用するWADLファイルではREST参照をWSDL操作にバインドするために必要なスキーマが提供されません。通常、このスキーマは、RESTサービス・プロバイダによって提供されるサンプル・ペイロードを使用してネイティブ・フォーマット・ビルダー・ウィザードで生成できます。

      「リソース」ページが表示されます。

      さらに構成が必要なRESTバインディングについては、「操作バインディング」セクションの「完了」列に「いいえ」の値が表示されます。値が「いいえ」の各「完了」列のツールチップには、欠落している内容が示されているので、修正処理を実行できます。少なくとも1つの操作の「完了」列に「いいえ」の値があるかぎり、「OK」ボタンは無効になります。

      注意:

      Oracle JDeveloperの「ログ」ウィンドウにも、すべてのエラーおよび警告がより詳しく表示されます。たとえば、「ログ」ウィンドウには次のようなエントリが含まれています。

      ERROR at [resource path: containers/{container}, method name: PUT,
      request/response: response, representation mediaType:
      application/xml ] - No schema information is available for
      containers/{container}.PUT response.  Please specify a schema.
    3. ツールチップに表示される修正処理を実行します。構成が正常に完了すると、「操作バインディング」セクションの「完了」列のすべての操作に「はい」の値が表示されます。

      SOAデザインタイムMDSリポジトリの詳細は、「デザインタイムとの共有データの管理」を参照してください。

36.2.4 ショートカットからRESTアダプタを構成する方法

RESTアダプタは、WSDLまたはWADLファイルに基づくいくつかのショートカットを使用して構成できます。

36.2.4.1 アプリケーション・サーバーにデプロイされたWebサービスに基づいてRESTサービスを生成する手順:

  1. Oracle JDeveloperメイン・メニューから、「ウィンドウ」「アプリケーション・サーバー」を選択します。

  2. WSDLサービスを右クリックして、「SOA」「RESTとして公開」を選択します。図36-6に詳細を示します。

    図36-6 自動RESTアダプタ・サービス・バインディング・コンポーネントの構成

    図36-6の説明が続きます
    「図36-6 自動RESTアダプタ・サービス・バインディング・コンポーネントの構成」の説明

    「RESTバインディングの作成」ダイアログが起動し、選択されたWSDLファイルから操作マッピングが移入されます。

  3. 「RESTアダプタをSOAコンポジット・アプリケーションのサービス・バインディング・コンポーネントとして構成する方法」の手順を実行して、必要な構成をすべて完了します。

    注意:

    選択したWSDLとその依存アーティファクトのローカル・コピーを作成するよう求められます。ローカル・コピーの作成を選択すると、SOAP参照バインディング・コンポーネントのbinding.wsセクションに、選択元の具体WSDL/エンドポイントの場所と、抽象WSDLとして(コンポジットのインポートなどで)使用されるコピー先のWSDLが含まれます。

    構成が完了すると、RESTサービス・バインディング・コンポーネントがSOAP参照バインディング・コンポーネントに接続されます。図36-7に詳細を示します。

    図36-7 RESTサービス・バインディング・コンポーネントおよびSOAP参照バインディング・コンポーネントの構成

    図36-7の説明が続きます
    「図36-7 RESTサービス・バインディング・コンポーネントおよびSOAP参照バインディング・コンポーネントの構成」の説明

36.2.4.2 アプリケーション・サーバーにデプロイされたRESTサービスに基づいてREST参照を生成する手順:

  1. Oracle JDeveloperメイン・メニューから、「ウィンドウ」「アプリケーション・サーバー」を選択します。

  2. REST/WADLサービスを右クリックして、「SOA」「REST参照の生成」を選択します。図36-8に詳細を示します。

    図36-8 自動RESTアダプタ参照バインディング・コンポーネントの構成

    図36-8の説明が続きます
    「図36-8 自動RESTアダプタ参照バインディング・コンポーネントの構成」の説明

    「RESTバインディングの作成」ダイアログが起動し、選択したWADLファイルからの情報が移入されます。

  3. 「RESTアダプタをSOAコンポジット・アプリケーションの参照バインディング・コンポーネントとして構成する方法」の手順を実行して、必要な構成をすべて完了します。

    構成が完了すると、図36-9のようにREST参照バインディング・コンポーネントが表示されます。

    図36-9 RESTアダプタ参照コンポーネント

    図36-9の説明が続きます
    「図36-9 RESTアダプタ参照コンポーネント」の説明

36.2.4.3 SOAコンポーネントのWSDLサービスに基づいてRESTサービスを生成する手順:

  1. SOAコンポジット・エディタで、SOAコンポーネント・サービスまたは外部参照を右クリックして、「RESTとして公開」オプションを選択します。図36-10に詳細を示します。

    図36-10 「RESTとして公開」オプション

    図36-10の説明が続きます
    「図36-10 「RESTとして公開」オプション」の説明

    「RESTバインディングの作成」ダイアログが起動し、選択したWADLファイルからの情報が移入されます。

  2. 必要なRESTアダプタ構成をすべて完了します。

    構成が完了すると、RESTサポート(この例ではサービス・バインディング・コンポーネント)が作成され、クリックしたインタフェースに自動的に接続されます。図36-11に詳細を示します。

    図36-11 RESTアダプタ・サービス・バインディング・コンポーネント

    図36-11の説明が続きます
    「図36-11 RESTアダプタ・サービス・バインディング・コンポーネント」の説明

36.2.5 スキーマを手動で生成する方法

スキーマ生成のためのスキーマまたはサンプル・データがない場合は、スキーマ生成のためのパラメータを手動で入力できます。スキーマを手動で定義するには、「追加」アイコンをクリックし、「RESTバインディングの作成」ダイアログの「操作バインディング」セクションで「操作バインディングの追加」を選択します。

次のガイドラインに留意してください。

  • 「REST操作バインディング」ページの「URIパラメータ」セクションで、必要な問合せまたはテンプレート・パラメータを入力します。各パラメータにデータ・タイプを選択できますが、式を入力する必要はありません。スキーマやペイロードが指定されていない場合、「OK」をクリックすると、パラメータ・スキーマが自動的に生成されます(WSDLに埋め込まれます)。ランタイム・プロパティにマッピングされた式を持つパラメータは、生成されたスキーマには含まれません。

  • スキーマが操作に対して定義されていない場合、「式」列からアクセス可能な「式ビルダー」ダイアログにのみ、プロパティ変数が表示され、メッセージ変数は表示されません。

RESTサポート作成の詳細は、「RESTアダプタをSOAコンポジット・アプリケーションのサービス・バインディング・コンポーネントとして構成する方法」および「RESTアダプタをSOAコンポジット・アプリケーションの参照バインディング・コンポーネントとして構成する方法」を参照してください。

36.2.6 サンプルからのスキーマの生成方法

スキーマは、JSON interchangeフォーマットを含むサンプル・ファイルから生成できます。

  1. 「REST操作バインディング」ダイアログの「リクエスト」セクションで、「スキーマURL」フィールドの右にある「ネイティブ・フォーマットのスキーマの定義」アイコンをクリックします。図36-12に詳細を示します。

    図36-12 「ネイティブ・フォーマットのスキーマの定義」アイコン

    図36-12の説明が続きます
    「図36-12 「ネイティブ・フォーマットのスキーマの定義」アイコン」の説明

    ネイティブ・フォーマット・ビルダー・ウィザードが表示されます。

  2. 「タイプの選択」ページが表示されるまで、ウィザードの最初のページを進みます。

    このページでは、各種のフォーマット・タイプからスキーマを生成することを選択できます。図36-13に詳細を示します。

    図36-13 スキーマを生成するタイプ

    図36-13の説明が続きます
    「図36-13 スキーマを生成するタイプ」の説明
  3. 適切なタイプを選択します。

    タイプにはそれぞれ、JSON、XMLまたはURLサンプルを貼り付けるか、インポートするサンプル・ファイルを選択する領域があります。

    JSON interchangeフォーマットの詳細は、「JSON InterchangeフォーマットからRESTスキーマへの変換に関する必知事項」を参照してください。

36.2.7 グローバル・トークン変数の使用方法

「RESTバインディングの作成」ダイアログの「ベースURI」フィールドで、ホスト名、ポート番号およびプロトコルのグローバル・トークン変数の割当てができます。

グローバル・トークン変数を使用する手順は次のとおりです。

  1. 「SOAコンポジット・エディタ」の上で、「バインディングURLのトークン化機能」アイコンをクリックします。
  2. REST外部参照を選択し、「編集」アイコンをクリックします。
  3. mdm-url-resolver.xmlファイルを指定するか、ホスト、ポートおよびプロトコル(httpまたはhttps)の値を手動で入力し、「OK」をクリックします。

    その後、トークンに割り当てられた値によって、composite.xmlファイルのbinding.ws要素のlocation属性内のハードコードされたHTTPホストおよびポート値が置き換えられます。詳細は、「外部参照のバインディングURLで使用するためのトークンの作成」を参照してください。

36.2.8 RESTヘッダーのプロパティの設定方法

正規化されたメッセージ・プロパティは、特定の標準HTTPヘッダーで使用できます。これらのプロパティは、図36-14に示すOracle JDeveloperのBPELのreceiveアクティビティおよびreplyアクティビティの「プロパティ」タブの選択項目に表示されます。これらのヘッダー・プロパティは、デフォルトではサービス・エンジン全体に伝播されません。これらは、適切な割当てロジックを適用することよって手動で伝播する必要があります。

図36-14 receiveおよびreplyアクティビティでの正規化されたメッセージのプロパティ

図36-14の説明が続きます
「図36-14 receiveおよびreplyアクティビティでの正規化されたメッセージのプロパティ」の説明

36.2.8.1 インバウンドおよびアウトバウンド・ヘッダー

外部クライアントがSOA RESTサービスと対話するインバウンドの場合、次にクライアントが対話するリソースへのハイパーリンクを送信するためのサービス構成できます。このハイパーリンクは、リソースまたはHTTPリンクのレスポンス・ヘッダーのペイロードで送信できます。次の正規化メッセージ・プロパティが作成され、次のリンクが返されます。

  • rest.binding.requestBaseURI

    このプロパティは、リクエスト・メッセージ上で使用できます。RESTサービスのベースURIを保持します。SOAコンポジット・アプリケーションで、これを同じRESTサービスの別のリソースのパスに結合して、そのリソースに戻る絶対URLを作成できます。

  • rest.binding.http.Link

    このプロパティがレスポンス・メッセージで設定されると、リンク・ヘッダーがHTTPレスポンスに追加されます。このヘッダーの値は、正規化されたメッセージ・プロパティの値です。

SOAコンポジット・アプリケーションが外部RESTサービスを起動するアウトバウンドの場合、サービスによってリンク・ヘッダーまたはペイロードのいずれかにある次のリンクが含まれたレスポンスが返されることがあります。次の正規化されたメッセージ・プロパティは、次のリンクを取得し、そのリンクにあるリソースを起動するために使用できます。

  • rest.binding.http.Link

    外部RESTサービスからのHTTPレスポンスにリンク・ヘッダーが含まれている場合、rest.binding.http.Linkプロパティがそのレスポンス・メッセージに追加されます。このプロパティの値は、リンク・ヘッダーの値です。

  • rest.binding.requestURI

    次のリンクにあるリソースは、リクエスト・メッセージでrest.binding.requestURIプロパティを設定することで起動できます。設定した場合、このプロパティのURLが、設計時に指定されたURLをオーバーライドします。これは、外部RESTサービスを起動します。

SOAコンポジット・アプリケーションが、外部RESTサービスから受信した次のリンクに基づいてRESTリソースを起動するときに、満たす必要のある事前条件がいくつかあります。

  • 起動される可能性のあるリソースは、設計時にREST参照バインディング・コンポーネントで設計されている必要があります。

  • リクエストおよびレスポンスの構造は、既知のものであり、設計時にモデル化されている必要があります。

「プロパティ」タブの正規化されたメッセージ・プロパティの設定の詳細は、「メッセージ・ヘッダーを介した正規化メッセージ・プロパティの伝播」を参照してください。

36.2.8.2 カスタム・ヘッダー・サポート

RESTサービスおよび参照は、カスタムHTTPヘッダーを処理できます。表36-5に詳細を示します。

表36-5 カスタム・ヘッダー・サポート

方向 サービス側 参照側

リクエスト

リクエストに含まれるHTTPヘッダーは、正規化されたメッセージ・プロパティとして伝播されます。ヘッダーにはrest.binding.http.header-nameが付加されます。これらのヘッダーは、正規化されたメッセージ・プロパティの一部として、サービス・エンジンで使用できます。たとえば、個々のヘッダーは、receiveアクティビティおよびreplyアクティビティのプロパティにあるBPELプロセスで取得できます。

rest.binding.http.*が先頭に付いたすべての正規化されたメッセージ・プロパティは、HTTPヘッダーとしてHTTPリクエストに追加されます。ヘッダーをHTTPリクエストに添付する前に、RESTサービスによって、ヘッダー名から接頭辞rest.binding.http.が削除されます。

レスポンス

rest.binding.http.*が先頭に付いたすべての正規化されたメッセージ・プロパティは、HTTPヘッダーとしてHTTPレスポンスに追加されます。ヘッダーをHTTPレスポンスに添付する前に、RESTサービスによって、ヘッダー名から接頭辞rest.binding.http.が削除されます。

レスポンスで受信するHTTPヘッダーは、正規化されたメッセージ・プロパティとして伝播されます。ヘッダーにはrest.binding.http.header-nameが付加されます。これらのヘッダーは、正規化されたメッセージ・プロパティの一部として、サービス・エンジンで使用できます。たとえば、個々のヘッダーは、receiveアクティビティおよびreplyアクティビティのプロパティにあるBPELプロセスで取得できます。

36.2.9 RESTフォルト・バインディングに関する必知事項

図36-15に示すとおり、「RESTフォルト・バインディング」ダイアログでRESTフォルト・バインディング・レスポンスの詳細を定義します。フォルトの詳細がWSDLファイルで定義される場合は、「RESTフォルト・バインディング」ダイアログの「フォルト・バインディング」セクションにフォルト・バインディングが自動的に作成されます。フォルト・バインディングは、「フォルト・バインディング」セクションの「フォルト・バインディングの追加」アイコンをクリックすることで、手動でも定義できます。

図36-15 「RESTフォルト・バインディング」ダイアログ

図36-15の説明が続きます
「図36-15 「RESTフォルト・バインディング」ダイアログ」の説明

デフォルトでフォルト・ステータスは、フォルト・ペイロードがある場合は400で、フォルト・ペイロードがない場合は404です。

フォルト・バインディングの詳細は、「RESTバインディングの作成」ダイアログでの選択内容によって異なります。

  • 「RESTコンポーネントや参照の有効化」を選択した場合、フォルト・バインディングは、WSDLファイルで定義されているフォルトに基づいて自動的に生成されます。

  • 「操作バインディングの追加」を選択した場合は、サポートされるフォルト・バインディングを構成する必要があり、これは生成されるWSDLに追加されます。

「REST操作バインディング」ダイアログの「フォルト・バインディング」セクションには、レスポンス・フォルト名、タイプ、ステータスおよびスキーマが表示されます。図36-16に詳細を示します。

図36-16 フォルト・バインディングの定義

図36-16の説明が続きます
「図36-16 フォルト・バインディングの定義」の説明

36.2.10 JSON InterchangeフォーマットからRESTスキーマへの変換に関する必知事項

RESTスキーマは、ネイティブ・フォーマット・ビルダー・ウィザードの「タイプの選択」ダイアログで、JSON Interchangeフォーマット・サンプルから作成することを選択できます(図36-13を参照)。スキーマの生成中、このウィザードは次のことを試行します。

  • ネームスペース情報のないRESTスキーマを生成します。

  • ネームスペース情報のないJSON Interchangeフォーマット・サンプルを消費し、適切なネームスペースを持つXMLを生成します。

ただし、変換を処理できない場合もあります。

  • ネームスペース情報が保持され、次の例に示すJSON Interchangeフォーマット・サンプルの変換が可能になります。これは、基礎となるスキーマに複数のネームスペースからの要素および属性があるためです。

    <schema xmlns:us="http://xmlns.oracle.com/addresses/us"
    xmlns:india="http://xmlns.oracle.com/addresses/india"
    targetNamespace="http://xmlns.oracle.com"
    xmlns="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
       <import ...>
       <element name="Person">
           <complexType>
               <choice>
                    <element ref="us:Address"/>
                    <element ref="india:Address"/>
               </choice>
           </complexType>
       </element>
    </schema>
    <schema targetNamespace="http://xmlns.oracle.com/addresses/us"
    xmlns="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
       <element name="Address">
           <complexType>
               <sequence>
                    <element name="Street" type="xsd:string"/>
                    <element name="City" type="xsd:string"/>
                    <element name="State" type="xsd:string"/>
                    <element name="ZipCode" type="xsd:integer" minOccurs="0"/>
               </sequence>
           </complexType>
       </element>
    </schema>
    <schema targetNamespace="http://xmlns.oracle.com/addresses/india"
    xmlns="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
       <element name="Address">
           <complexType>
               <sequence>
                    <element name="Street" type="xsd:string"/>
                    <element name="City" type="xsd:string"/>
                    <element name="District" type="xsd:string" minOccurs="0"/>
                    <element name="State" type="xsd:string"/>
                    <element name="PinCode" type="xsd:integer" minOccurs="0"/>
               </sequence>
           </complexType>
       </element>
    </schema> 
    
  • 連続したグループ要素の下にある、名前が重複した兄弟要素は変換できません。これはJSONではキーが重複したオブジェクトに変換されてしまい、こうしたオブジェクトは無効であるためです。

36.2.11 同一ノード内でRESTサービスをコールするREST参照に関する必知事項

SOAIncomingRequests_maxThreadsプロパティは、デフォルトでは、Oracle WebLogic Server管理コンソールのSOADataSourceデータ・ソースに基づいて構成されています。この設定は、負荷が高いRESTサービス(たとえば、同じノード内でREST参照がRESTサービスをコールするシナリオで200の同時ユーザーがいる場合など)では十分でない場合があります。SOAIncomingRequests_maxThreads値を400に増やして、次の例に示す例外エラーを防ぐ必要があります。

<May 2, 2014 10:16:11 AM PDT> <Error> <oracle.soa.bpel.system> <BEA-000000>
<cube engineJTA transaction is not in active state.
The transaction became inactive when executing activity "" for instance
"30,023", bpel engine can not proceed further without an active transaction.
please debug the invoked subsystem on why the transaction is not in active
status. the transaction status is "MARKED_ROLLBACK".
The reason was The execution of this instance "30023" for process
"BuyCoffeeBPELProcess" is supposed to be in an active jta transaction, the
current transaction status is "MARKED_ROLLBACK", the underlying exception is
"Service Unavailable" .
Consult the system administrator regarding this error.
, Cikey=30023, FlowId=20014, Current Activity Key=30023-BpInv0-BpSeq0.3-3,
Current Activity Label=InvokeCreateOrder,
ComponentDN=default/CoffeeShopClient!1.0*soa_19d4a881-115b-42c5-824d-1af3fa766
62d/BuyCoffeeBPELProcess
oracle.fabric.common.FabricInvocationException: Service Unavailable
        at
. . .
. . .

36.3 BPELコンポーネントでのJavaScriptおよびJSONの使用

BPELコンポーネントは、XML変数およびJSON変数の両方とともに使用できます。JavaScriptは、XPath式を使用できるすべての箇所で使用できます。JavaScriptは述部、式およびJavaScript BPELアクティビティ内で使用できます。

JSON変数の使用

既存のRESTサービスに基づいてBPELプロセスを作成し、RESTサービスからメソッドを追加することを選択できます。これは、次の図に示されています。

RESTサービスが選択された「BPELプロセスの作成」ダイアログ

入力ペイロード・データを受信するためにJSONオブジェクト変数を使用するように、BPELプロセスのReceiveアクティビティが自動的に構成されます。

「変数チューザ」ダイアログ。

必要に応じて、BPELプロセスに追加のスキーマレスJSON変数を作成できます。

BPELプロセスの式言語の設定

BPELデザイナで、BPELプロセス領域の空白の領域を右クリックします。「プロセスの編集」ダイアログが表示されます。必要に応じて、問合せ言語式言語を設定します。JavaScriptを使用するためにjsを使用できます。

「プロセスの編集」ダイアログ

JavaScript式の使用

JavaScriptは、XPath式を使用できるすべての箇所で使用できます。これらの式は、BPELアクティビティおよび条件付きおよび反復コンストラクトで使用できます。この項では、いくつかの例を示します。

次の例は、Assertアクティビティで使用されるJavaScript式を示しています。式では、プロセス入力のタイプがオブジェクトかどうかが確認されます。

「アサートの編集」ダイアログ

process変数は、実行中にJavaScriptコンテキストがアクセス可能なグローバル変数です。

次のコードは、Whileアクティビティで使用される可能性のあるJavaScript条件を示しています。

process.counter < 10

次のコードは、Waitアクティビティに表示される可能性のあるJavaScript式を示しています。

bpel.until(process.counter + 3)

次のコードは、Switchアクティビティの分岐に表示され、奇数のテストに役立つJavaScript式を示しています。

process.counter % 2 == 1

JavaScriptアクティビティの使用

BPELプロセスでJavaScriptアクティビティを使用して、JavaScriptコード・スニペットまたはコード・ブロックを追加できます。JavaScriptアクティビティを追加するには、「コンポーネント」ウィンドウからBPELプロセスの適切な場所にJavaScriptアイコンをドラッグします。追加したJavaScriptアクティビティをダブルクリックして編集できます。次の図は、xpathおよびbpelオブジェクト関数を呼び出すJavaScriptコードを示しています。

「Javascriptの編集」ダイアログ

xpathは、すべてのXPath関数にバインドするグローバル・オブジェクトです。このため、たとえば、var o = process.output.xpathでは新しいxpathオブジェクトが作成され、o.refid = xpath.ora.getECID()ではoraネームスペース・プリフィクスのgetECID関数が呼び出されます。

次のJavaScriptコードはJavaScriptアクティビティに表示され、サーバー・コンソールおよびBPEL監査ログに出力を書き込みます。

console.log("input: ", process.input)
console.log("output: ", process.output)
audit.log("output: ", process.output)

BPELプロセスへのJavaScriptファイルのインポート

JavaScript関数を含む外部JavaScriptファイルを、BPELプロセスにインポートできます。これらのファイルに含まれるJavaScript関数が、BPELプロセス内で使用可能になります。次の行では、importおよびinclude文を使用してmain.jsおよびone.jsファイルをBPELプロセスにフェッチしています。

<bpelx:js include="jslib/main.js"/>
<bpelx:js import="jslib/one.js"/>
<import location="jslib/lib.js" importType="javascript"/> 

includeimportの違いは、import文では、インポート回数に関係なくファイルが含められるのは1回のみである点です。

次の図は、 include/import文を含むBPELプロセスのソース・ウィンドウを示しています。JavaScriptファイルがプロジェクト・フォルダの下に表示される場所に注意してください。

BPELにjavascriptファイルを含める

36.4 HTTPアナライザによるRESTアダプタのテスト

HTTPアナライザを使用してRESTアダプタをテストできます。

HTTPアナライザを使用してRESTアダプタをテストする手順は、次のとおりです。

  1. 図36-17に示すように、Oracle Enterprise Manager Fusion Middleware ControlのSOAコンポジット・アプリケーションのホームページからWADLファイルのURLをコピーします。

    図36-17 Oracle Enterprise Manager Fusion Middleware ControlのWADLファイルのURL

    図36-17の説明が続きます
    「図36-17 Oracle Enterprise Manager Fusion Middleware ControlのWADLファイルのURL」の説明
  2. HTTPアナライザで、「URLを開く」アイコンをクリックし、Oracle Enterprise Manager Fusion Middleware ControlからコピーしたWADLのURLを入力して[Return]を押します。

    WADLファイルはPOSTメソッドに含まれています。図36-18に詳細を示します。

    図36-18 WADLファイルおよびPOSTメソッド

    図36-18の説明が続きます
    「図36-18 WADLファイルおよびPOSTメソッド」の説明
  3. 「テスト」をクリックします。
  4. サンプル・リクエストのXMLペイロードを「リクエストHTTPヘッダー」セクションにコピー・アンド・ペーストして、「リクエストの送信」をクリックします。JSONフォーマットも指定できます。図36-19に詳細を示します。

    図36-19 リクエスト・メッセージ

    図36-19の説明が続きます
    「図36-19 リクエスト・メッセージ」の説明

    処理が完了すると、レスポンス・メッセージが表示されます。この例では、注文ステータスがShippedであるメッセージが表示されます。図36-20に詳細を示します。

    図36-20 レスポンス・メッセージ

    図36-20の説明が続きます
    「図36-20 レスポンス・メッセージ」の説明

36.5 Oracle Enterprise Manager Fusion Middleware ControlでのREST参照のバインディング・コンポーネントのテストおよび構成

RESTバインディング・コンポーネントを含むSOAコンポジット・アプリケーションのインスタンスは、Oracle Enterprise Manager Fusion Middleware Controlの「テスト・インスタンス」ページから開始できます。このページでは、任意のWSDLまたはWADLをテストできます。詳細は、『Oracle SOA SuiteおよびOracle Business Process Management Suiteの管理』のSOAコンポジット・アプリケーションのテスト・インスタンスの起動に関する説明を参照してください。

Oracle Enterprise Manager Fusion Middleware ControlでREST参照のバインディング・コンポーネントのプロパティを構成できます。詳細は、『Oracle SOA SuiteおよびOracle Business Process Management Suiteの管理』のRESTアダプタのプロパティの構成に関する説明を参照してください。