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ファイルを含める