BPEL デザイナー開発者ガイド: BPEL マッパー
最終更新日:2006 年 10 月 23 日
目次
BPEL デザイナー開発者ガイド
BPEL マッパーについて
BPEL マッパーは、BPEL プロセスデータの処理と指示を行うためのフレームワークを提供します。このフレームワークは、次のコンポーネントからなります。
- メニューバー。メニューバーは、BPEL マッピングを作成するために使用するすべての BPEL マッパー XPath 関数を提供します。XPath 関数を構成している述語を組み込むことにより、BPEL マッピングを強化または拡張することもできます。
- ソースツリー区画。 ソースツリー区画は、BPEL プロセスのデータ変数へのアクセスを提供するツリーコンポーネントを含んでいます。
- マッピング区画。 マッピング区画は、BPEL マッピングを作成するためのキャンバスを含んでいます。メニューバーで関数を選択する場合は、マッピング区画に関数ボックスが表示されます。関数が引数を受け入れる場合は、関数ボックスの左側に、各引数に 1 つずつ、コネクタがあります。引数を省略できる場合は、引数名のあとに疑問符が表示されます。関数ボックスの右側には、結果用のコネクタが 1 つあります。BPEL マッパーは、次の BPEL プロセス要素に使用できます。
- 代入アクティビティー。1 つ以上のコピー割り当てを定義できます。
- If アクティビティー。条件を定義できます。
- If アクティビティー内の ElseIf 要素。条件を定義できます。
- ForEach アクティビティー。条件を定義できます。
- RepeatUntil アクティビティー。条件を定義できます。
- While アクティビティー。条件を定義できます。
- 待機アクティビティー。 締切期限または期間を指定できます。
- 宛先ツリー区画。 宛先ツリー区画のツリーコンポーネントは、マッピングしている BPEL プロセス要素によって異なります。宛先ツリー区画には、次のコンポーネントが含まれています。
- 代入アクティビティーの場合、右の区画には左の区画と同じツリーコンポーネントが入っています。
- If アクティビティー、ElseIf 要素、ForEach アクティビティー、RepeatUntil アクティビティー、および While アクティビティーの場合、右側の区画には「結果」ノードが入っています。
- 待機アクティビティーの場合、右側の区画には、「締切期限」ノードまたは「期間」ノードが入っています。
先頭へ
関数を使用せずに、直接、ソースツリー区画から宛先ツリー区画へマッピングを作成できます。この種類のマッピングは、次のいずれかにすることができます。
- 変数から変数へ
- 部分から部分へ
- XSD 要素から XSD 要素へ
- XSD 属性から XSD 属性へ
BPEL マッパーのメニューバーから、1 つ以上の XPath 関数を使用するマッピングを作成することもできます。たとえば、BPEL プロセスに、ある期間だけ待つ待機アクティビティーが含まれている場合は、期間リテラル関数を使用して期間を指定できます。
関数を使用せずにマッピングを作成するには、次の手順に従います。
- ソースツリー区画で、マップ元のノードが表示されるまでツリーコンポーネントを展開します。
- 宛先ツリー区画にツリーコンポーネントが含まれている場合は、マップ先のノードが表示されるまでツリーコンポーネントを展開します。
- ソースツリー区画内のノードを選択し、ポインタを宛先ツリー区画内のノードまでドラッグします。
リンクがノードを接続します。
マッピングの中に関数を使用するには、次の手順に従います。
- 関数が入っているドロップダウンメニューをクリックします。
- 関数をクリックします。
中央の区画に関数ボックスが表示されます。
- 関数ボックスの左側の適切なコネクタに引数をマッピングします。ソースは、ソースツリー区画内のノードにするか、別の関数ボックスからの出力にすることができます。引数を省略できる場合は、引数名のあとに疑問符が表示されます。
- 関数ボックスの右側から結果をマッピングします。宛先は、宛先ツリー区画内のノードにするか、別の関数ボックスへの入力にすることができます。
マッピング内のリンクまたは関数を削除するには、次の手順に従います。
- リンクまたは関数を選択します。
- 「削除」を押します。
先頭へ
BPEL マッパーを使用すると、XPath 関数からなる述語を作成できます。
述語は、複数の値を持つことができるノードに条件を適用します。結果は、条件を満たすノードのサブセットです。
たとえば、あるノードが製品の量を表すとします。量が 50 を超えるすべての製品を選択する場合は、より大きい関数と数値リテラル関数を使用して条件を定義できます。
述語を作成できるのは、特定の種類のノードだけです。それらのノードのコンテキストメニューには、「新規述語」オプションが含まれています。
述語を作成すると、その述語を割り当ての中で指定できます。たとえば、ソースツリー区画内の述語から、宛先ツリー区画内のノードへデータをコピーできます。
既存の述語を編集または削除できます。
述語を作成するには、次の手順に従います。
- ソースツリー区画内で、ノードを右クリックし、「新規述語」を選択します。
述語エディタが起動します。
- XPath 関数を使用して、述語の条件を作成します。結果を宛先ツリー区画内の述語ノードへマッピングします。
- 「了解」をクリックします。
エディタは、述語ノードを直ちに元のノードの下に追加します。条件が角括弧内に表示されます。
述語を編集するには、次の手順に従います。
- ソースツリー区画内で、述語ノードを右クリックし、「述語を編集」を選択します。
- 条件を変更します。
- 「了解」をクリックします。
述語を削除するには、次の手順に従います。
- ソースツリー区画内で、述語ノードを右クリックし、「述語を削除」を選択します。
- 「はい」をクリックします。
先頭へ
BPEL マッパーのメニューバーで、一連の XPath 関数を使用できます。それらの関数は、XPath 1.0 仕様に基づいています。
それぞれの関数には、ゼロ個以上の引数があります。それぞれの関数は 1 つの結果を返します。
メニューバーには、次のドロップダウンメニューが含まれています。日時、演算子, 論理、文字列、ノード、および数値。
日時
「日時」メニューには、次の関数が含まれています。
- 期間リテラルを使用すると、期間のリテラルを入力できます。XML スキーマ仕様で指定されているフォーマットを使用してください。
- 現在時間は、現在の時刻を提供します。
- 現在日付は、現在の日付を提供します。
- 現在日時は、現在の日付と時刻を提供します。
演算子
「演算子」メニューには、次の関数が含まれています。
- より大きい
- より大きいか等しい
- より小さい
- より小さいか等しい
- 加算
- 減算
- 乗算
- 除算、つまり除算演算子は、 与えられた被除数と除数による商を返します。
- 剰余、つまりモジュラス演算子は、与えられた被除数と除数による剰余を返します。
- 負
- 等しくない
- 等しい
論理
「論理」メニューには、次の関数が含まれています。
- 真は、真を返します。
- 偽は、偽を返します。
- 論理積は、次のロジックを使用します。両方の引数が真の場合、この関数は真を返します。どちらかの引数が偽の場合、この関数は偽を返します。
- 論理和は、次のロジックを使用します。どちらかの引数が真の場合、この関数は真を返します。両方の引数が偽の場合、この関数は偽を返します。
- 否定は、次のロジックを使用します。引数が偽の場合、この関数は真を返します。引数が真の場合、この関数は偽を返します。
- 言語は、コンテキストノードの言語が、引数内で指定された言語またはそのサブ言語であるかどうかに応じて、真または偽を返します。
- 論理は、引数を boolean に変換します。ロジックの詳細については、XPath 1.0 仕様を参照してください。
文字列
「文字列」メニューには、次の関数が含まれています。
- 含むは、次のロジックを使用します。第 1 引数に第 2 引数の文字列が含まれている場合、この関数は真を返します。それ以外の場合、この関数は偽を返します。
- 空白を正規化は、空白を正規化した引数文字列を返します。先行または後続する空白は削除され、空白文字の並びが 1 つの空白文字に置き換えられます。
- 文字列は、オブジェクトを文字列に変換します。
- …で始まるは、次のロジックを使用します。第 1 引数の文字列が第 2 引数の文字列で始まる場合、この関数は真を返します。それ以外の場合、この関数は偽を返します。
- 文字列長は、文字列内の文字の数を返します。
- 部分文字列は、第 1 引数の部分文字列として、第 2 引数で指定された位置から始まり、第 3 引数で指定された長さの文字列を返します。最初の文字の位置は 1 で、2 番目の文字の位置は 2 となり、以下同様です。第 3 引数は省略できます。第 3 引数が指定されなかった場合、この関数は、第 2 引数で指定された位置から始まって文字列の終わりまで続く部分文字列を返します。
- 前方部分文字列は、第 1 引数の部分文字列として、第 1 引数の文字列内で第 2 引数の文字列が最初に現れる場所より前にある文字列を返します。第 1 引数の文字列に第 2 引数の文字列が含まれていない場合、この関数は空の文字列を返します。
- 後方部分文字列は、第 1 引数の部分文字列として、第 1 引数の文字列内で第 2 引数の文字列が最初に現れる場所の直後にある文字列を返します。第 1 引数の文字列に第 2 引数の文字列が含まれていない場合、この関数は空の文字列を返します。
- 置換は、第 1 引数の文字列を、その中の第 2 引数の文字列内にある文字に該当する文字を第 3 引数の文字列内の対応する位置にある文字に置き換えて返します。
- 連結は、複数の引数を連結したものを返します。
- 文字列リテラルを使用すると、文字列リテラルを入力できます。
ノード
「ノード」メニューには、次の関数が含まれています。
- 最後は、コンテキストのサイズを返します。
- ローカル名は、ドキュメント順の最初にある引数ノードセット内のノードの拡張名から、そのローカル部分だけを返します。拡張名は、ローカル部分と名前空間 URI からなります。
- 名前は、ドキュメント順の最初にある引数ノードセット内のノードの拡張名を表す修飾名を返します。拡張名は、ローカル部分と名前空間 URI からなります。
- 名前空間 URIは、ドキュメント順の最初にある引数ノードセット内のノードの拡張名から、名前空間 URI だけを返します。拡張名は、ローカル部分と名前空間 URI からなります。
- 位置は、コンテキストの位置を返します。
- 数は、引数ノードセット内のノードの数を返します。
数値
「数値」メニューには、次の関数が含まれています。
- 数値は、引数を数値に変換します。ロジックの詳細については、XPath 1.0 仕様を参照してください。
- 数値リテラルを使用すると、数値リテラルを入力できます。
- 丸めは、引数に最も近い整数を返します。
- 総和は、引数ノードセット内の各ノードについて、ノードの文字列値を数値に変換した結果の合計を返します。
- 床関数は、引数を上回らない最大の整数を返します。
- 天井関数は、引数を下回らない最小の整数を返します。
先頭へ
マッピングの例
次の例では、各種のマッピングシナリオを示します。
代入アクティビティーシナリオ
パートナーから受信したデータを BPEL プロセスでコピーすると仮定します。次の作業を実行します。
- 受信アクティビティーのあとに代入アクティビティーを追加します。
- 代入アクティビティーを選択し、エディタを使用して 1 つ以上のコピー代入を定義します。
次の例は、XPath 関数を使用しないコピー代入を示しています。ItineraryIn 変数の itinerary 部が、ItineraryOut 変数の itinerary 部にコピーされます。右の区画と左の区画に同じツリーコンポーネントが入っています。

