プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle Business Process Management Studioでのビジネス・プロセスの開発
12c (12.2.1.1)
E79347-01
目次へ移動
目次

前
次

24 式の記述

この章では、式および条件を必要とするBPMN要素の式および条件の記述方法について説明します。Oracle BPMでは、異なるユーザーの要件に適応する2タイプの式エディタが提供されています。この章では、各式ビルダーで使用される式言語および記述する式で使用できる操作について説明します。

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

24.1 Oracle BPMでの式の概要

BPM要素では、動作を定義する条件または式を記述する必要がある場合があります。たとえば、500ドルを超えるすべての支出がマネージャによって承認されていることを確認する条件シーケンス・フローを使用するプロセスのフローを制御することがあります。

Oracle BPMでは、次の2つの式および条件の記述方法が提供されています。

  • シンプルな式ビルダーの使用

  • XPATH式ビルダーの使用

シンプルな式ビルダーではドット表記を使用し、その構文はJavaによく似ています。XPATH式ビルダーでは標準XPATH言語を使用します。

シンプルな式言語で式を記述した後にそれをXPathに変換することも、逆の変換をすることもできます。言語間で式を変換する場合、式エディタは式の意味に影響を与えない演算子とカッコを削除します。

Oracle BPMでは式を使用して、次のBPMN要素を構成します。

  • 条件シーケンス・フロー

  • 複合ゲートウェイ

  • タイマー・イベント

  • データ・アソシエーション

  • ループ・マーカー

  • マルチインスタンス・マーカー

  • ユーザー・タスク拡張プロパティ

  • 相関

式の結果は、構成する要素のタイプに応じて異なります。表24-1は、各BPM要素で必要とされる式を説明しています。

表24-1 式タイプ

BPMN要素 式タイプ

条件シーケンス・フロー

評価時にブール値となる条件。

複合ゲートウェイ

評価時にブール値となる条件。

タイマー・イベント

時間日付: 評価時に日時値となる式。

サイクル: 評価時に期間値となる式。

データ・アソシエーション

評価時にデータ・アソシエーションでの引数と同じタイプの値となる式。

ユーザー・タスク拡張プロパティ

評価時に文字列値となる式。

ループ・マーカー

評価時にブール値となる条件。

マルチインスタンス・マーカー

ループ・カーディナリティ: 評価時に整数値となる式。

完了条件: 評価時にブール値となる条件。

式をサポートするBPM要素の構成ダイアログには、埋込みの式エディタおよび式ビルダーを起動するボタンがあります。後者は長い式を操作する場合に適しています。どちらの式ビルダーでも、使用可能な変数を参照できます。XPATH式ビルダーでは、使用可能な関数も参照できます。

24.2 条件シーケンス・フローでの条件の記述

条件シーケンス・フローを実装するには、条件を指定する必要があります。トークンが条件シーケンス・フローに到着すると、BPMNサーバー・エンジンが条件シーケンス・フローの条件を評価し、トークンがどのシーケンス・フローに従うかを決定します。

通常、条件はプロジェクトおよびプロセス・データ・オブジェクトの値に基づいていますが、要件には基づいていません。コンパイラが条件を評価する際に、条件はブール値となる必要があります。ブール値とならない条件を記述した場合、シンプルな式ビルダーではエラーが発生します。

24.2.1 条件シーケンス・フローの実装方法

条件シーケンス・フローを実装する式を定義する必要があります。

条件シーケンス・フローを実装するには:

  1. 条件シーケンス・フローを右クリックします。
  2. 「プロパティ」を選択します。
  3. 「プロパティ」タブをクリックします。
  4. 「タイプ」リストから、「条件」を選択します。
  5. 「式」セクションで、条件を記述するのに使用する式ビルダーのタイプを選択します。
  6. 条件が単純な場合、表示されたテキスト領域にそれを記述するのか、テキスト領域の横にある「式ビルダーの起動」ボタンをクリックして式ビルダーを起動するのかを選択できます。

    複雑な条件を処理する場合、テキスト領域の横にある「式ビルダーの起動」ボタンをクリックして、式ビルダーを起動できます。

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

24.3 複合ゲートウェイでの式の記述

複合ゲートウェイを実装するには、到着したトークンをゲートウェイが解放する時期を指定する条件を提供する必要があります。新規トークンが複合ゲートウェイに到着するたびに、BPMNサービス・エンジンはこの条件を評価します。条件がtrueと評価されると、複合ゲートウェイはtrueと評価されるまでに到着したすべてのトークンを解放します。