(クリックして拡大)
次の例は、連結 XPath 関数を使用するコピー代入を示しています。入力変数 paramA が文字列リテラル Parameter A: の末尾に連結され、出力変数 paramA にコピーされます。

(クリックして拡大)
If アクティビティーシナリオ
特定の条件が真の場合だけ一連の手順を実行すると仮定します。次の作業を実行します。
- If アクティビティーを BPEL プロセスに追加します。
- If アクティビティーを選択し、エディタを使用してブール条件を定義します。
- If アクティビティー内に手順を追加します。
次の例は、条件のマッピングを示しています。このマッピングでは、メニューバーの論理部分にある否定 XPath 関数を使用します。itinerary に航空便の予約がある場合、否定 XPath 関数は真を返します。結果は右の区画の「結果」ノードにマップされます。

(クリックして拡大)
述語シナリオ
2 人以内の顧客グループの旅程から、BPEL プロセスで旅程データをコピーすると仮定します。入力レコードは顧客の一行の乗客数を指定する変数を含みます。次の作業を実行します。
- エディタの左の区画内で、反復ノードを右クリックし、「新規述語」を選択します。
「述語」ウィンドウが開きます。
- より小さい XPath 関数を中央の区画に追加します。
- 数値リテラル XPath 関数を中央の区画に追加します。値を 3 に設定します。
- 変数ノードをより小さい XPath 関数の最初の引数にマップします。
- 数値リテラル XPath 関数の結果をより小さい XPath 関数の 2 番目の引数にマップします。
- より小さい XPath 関数の結果を右の区画の「結果」ノードにマップします。
- 「了解」をクリックします。
次の例は、「述語」ウィンドウにマッピングが表示される方法を示しています。「了解」をクリックすると、コピー代入の中で述語ノードを使用できます。

(クリックして拡大)
BPEL プロセスが次の XML を受信した場合、述語は最初の Air タグを選択します。
<Air>
<NumberInParty>2</NumberInParty>
</Air>
<Air>
<NumberInParty>4</NumberInParty>
</Air>
<Air>
<NumberInParty>6</NumberInParty>
</Air>
先頭へ