通常、条件は、複合ゲートウェイに到着したトークンの数に基づいています。たとえば、2つのトークンがマージ・ゲートウェイに到着した後でゲートウェイがトークンを解放するようにするとします。

例24-1は、2つのトークンがマージ・ゲートウェイに到着した後でゲートウェイに到着したトークンを解放するゲートウェイを構成する条件を示しています。

例24-1 複合ゲートウェイでの条件

activationCount >= 2

24.3.1 複合ゲートウェイの実装方法

ゲートウェイを実装する式を定義する必要があります。

複合ゲートウェイを実装するには:

  1. 複合ゲートウェイを右クリックします。
  2. 「プロパティ」を選択します。
  3. 「実装」タブをクリックします。
  4. 「式」セクションで、条件を記述するのに使用する式ビルダーのタイプを選択します。
  5. 条件が単純な場合、表示されたテキスト領域に条件を記述できます。

    複雑な条件を処理する場合、テキスト領域の横にある「式ビルダーの起動」ボタンをクリックして、式ビルダーを起動できます。

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

24.4 タイマー・イベントでの式の記述

タイマー・イベントを実装するために、日付または間隔を指定するか、日付または間隔を計算する式を記述するかを選択できます。

通常、日付または間隔が固定しない場合に式を使用します。

次の例は、日付を表すタイマー・イベントで使用できる式を示しています。

  • 'now' + '30m'

  • deadline - '1day'

  • arrivalDate.dateTime + '1h'

次の例は、間隔を表すタイマー・イベントで使用できる式を示しています。

  • waitToRetry.interval()

  • period(deadline)

24.4.1 タイマー・イベントでの式の使用方法

式を使用して、タイマー・イベントの実装における日付または間隔を計算できます。

タイマー・イベントで式を使用するには:

  1. タイマー・イベントを右クリックします。
  2. 「プロパティ」を選択します。
  3. 「実装」タブをクリックします。
  4. 「式の使用」を選択します。
  5. 「式」セクションで、条件を記述するのに使用する式ビルダーのタイプを選択します。
  6. 式が単純な場合、表示されたテキスト領域に式を記述できます。

    複雑な式を処理する場合、テキスト領域の横にある「式ビルダーの起動」ボタンをクリックして、式ビルダーを起動できます。式を記述できる式ビルダーが表示されます。

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

24.5 データ・アソシエーションでの式の記述

データ・アソシエーションで式を使用して、アクティビティ実装引数に関連付ける前に入出力値を変更できます。

通常、データ・オブジェクトとアクティビティ実装引数間に不一致がある場合に、式を使用します。次の例は、データ・アソシエーションで式を使用できる状況を説明しています。

  • データ・オブジェクトの値とサービスが必要とする引数間の不一致。

    たとえば、アクティビティが起動するサービスがプロセスで使用する製品IDと異なる製品IDを使用するとします。この場合、製品IDのデータ・オブジェクトの内容をサービスが必要とする値に適合させる式を使用できます。

  • データ・オブジェクトのデータ型とサービスが必要とする引数のデータ型間の不一致。

    たとえば、アクティビティが起動するサービスは文字列を使用してオーダーの状態を格納し、サービスは整数値でオーダーの状態を指定する必要があるとします。この場合、その文字列が指定する状態に対応する整数値を計算する式を使用します。

24.5.1 データ・アソシエーションでの式の使用方法

データ・アソシエーションで式を使用して、引数またはデータ・オブジェクトの値をマッピングする前に変更できます。

データ・アソシエーションで式を使用するには:

  1. データ・アソシエーションを変更するアクティビティを右クリックします。
  2. 「プロパティ」を選択します。
  3. 「実装」タブをクリックします。
  4. 「データ・アソシエーション」リンクをクリックします。
  5. 「式」ボタンをクリックします。

    「式ビルダー」ダイアログが表示されます。

  6. 式を入力して「OK」をクリックします。

    中央の列に式が表示されます。

  7. 式を使用して変更する入力または出力引数を見つけ、それを中央の列上の作成した式の上にドラッグします。
  8. 「OK」をクリックします。

24.6 サブプロセス内のループ・マーカーおよびマルチインスタンス・マーカーでの条件の記述

ループ・マーカーおよびマルチインスタンス・マーカーを使用して複数回実行するサブプロセスを構成できます。ループ・マーカーおよびマルチインスタンス・マーカーを構成するには、サブプロセスを繰り返す方法を指定する式および条件を定義する必要があります。

ループ・マーカー

ループ・マーカーによって、条件に基づいてサブプロセスを複数回実行できます。サブプロセスの実行前または実行後に条件を評価するように、ループ・マーカーを構成できます。特定の反復回数後に停止するように、ループ・マーカーを構成することもできます。

ループ・マーカーを構成するには、BPMNサービス・エンジンがサブプロセスの繰返しを続行する必要があるかどうかを決定するループ条件を記述する必要があります。

マルチインスタンス・マーカー

マルチインスタンス・マーカーによって、データのセット上の各要素のサブプロセスを実行できます。BPMNサービス・エンジンがマルチインスタンス・ループ・マーカーを使用してサブプロセスを実行すると、インスタンスのセット、データのセット上の各要素のインスタンスが作成されます。パラレルまたは順番にこれらのインスタンスを処理するように、マルチインスタンス・マーカーを構成できます。

マルチインスタンス・ループ・マーカーの次のフィールドには、式を記述する必要があります。

  • ループ・カーディナリティ

    この式は、サブプロセス内に作成するトークンの数を定義します。

  • 完了条件

    この式は、サブプロセスの繰返しを停止する時期を決定します。BPMサービス・エンジンは、トークンがサブプロセスを完了するたびにこの条件を評価します。条件がtrueと評価されると、サブプロセスが完了したとみなされ、インスタンスはプロセス内の次のフロー・オブジェクトに移動します。

24.6.1 ループ・マーカーの構成方法

ループ・マーカーを構成して、サブプロセスを複数回実行できます。

ループ・マーカーを構成するには:

  1. サブプロセスを右クリックします。

  2. 「プロパティ」を選択します。

  3. 「ループ特性」タブをクリックします。

  4. 「ループ」を選択します。

  5. 次のように、ループ条件を指定します。

    1. 式言語を選択します。

      使用可能なオプションは「シンプル」または「XPath」です。

    2. 下のテキスト領域に、ループを駆動する条件を記述します。

      オプションで、式ビルダーを使用して条件を記述できます。式ビルダーを起動するには、テキスト領域の横にある「式ビルダー」ボタンをクリックします。

  6. オプションで、次のように、実行するループの最大回数を指定できます。

    1. 「ループ最大」を選択します。

    2. 数字を指定します。

  7. 「次より前」を選択してフロー・オブジェクトの実行前に条件を評価するか、選択解除してフロー・オブジェクトの実行後に条件を評価します。

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

24.6.2 マルチインスタンス・マーカーの構成方法

マルチインスタンス・マーカーを構成して、データのセットに基づいてサブプロセスを複数回実行できます。

マルチインスタンス・マーカーを構成するには:

  1. サブプロセスを右クリックします。

  2. 「プロパティ」を選択します。

  3. 「ループ特性」タブをクリックします。

  4. 「MultiInstance」を選択します。

  5. 次のように、ループ・カーディナリティを指定します。

    1. 式言語を選択します。

      使用可能なオプションは「シンプル」または「XPath」です。

    2. 下のテキスト領域に、ループ・カーディナリティの指定を記述します。

      オプションで、式ビルダーを使用して条件を記述できます。式ビルダーを起動するには、テキスト領域の横にある「式ビルダー」ボタンをクリックします。

  6. オプションで、次のように、完了条件を指定できます。

    1. 式言語を選択します。

      使用可能なオプションは「シンプル」または「XPath」です。

    2. 下のテキスト領域に、ループが完了したかどうかを決定する条件を記述します。

      オプションで、式ビルダーを使用して条件を記述できます。式ビルダーを起動するには、テキスト領域の横にある「式ビルダー」ボタンをクリックします。

  7. データ出力を指定するには、「ループ・データ出力」フィールドの横にある「参照」ボタンをクリックします。

    データ・オブジェクトまたはサブプロセスに渡す複合データ・オブジェクトの属性を選択できます。通常、選択したデータ・オブジェクトはアイテムのコレクションです。

  8. データ入力を指定するには、「ループ・データ入力」フィールドの横にある「参照」ボタンをクリックします。

    データ・オブジェクトまたはサブプロセスの結果を割り当てる複合データ・オブジェクトの属性を選択します。

  9. オプションで、「順次」チェック・ボックスを選択して、次のトークンがサブプロセスの実行を開始する前に各トークンがサブプロセスを完了する必要があることを指定します。

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

24.7 シンプルな式ビルダーを使用した式および条件の記述

シンプルな式ビルダーには、式を入力するテキスト領域および使用できる変数のリストが含まれています。

シンプルな式ビルダーは、次の機能をサポートしています。

  • 構文の強調表示

    シンプルな式ビルダーでは、式内の構文を強調表示して、読取りおよび理解を容易にします。異なるデータ型の値には異なる色が使用されます。

  • 自動コード補完

    メソッドを呼び出すドットの入力後に数秒待機すると、シンプルな式ビルダーでは、そのデータ・オブジェクトで呼び出すことができる使用可能な関数のリストが表示されます。シンプルな式ビルダーに式を補完させる場合、[Ctrl]+[Space]を押すことができます。

  • オンザフライのエラー・チェック

    式を記述すると、シンプルな式ビルダーで式がチェックされます。コンパイルされていない式の下に赤い波線が引かれます。エラーの原因を見つけるには、赤い波線の上にカーソルを置き、エラーの説明を示すツールチップが表示されるのを待ちます。

図24-1は、シンプルな式ビルダーのダイアログ・ボックスを示しています。

図24-1 シンプルな式ビルダー

図24-1の説明が続きます
「図24-1 シンプルな式ビルダー」の説明

24.7.1 式内のデータ・オブジェクトの使用方法

式内のデータ・オブジェクトを使用して、データ・オブジェクトに基づいて計算を実行できます。

式内のデータ・オブジェクトを使用するには:

  1. 「式ビルダー」を開きます。
  2. データ・オブジェクトを挿入する場所にカーソルを置きます。
  3. 「変数」セクションから、データ・オブジェクトを選択します。
  4. 「式に挿入」をクリックします。

    「式」テキスト領域に、選択したデータ・オブジェクトが表示されます。

24.7.2 式内の関数の使用方法

式内の関数を使用するには、シンプルな式ビルダーの式リストから式を選択することも、「式」テキスト領域に関数名を入力することもできます。名前の一部を記述して[Ctrl]+[Space]を押すと、式ビルダーによって関数の名前が補完されます。

シンプルな式ビルダーを使用して式で関数を使用するには:

  1. 「式ビルダー」を開きます。
  2. 関数を挿入する場所にカーソルを置きます。
  3. 「関数」セクションから、関数のタイプを選択します。
  4. 「関数」リストから、関数を選択します。

    「説明」フィールドは、関数の説明を示しています。

  5. 「式に挿入」をクリックします。

    「式」テキスト領域に、選択した関数が表示されます。

24.8 シンプルな式ビルダーでサポートされている演算子

シンプルな式ビルダーでは、いくつかの演算子タイプを使用して式を作成できます。

  • 算術演算子

  • 単項演算子

  • 等号演算子と関係演算子

  • 条件演算子

これらの演算子を使用して式および条件を作成し、プロセス・フローを駆動できます。一般に、これらの式は、プロセス内のデータ・オブジェクトに基づいて計算を実行します。式と条件はデータ・オブジェクトの値を使用して作成できますが、値は変更できません。

次の式の例では、演算子が使用されています。

  • totalAmount - discount

  • deadlineExpired and orderStatus !=complete

  • activationCount > 3

  • unitsSold <= 1200

  • 'now' + '2m'

  • deadline - '1h'

  • not formComplete

表24-1表24-2表24-3表24-4および表24-5は、シンプルな式ビルダーでサポートされている演算子を説明しています。

表24-2 算術演算子

演算子 名前 説明

+

加算

数値データ型を加算します。

文字列どうしを連結します。

間隔値を日時値に加算します。

-

減算

数値データ型を減算します。

日時値から間隔値を減算します。

*

乗算

数値データ型を乗算します。

/

除算

数値データ型を除算します。

rem

剰余

除数が被除数で除算しきれない場合の剰余を計算します。

( )

優先順位

演算式の評価の順序を指定します。

表24-3 単項演算子

演算子 名前 説明

+

プラス

数値オペランドの値には影響しません。ある値が正であることを明示的に示す場合に使用します。

-

マイナス

算術式の符号をマイナスにします数字の符号を反転します。

NOT

NOT

論理補数演算子。ブール式の値を否定します。

表24-4 等号演算子と関係演算子

演算子 名前 説明

=

等しい

最初のオペランドが2番目のオペランドと等しい場合にTrueを戻します。

!=

等しくない

最初のオペランドが2番目のオペランドと等しくない場合にtrueを戻します。

>

より大きい

最初のオペランドが2番目のオペランドより大きい場合にTrueを戻します。

>=

次以上

最初のオペランドが2番目のオペランド以上の場合にTrueを戻します。

<

より小さい

最初のオペランドが2番目のオペランドより小さい場合にtrueを戻します。

<=

次以下

最初のオペランドが2番目のオペランド以下の場合にTrueを戻します。

表24-5 条件演算子

演算子 名前 説明

and

条件付きAND

両方のオペランドがtrueと評価された場合にtrueを戻します。

or

条件付きOR

1つのオペランドがTrueと評価された場合にTrueを戻します。

24.8.1 演算子の優先順位

演算子の優先順位とは、コンパイラが演算子を評価する順序のことです。式内の演算子の優先順位は、カッコを使用して変更できます。

シンプルな式ビルダーの演算子の優先順位は次のとおりです。

  • 単項のプラスおよび単項のマイナス

  • 乗算、除算、剰余

  • 加算および減算

  • 次より小さい、次より大きい、次以下、次以上

  • 等しい、等しくない

  • NOT

  • 条件付きAND

  • 条件付きOR

24.9 シンプルな式ビルダーでサポートされている関数

シンプルな式ビルダーでは、式および条件を計算および操作するのに使用できる関数をサポートしています。

次の項では、シンプルな式ビルダーでサポートされている関数を説明しています。

24.9.1 文字列関数

次の関数によって、文字列変数およびリテラルを操作し、これらに基づいて計算を実行できます。

24.9.1.1 length

この文字列内の文字数を戻します。

シグネチャ:

int length(string stringToMeasure)

引数:

string - 測定する文字列。

例:

name.length()

length(name)

name.length

24.9.1.2 連結

1つ以上の文字列を連結します。

例:

name + " " + lastName

"Oracle " + "BPM"

24.9.1.3 contains

文字列に指定された文字列が含まれる場合にtrueを戻します。

シグネチャ:

boolean contains(string mainString, string subString)

引数:

subString - 検索する文字列。

例:

productName.contains("book")

contains(productName, "book")

24.9.1.4 startsWith

文字列が指定された文字列で始まる場合にtrueを戻します。

シグネチャ:

boolean startsWith(string mainString, string subString)

引数:

subString - 文字列の最初で検索する文字列。

例:

productId.startsWith("ABC")

startsWith(productId, "ABC")

24.9.2 数値関数

次の関数によって、数値のデータ型を使用した計算を実行できます。使用可能な数値のデータ型は、倍精度浮動小数点、小数および整数です。

24.9.2.1 floor

この関数を呼び出すのに使用される数値よりも小さい値のうち最大の整数値を戻します。倍精度浮動小数点および小数のデータ型でこの関数を使用できます。

シグネチャ:

int floor(double number)

int floor(decimal number)

引数:

double / decimal - この関数のベースとして使用する数値。

例:

number.floor()

floor(number)

number.floor

floor(totalAmount/3)

temperature.floor()

24.9.2.2 ceil

この関数を呼び出すのに使用される数値よりも大きい値のうち最小の整数値を戻します。倍精度浮動小数点および小数のデータ型でこの関数を使用できます。

シグネチャ:

int ceil(double number)

int ceil(decimal number)

引数:

double / decimal - この関数のベースとして使用する数値。

例:

number.ceil()

ceil(number)

number.ceil

24.9.2.3 round

この数字に最も近い整数値を戻します。同等に近い整数値が2つある場合、大きい方を戻します。倍精度浮動小数点および小数のデータ型でこの関数を使用できます。

シグネチャ:

int round(double number)

int round(decimal number)

引数:

double / decimal - この関数のベースとして使用する数値。

例:

number.round()

round(number)

number.round

24.9.2.4 abs

この数字の絶対値を戻します。整数、倍精度浮動小数点および小数のデータ型でこの関数を使用できます。

シグネチャ:

int abs(int number)

double abs(double number)

decimal abs(decimal number)

引数:

int / double / decimal - この関数のベースとして使用する数値。

例:

number.abs()

abs(number)

number.abs

24.9.3 日時および期間の関数

次の関数によって、時間変数およびリテラルを操作し、これらに基づいて計算を実行できます。使用可能な時間のデータ型は、日時および期間です。

24.9.3.1 now

システムの現在の日付および時刻の特別な表記。

例:

setReceivedDate('now')

24.9.3.2 加算

間隔を日時の変数または値に加算します。

例:

today + '1d3h'

now + 3d

vacationStartingDate + '1M'

24.9.3.3 減算

間隔を日時の変数または値から減算します。

例:

today - '2d3h25m'

now - age

expirationDate - '7d'

24.9.3.4 year

この日時の変数の年を戻します。

シグネチャ:

int year(dateTime date)

引数:

dateTime - 年の取得元の日付。

例:

today.year()

year(today)

today.year

24.9.3.5 month

この日時の変数の月を戻します。

シグネチャ:

int month(dateTime date)

引数:

dateTime - 月の取得元の日付。

例:

today.month()

month(today)

today.month

24.9.3.6 day

この日時の変数の日を戻します。

シグネチャ:

int day(dateTime date)

引数:

dateTime - 日の取得元の日付。

例:

today.day()

day(today)

today.day

24.9.3.7 hours

この日時の変数の時間を戻します。

シグネチャ:

int hours(dateTime date)

引数:

dateTime - 時間の取得元の日付。

例:

today.hours()

hours(today)

today.hours

24.9.3.8 minutes

この日時の変数の分を戻します。

シグネチャ:

int minutes(dateTime date)

引数:

dateTime - 分の取得元の日付。

例:

today.minutes()

minutes(today)

today.minutes

24.9.3.9 seconds

この日時の変数の秒を戻します。

シグネチャ:

int seconds(dateTime date)

引数:

dateTime - 秒の取得元の日付。

例:

today.seconds()

seconds(today)

today.seconds

24.9.3.10 timezone

UTCからのオフセットを表す期間値を戻します。

シグネチャ:

duration timezone()

引数:

-

例:

'1995-02-03 23:30:23-3:30'.timezone()

timezone('1995-02-03 23:30:23-3:30')

'1995-02-03 23:30:23-3:30'.timezone

この例の結果は「-3h30m」です。

24.10 XPath式ビルダーを使用した式の記述

Oracle BPMでは、SOA XPath式ビルダーを使用して式を記述できます。この式ビルダーは、標準XPATH言語をサポートしています。

XPath式ビルダーでは、式で使用できる変数のリストが表示されます。また、式で使用できる関数のリストも表示されます。関数を選択すると、式に追加する前にその関数の構文および説明をプレビューできます。

XPathに対してサポートされている関数の詳細は、Oracle SOA SuiteでのSOAアプリケーションの開発のXPath拡張関数に関する項を参照してください。

さらに、Oracle BPMはBPM拡張関数のグループをサポートしています。

図24-2は、XPath式ビルダーを示しています。

24.10.1 XPath式への変数の追加方法

XPath式に変数を追加して、変数に基づいて計算を実行できます。

XPath式に変数を追加するには:

  1. XPath式ビルダーを起動します。
  2. 変数を挿入する場所にカーソルを置きます。
  3. 「変数」リストから変数を選択します。
  4. 「式に挿入」をクリックします。

    「式」テキスト領域に、選択した変数が表示されます。

24.10.2 XPath式内の関数の使用方法

XPath式で関数を呼び出すことができます。XPath式ビルダーでは、機能ごとにグループ化された関数のリストを参照できます。

XPath式で関数を使用するには:

  1. XPath式ビルダーを起動します。
  2. 式を挿入する場所にカーソルを置きます。
  3. 「関数」リストから関数カテゴリを選択します。

    「関数」リストの下に、選択したカテゴリで使用可能な関数のリストが表示されます。

  4. 使用可能な関数のリストから関数を選択します。
  5. 「式に挿入」をクリックします。

    「式」テキスト領域に、選択した関数が表示されます。

24.11 配列の使用

いくつかのサービス操作は、配列タイプの引数が必須であるか、戻す場合があります。この配列は、単純タイプまたは複合タイプのコレクションであることができます。

配列タイプのパラメータをサービス操作に提供する場合は、次のことを実行できます。

  • 配列を戻す操作の起動

  • 配列リテラルを使用した配列の定義

    配列リテラルの定義の詳細は、「配列リテラルの使用」を参照してください。

通常、プロセス操作が配列タイプの引数を戻す場合、データ・アソシエーションを使用して、配列の要素のいずれかまたは要素のいずれかの属性をデータ・オブジェクトに割り当てます。データ・アソシエーションの詳細は、「データ・アソシエーション・エディタの概要」を参照してください。

例24-2に、配列の要素にアクセスする式を示します。この例での配列の名前はpersonsで、アクセスする要素は配列の3番目の要素です。

配列の最初の要素の索引が1であることに注意してください。たとえば、persons配列内の最初の要素にアクセスするには、persons[1]という式を記述する必要があります。

例24-2 配列の要素にアクセスする式

persons[3]

24.11.1 配列内の要素の属性へのアクセス

シンプルな式言語では、配列内の要素の属性にアクセスすることもできます。たとえば、personsの配列を戻すサービス操作を起動し、配列内の要素の名前属性にアクセスして、データ・アソシエーションを使用してプロセス・データ・オブジェクトに渡すことができます。

例24-3に、配列の要素の属性にアクセスする式を示します。この例での配列の名前はpersonsで、アクセスする要素は配列の3番目の要素、アクセスする属性はその人物の名前です。

例24-3 配列の要素の属性にアクセスする式

persons[1].name

24.11.2 配列の長さの取得

シンプルな式言語を使用すると、配列の長さを取得してプロセス・ロジックでそれを使用することができます。これは、マルチインスタンス・マーカーのループ・カーディナリティを定義する場合によく使用します。マルチインスタンス・マーカーの詳細は、「サブプロセス内のループ・マーカーおよびマルチインスタンス・マーカーでの条件の記述」を参照してください。

配列の長さを取得するには、length関数を呼び出す必要があります。

例24-3は、配列の長さを取得する式を示しています。この例の配列の名前はpersonsです。例では関数名の後にカッコを使用していますが、この関数にはパラメータが必要ないため、カッコを省略してもかまいません。

例24-4 配列の長さを取得する式

persons.length()

24.12 リテラルの使用

リテラルは、特定の値を表すことができます。リテラルは、値をデータ・オブジェクトに割り当てる場合にも、起動するメソッドにパラメータを渡す場合にも使用できます。値をデータ・オブジェクトに割り当てるには、データ・アソシエーションまたはスクリプト・タスクを使用できます。

シンプルな式言語は、次のタイプのリテラルをサポートします。

  • 文字列リテラル

  • 時間リテラル

  • 期間リテラル

  • 配列リテラル

24.12.1 文字列リテラルの使用

リテラルを使用して値を文字列型のデータ・オブジェクトに割り当てることができます。文字列リテラルを使用すると、文字列型のパラメータをメソッドに提供することもできます。

文字列リテラルを定義するには、単語または一連の単語を二重引用符で囲んで記述する必要があります。文字列に数値を含めることもできます。

次に、文字列リテラルの例を示します。

  • "Wednesday"

  • "marie@oracle.com"

  • "500 Oracle Parkway"

  • "+1.650.506.7000"

24.12.2 時間リテラルの使用

リテラルを使用して値を時間型のデータ・オブジェクトに割り当てることができます。時間リテラルを使用すると、時間型のパラメータをメソッドに提供することもできます。

時間リテラルは、様々なレベルの精度を使用して日付を定義できます。

次に、時間型の変数の指定に使用できる様々な時間リテラルの例を示します。

  • '13:30'

  • '13:30:23'

  • '13:30:23.001023'

  • '13:30:23.001023Z'

  • '13:30:23.001023-05'

  • '13:30:23.001023-3:30'

  • '1979-02-19'

  • '1979-02-19 13:30'

  • '1979-02-19 13:30:23'

  • '1979-02-19 13:30:23.001023'

  • '1979-02-19 13:30:23.001023Z'

  • '1979-02-19 13:30:23.001023-05'

  • '1979-02-19 13:30:23.001023-3:30'

  • '1979-02-19T13:30'

  • '1979-02-19T13:30:23'

  • '1979-02-19T13:30:23.001023'

  • '1979-02-19T13:30:23.001023Z'

  • '1979-02-19T13:30:23.001023-05'

  • '1979-02-19T13:30:23.001023-3:30'

  • '19790219T'

  • '19790219T133023.001023-330'

24.12.3 期間リテラルの使用

期間間隔リテラル型のデータ・オブジェクトに値を割り当てることができます。間隔リテラルを使用すると、期間型のパラメータをメソッドに提供することもできます。

期間リテラルは、様々なレベルの精度を使用して日付を定義できます。

時間リテラルを定義するには、値の組合わせを使用し、その後に時間の単位を一重引用符で囲んで続ける必要があります。

表24-6に、使用可能な時間単位フィールドを示します。

表24-6 時間単位接尾辞

時間単位接尾辞 説明

Y

M

dまたはD

hまたはH

m

sまたはS

x

マイクロ秒

表24-7に、時間隔リテラルの例を示します。

表24-7 時間隔リテラルの例

説明

'1Y1M3h2m1.500s'

1年、1か月、3時間、2分、1.500ミリ秒

'1.5h'

1.5時間

'3M15d'

3か月と15日

24.12.4 配列リテラルの使用

リテラルを使用して値を配列型のデータ・オブジェクトに割り当てることができます。配列リテラルを使用すると、配列型のパラメータをメソッドに提供することもできます。

配列リテラルを定義するには、値をカンマで区切り、大カッコで囲んで、値リストを提供する必要があります。データ・オブジェクトからリテラルまたは属性を使用して値を指定することもできます。

次のリストは、配列リテラルの例を示します。

  • [ "One", "Two", "Three" ]

  • [ 1, 2, 3 ]

  • [ customer.firstName, customr.lastName]

24.13 XPath BPM拡張関数

BPM拡張関数では、XPathを使用して様々な要素にアクセスできます。XPathでは、これは、BPMNプロセス内に記述された要素の値にアクセスする唯一の方法です。

  • プロセスおよびプロジェクト・データ・オブジェクト

  • 引数

  • アクティビティ・インスタンス属性

また、Oracle SOA Suiteに用意されているXPath拡張関数を使用することもできます。詳細は、Oracle SOA SuiteでのSOAアプリケーションの開発のXPath拡張関数に関する項を参照してください。

24.13.1 getActivityInstanceAttribute

特定のアクティビティ・インスタンス属性の値を戻します。サポートされているアクティビティ・インスタンス属性の詳細は、「アクティビティ・インスタンス属性の概要」を参照してください。

シグネチャ:

bpmn:getActivityInstanceAttribute(activityName, attributeName)

引数:

activity name - アクティビティ・インスタンス属性を含むアクティビティの名前。

attributeName - 値を検索するアクティビティ・インスタンス属性の名前。

例:

bpmn:getActivityInstanceAttribute(userTask, priority)

bpmn:getActivityInstanceAttribute(userTask, title)

24.13.2 getDataInput

データ・アソシエーション内の特定の入力引数の値を戻します。

シグネチャ:

bpmn:getDataInput(dataInputName)

引数:

dataInputName - データ入力引数の名前を含む文字列。

24.13.3 getDataObject

特定のデータ・オブジェクトの値を戻します。

シグネチャ:

bpmn:getDataObject(dataObjectName)

引数:

dataObjectName - 値を取得するデータ・オブジェクトの名前を含む文字列。

例:

bpmn:getDataObject(discount)

bpmn:getDataObject(approveTermsOutcome)

24.13.4 getDataOutput

データ・アソシエーション内の特定のデータ出力引数の値を戻します。

シグネチャ:

pmn:getDataOutput(dataOutputName)

引数:

dataOutputName - データ出力引数の名前を含む文字列。

24.13.5 getGatewayInstanceAttribute

ゲートウェイでの特定のアクティビティ・インスタンス属性の値を戻します。ゲートウェイでサポートされているアクティビティ・インスタンス属性の詳細は、「アクティビティ・インスタンス属性の概要」を参照してください。

シグネチャ:

bpmn:getGatewayInstanceAttribute(gatewayName, attributeName)

引数:

gatewayName - 値を取得する属性を含むゲートウェイの名前を含む文字列。

attributeName - 値を取得する属性の名前を含む文字列。

24.13.6 getProcessInstanceAttribute

プロセス・アクティビティ・インスタンス属性に対応する値を戻します。サポートされているアクティビティ・インスタンス属性の詳細は、「アクティビティ・インスタンス属性の概要」を参照してください。

シグネチャ:

bpmn:getProcessInstanceAttribute(attributeName)

引数:

attributeName - 値を検索するプロセス・インスタンス属性の名前を含む文字列。

例:

bpmn:getProcessInstanceAttribute(owner)

24.13.7 getBusinessParameter

ビジネス・パラメータに対応する値を戻します。

シグネチャ:

bpmn:getBusinessParameter(businessParametername)

引数:

businessParameterName - 値を検索するビジネス・パラメータの名前を含む文字列。

例:

bpmn:getBusinessParameter(APPROVED_DISCOUNT)

bpmn:getBusinessParameter(businessParameterName)