データの関連付けおよび操作
アプリケーションのデータを保存するためのビジネス・タイプおよびオブジェクトを定義した後、フロー要素内でのその使用を管理する必要があります。
式の使用
標準的な演算子および関数を使用した式を使用して、データ・オブジェクトに格納されているデータの計算を評価および実行します。
-
ヒューマン・タスク: 式を使用して、割当て先を動的に決定します。
-
条件付きシーケンス・フロー: 式を使用して、条件を定義します。
-
タイマー捕捉イベント: 式を使用して、タイマー条件を構成します。
-
通知タスク: 式を使用して、動的な電子メール通知を定義します。
-
サブプロセス・タスク: 式を使用して、条件付きでサブプロセスを呼び出します。
式を作成するには、データ関連付けの最中またはフロー要素のプロパティから、「Expression Editor」
アイコンまたは「Expressions Mode」フィールドをクリックします。 「Expression Editor」ダイアログ・ボックスが開きます。

図expression_editor.pngの説明
-
ほとんどの場合、「Expression Mode」フィールドは「Simple」に設定されていますが、一部のフロー要素では「Plain Text」および「XML Literal」オプションがリストされます。 この下のフィールドに、構成したとおりに式が表示されます。
-
「Data Objects」または「Operators」タブを選択し、式のデータ・オブジェクトと演算子を選択して、式を作成します。 「Insert Into Expression」をクリックして選択したオブジェクトまたは演算子を追加するか、手動で入力します。
-
その型に使用できるオプションを表示するには、式フィールドで、データ・オブジェクトの後ろに「.」(ピリオド)を入力します(完了アクションをトリガーします)。
-
「Validate」をクリックして、式フィールドに結果を表示します。 「Error」タブに、検出されたエラーがリストされます。
関数の使用
データ型に応じて、次の関数を式に含めることができます。 たとえば、文字列関数を使用して整数値を渡すことができます。
-
String - テキスト
-
int - 整数
-
double - 10進数
-
Boolean - trueまたはfalse
-
char - シングル・キャラクタ
-
byte - 8ビット、データの最小単位
-
short - スモール整数
-
long - ラージ整数
-
float - ラージ10進数
-
Date - 日付のみ
-
Time - 時間のみ
-
DateTime - 日時
関数のガイドラインおよび例
-
フィールド名がinputDataObjectで、型がstringである必要がある場合、string(inputDataObject)と入力します。
-
データ型
intのフィールドには、整数のみを含めることができます。 型doubleまたはfloatのフィールドには10進数を含めることができます。 -
データの関連付けで、入力タイプが
intの場合、出力タイプは、int, doubleまたはfloatなどの任意の数値データ・タイプにすることができます。 ただし、出力タイプがintの場合は、入力タイプもintでなければならず、エラーが発生します。 必要に応じて、round()、int()、floor()またはceil()関数を使用します。 -
フィールド名がloanAppDataObject.form.incomeの場合、基本フォームはround(loanAppDataObject.form.income)またはloanAppDataObject.form.income.round()に、Webフォームの場合はround(loanAppDataObject.income)またはloanAppDataObject.income.round()に変更します。
単純な式について
単純な式は、基本的な式言語およびサポートを使用して定義されます。 これらの演算子を使用して、プロセス・フローを定義する式および条件を記述します。 通常、これらの式はビジネス・プロセス内のデータ・オブジェクトに基づいて計算を実行します。 データ・オブジェクトの値を使用して式および条件を記述することができますが、データ・オブジェクト内の値を明示的に変更することはできません。
次に、演算子を使用した式の例を示します。
-
totalAmount - discount
-
activationCount > 3
-
unitsSold <= 1200
演算子の優先度
演算子の優先度は、コンパイラが演算子を評価する順序を定義します。 カッコを使用して式での演算子の優先度を変更できます。 「プロセス」では、演算子の優先順位は次のとおりです:
-
加算、減算
-
乗算、除算、余り
-
プラス、マイナス
-
より小さい、より大きい、以下、以上
-
等しい、等しくない
-
否定
-
条件付きAnd
-
条件付きOr
算術演算子
| オペレータ | 名前 | 説明 |
|---|---|---|
| + | 加算 | 数値データ型を加算し、文字列を連結します |
| - | 減算 | 数値データ型を減算します |
| * | 乗算 | 数値データ型を乗算します |
| / | 除算 | 数値データ型を除算します |
| % | 剰余 | 除数が被除数を割りきれない除算の余りを計算します |
| () | 優先度 | 演算式の評価順序を示します |
単項演算子
| オペレータ | 名前 | 説明 |
|---|---|---|
| + | プラス | 数値オペランドの値には影響しません。 特定の値が正の数であることを明示的に示すために使用されます。 |
| - | マイナス | 演算式を否定します。 |
| ! | 否定 | 論理完全演算子です。 ブール式の値を否定します。 |
等価演算子および関係演算子
| オペレータ | 名前 | 説明 |
|---|---|---|
| = または == | 等しい | 最初のオペランドと2番目のオペランドが等しい場合にtrueを返します |
| != | 等しくない | 最初のオペランドと2番目のオペランドが等しくない場合にtrueを返します |
| > | より大きい | 最初のオペランドが2番目のオペランドより大きい場合にtrueを返します |
| > = | 以上 | 最初のオペランドが2番目のオペランドより大きいか等しい場合にtrueを返します |
| < | より小さい | 最初のオペランドが2番目のオペランドより小さい場合にtrueを返します |
| <= | 以下 | 最初のオペランドが2番目のオペランドより小さいか等しい場合にtrueを返します |
条件付き演算子
| オペレータ | 名前 | 説明 |
|---|---|---|
| and | 条件付きAnd | 両方のオペランドがtrueに評価された場合にtrueを返します |
| or | 条件付きOr | どちらかのオペランドがtrueに評価された場合にtrueを返します |
文字列演算子
| オペレータ | 説明 | 式の使用方法 | 使用結果 |
|---|---|---|---|
| + | 文字列の連結 | "pine" + "apple" | "pineapple" |
| == | 等しい | "apples" == "apples" | true |
| != | 等しくない | "apples" != "oranges" | true |
| > | より大きい | "word" > "work" | false |
| > = | 以上 | "work" >= "work" | true |
| < | より小さい | "word" < "work" | true |
| <= | 以下 | "work <= "work" | true |
| contains | 最初の引数文字列に2番目の引数文字列が含まれる場合にtrueを返し、それ以外はfalseを返します | "caramel".contains("ram") | true |
| endsWith | 最初の引数文字列が2番目の引数文字列で終わる場合にtrueを返し、それ以外はfalseを返します | "immutable".endsWith("table") | true |
| length | 文字列の文字の数を返します | "house".length() | 5 |
| lowerCase | 引数内のすべての文字を小文字に変換して文字列を返します | "Example".lowerCase() | "example" |
| startsWith | 最初の引数文字列が2番目の引数文字列で始まる場合にtrueを返し、それ以外はfalseを返します | "caramel".startsWith("car") | true |
| substring | 最初の引数の部分文字列(2番目の引数で指定した場所から文字列の最後まで)を返します | "care".substring(1) | "are" |
| substring | 最初の引数の部分文字列(2番目の引数で指定した場所から、3番目の引数で指定した長さ)を返します | "care".substring(0,3) | "car" |
| upperCase | 引数内のすべての文字を大文字に変換して文字列を返します | "Example".upperCase() | EXAMPLE |
整数演算子
| オペレータ | 説明 | 式の使用方法 | 使用結果 |
|---|---|---|---|
| + | 加算 | 2 + 8 | 10 |
| - | 減算 | 7 - 4 | 3 |
| * | 乗算 | 3 * 4 | 12 |
| / | 除算 | 3 / 2 | 1.5 |
| % | 剰余 | 3 % 2 | 1 |
| == | 等しい | 12 == 13 | false |
| != | 等しくない | 12 != 13 | true |
| > | より大きい | 15 > 16 | false |
| > = | 以上 | 15 >= 15 | true |
| < | より小さい | 12 < 10 | false |
| <= | 以下 | 12 <= 12 | true |
| abs | 数の絶対値を返します | - 6 | 6 |
非整数演算子
| オペレータ | 説明 | 式の使用方法 | 使用結果 |
|---|---|---|---|
| floor | 引数以下の整数の最大の(正の無限大に最も近い)数を返します | floor(5.60) | 5 |
| ceil | 引数以上の整数の最小の(負の無限大に最も近い)数を返します | ceil(5.60) | 6 |
| round | 引数に最も近い整数である数を返します | round(5.60) | 6 |
日付および時間演算子
| オペレータ | 説明 |
|---|---|
| + | 加算(2番目の引数が期間の場合にのみ有効) |
| - | 減算(2番目の引数が期間の場合にのみ有効) |
| == | 等しい |
| != | 等しくない |
| > | より大きい |
| > = | 以上 |
| < | より小さい |
| <= | 以下 |
| format | 提供された書式ピクチャを使用して、日時の書式設定された文字列を返します |
| year | 日時引数の年コンポーネントを表す数を返します |
| month | 日時引数の月コンポーネントを表す数を返します |
| day | 日時引数の日付コンポーネントを表す数を返します |
| hours | 日時引数の時間コンポーネントを表す、0から23の間(両端を含む)の数を返します |
| minutes | 日時引数の分コンポーネントを表す、0から59の間(両端を含む)の数を返します |
| 秒 | 日時引数の秒コンポーネントを表す、0から59の間(両端を含む)の数を返します |
| timezone | UTCからの時間オフセットを表す、区間値を返します |
ブール演算子
| オペレータ | 説明 | 式の使用方法 | 使用結果 |
|---|---|---|---|
| == | 等しい | true == true | true |
| != | 等しくない | true != false | true |
| and | 条件付きAnd | true and false | false |
| or | 条件付きOr | true or false | true |
| not | ブール式の値を反転する論理完全演算子 | not true | false |
期間演算子
| オペレータ | 説明 |
|---|---|
| == | 等しい |
| != | 等しくない |
| > | より大きい |
| > = | 以上 |
| < | より小さい |
| <= | 以下 |
Base64Binary演算子
| オペレータ | 説明 |
|---|---|
| == | 等しい |
| != | 等しくない |
配列演算子
| オペレータ | 説明 |
|---|---|
| [ ] | 特定の要素を配列に入れます |
| == | 等しい |
| != | 等しくない |
| length | 配列内に含まれる要素の数を返します |
その他の演算子
| オペレータ | 説明 |
|---|---|
| == | 等しい |
| != | 等しくない |
特別な定数
| 定数 | 説明 |
|---|---|
| null | Null値 |
| true | 論理true |
| false | 論理false |
| 'now' | 現在の日時 |
キャスト
場合によっては、必ずしも互換性がない型を割り当てるために、型の検証をバイパスすることが望ましい場合があります。 たとえば、int値をstring値に割り当てる必要がある場合、そのことを実行するために、次のような変換操作を使用できます。
<conversionTypeName> ( <valueToConvert> )
'conversionTypeName'は、値として表示する型です。
次にいくつかの変換例を示します。
-
string(myIntDO)
-
int(myStringDO)
-
duration(mystringDO)
ノート:
プリミティブ型のみをキャスト先にできるため、conversionTypeNameには有効な値を持つ型のみを指定できます。
互換性のない2つの値を割り当てると、ランタイム・エラーになります。
アイデンティティ・サービス
| 関数 | 説明 | 使用可能 | 関数の使用プロトタイプ | 使用例 |
|---|---|---|---|---|
| getManager | 特定ユーザーのマネージャを含む文字列を返します。 | プロセス全体 | IdentityService.getManager(<userName:string>): string | IdentityService.getManager("wfaulkner") |
| getManager | 指定されたレルム内の特定ユーザーのマネージャを含む文字列を返します。 | プロセス全体 | IdentityService.getManager(<userName: string>,<realm:string>): string | IdentityService.getManager("wfaulkner", "myRealm") |
ヒューマン・タスク
| 関数 | 説明 | 使用可能 | 関数の使用プロトタイプ | 使用例 |
|---|---|---|---|---|
| getPerformer | 割当て先選択 | HumanTask.getPerformer(): string | HumanTask.getPerformer() | |
| getLastPerformer | 割当て先選択 | HumanTask.getLastPerformer(): string | HumanTask.getLastPerformer() |
フォーム
| 関数 | 説明 | 使用可能 | 関数の使用プロトタイプ | 使用例 |
|---|---|---|---|---|
| getWebform | 指定したWebフォーム・データ・オブジェクトのPDFイメージを表す、base64でエンコードされた値を返します。 | プロセス全体 | Form.getWebform(<webFormDataObject:catalogObject>): base64 | Form.getWebform(myWebformDO) |
| getWebform | 指定したWebフォーム・データ・オブジェクトのイメージを、2番目の引数として渡された形式で表す、base64でエンコードされた値を返します(有効な値はPDFまたはPNGです)。 | プロセス全体 | Form.getWebform(<webFormDataObject:catalogObject>,<format:string>): base64 | Form.getWebform(myWebformDO, "PNG") |
| getWebform | 3番目の引数で指定された名前を持つ、指定したWebフォーム・データ・オブジェクトのイメージを、2番目の引数として渡された形式で表す、base64でエンコードされた値を返します(有効な値はPDFまたはPNGです)。 | プロセス全体 | Form.getWebform(<webFormDataObject:catalogObject>,<format:string>,<webFormName:string>): base64 | Form.getWebform(myWebformDO, "PNG","MyWebformDO") |
ドキュメント・サービス
| 関数 | 説明 | 使用可能 | 関数の使用プロトタイプ | 使用例 |
|---|---|---|---|---|
| getDocumentAssetProperty | 特定のドキュメント・アセットについて、IDやタイプなど、一部のプロパティを取得します。 | プロセス全体 | DocumentService.getDocumentAssetProperty(<propertyName:string>,<documentAssetName:string>): string | DocumentService.getDocumentAssetProperty("Id","myFolder") |
GetまたはElse
| 関数 | 説明 | 使用可能 | 関数の使用プロトタイプ | 使用例 |
|---|---|---|---|---|
| boolean | バックアップ値とともにオブジェクト・プロパティをリクエストします。 バックアップ値は、最初の引数が欠落しているノードまたは未初期化値に対応する場合に使用されます。 この関数セットは、信頼できないデータ・ソースを処理する際に、初期化が保証されない場合に役立ちます。 | プロセス全体 | GetOrElse.boolean(<expression:boolean>,<fallbackValue:boolean>): boolean | GetOrElse.boolean(myDO.boolAtt, true) |
| string | プロセス全体 | GetOrElse.string(<expression:string>,<fallbackValue:string>): string | GetOrElse.string(myDO.stringAtt, "User") | |
| decimal | プロセス全体 | GetOrElse.decimal( <expression:decimal>, <fallbackValue:decimal>): 小数 | GetOrElse.decimal(myDO.decimalAtt, 25.9) | |
| byte | プロセス全体 | GetOrElse.byte(<expression:byte>,<fallbackValue:byte>): byte | GetOrElse.byte(myDO.byteAtt, byteVar) | |
| short | プロセス全体 | GetOrElse.short(<expression:short>,<fallbackValue:short>): short | GetOrElse.short(myDO.shortAtt, shortVar) | |
| int | プロセス全体 | GetOrElse.int(<expression:int>,<fallbackValue:int>): int | GetOrElse.int(myDO.intAtt, 12) | |
| long | プロセス全体 | GetOrElse.long(<expression:long>,<fallbackValue:long>): long | GetOrElse.long(myDO.longAtt, 1000) | |
| double | プロセス全体 | GetOrElse.double(<expression:double>,<fallbackValue:double>): double | GetOrElse.double(myDO.doubleAtt, 25.3d) | |
| float | プロセス全体 | GetOrElse.float(<expression:float>,<fallbackValue:float>): float | GetOrElse.float(myDO.floatAtt, floatVar) | |
| バイナリ | プロセス全体 | GetOrElse.binary(<expression:base64Binary>,<fallbackValue:base64Binary>): base64Binary | GetOrElse.binary(myDO.binaryAtt, binaryVar) | |
| integer | プロセス全体 | GetOrElse.integer(<expression:integer>,<fallbackValue:integer>): integer | GetOrElse.integer(myDO.integerAtt, 12) | |
| time | プロセス全体 | GetOrElse.time(<expression:time>,<fallbackValue:time>): time | GetOrElse.time(myDO.timeAtt, '9:20') | |
| date | プロセス全体 | GetOrElse.date(<expression:date>,<fallbackValue:date>): date | GetOrElse.date(myDO.dateAtt, '1988/08/08') | |
| dateTime | プロセス全体 | GetOrElse.dateTime(<expression:dateTime>,<fallbackValue:dateTime>): dateTime | GetOrElse.dateTime(myDO.dateTimeAtt, '1988/08/08 9:20') | |
| duration | プロセス全体 | GetOrElse.duration(<expression:duration>,<fallbackValue:duration>): duration | GetOrElse.duration(myDO.durationAtt, '5s') |
ノート:
GetまたはElse関数セットは、構造化プロセス内の通常のデータ関連付けにのみ使用できます。 データ変換または動的プロセスには使用できません。配列に追加
配列は、同じタイプの一連のデータ要素またはデータ要素のリストです。 データ・マッパーで使用可能な「追加」アクションを使用して、単一のデータ要素を配列に追加できます。
「追加」は、構造化プロセスと動的プロセスの両方のデータ関連付けエディタで使用できます。
-
ターゲット式タイプは常に配列である必要があります。
-
ソース式タイプは、ターゲット配列と同じデータ型である必要があります。
唯一の例外は、ソース・データ型をターゲット配列に割り当てることができる場合です。 たとえば、整数は倍精度浮動小数点に割り当てることができるため、整数をdouble型の配列に追加できます。
-
ソース式とターゲット式の両方が有効である必要があります。
色のリストがあるとします: フォーム内の青、緑および黒。 リストに別の色を赤で追加します。 設計時に、色(配列タイプの文字列)のリストにred (文字列)を追加し、アプリケーションを検証およびテストし、最後に追加アクションが実行時に成功したかどうかを確認します。
この例の配列に文字列が正常に追加されました。
配列データ・オブジェクトのフィルタ
プロセス・コンポーネント間にデータ関連付けを定義する際、ソース配列オブジェクトの要素を選択的にフィルタ処理し、ターゲット配列に割り当てることができます。
- ターゲット式タイプは配列です。
- ソース式タイプは配列です。 ソースのベース・タイプは、ターゲットのベース・タイプに割当て可能です(整数から二重割当など)。
- ソース式とターゲット式の両方が有効です。
新しいフィルタを定義するには:
- 「データ関連付け」アイコンをクリックし、「フィルタ」を選択します。
- 表示されるウィンドウで「作成」アクションを選択し、フィルタに適した名前(たとえば、MyStringFilter)を指定して、「作成」を再度クリックします。 フィルタ条件を定義するウィンドウが表示されます。
ノート:
適切なフィルタがすでに存在する場合は、フィルタの作成ウィンドウから選択または編集できます。 - 使用可能な演算子を使用して、配列のタイプに基づいてフィルタ条件を定義します。 単純な配列オブジェクト(整数型、文字列型、またはdouble型)の場合、VALUEという名前の要素は、ソース配列の各要素を表すウィンドウに存在します。
- VALUE要素を「条件」フィールドにドラッグ・アンド・ドロップして、式を定義します。 必要に応じて、fx(式)アイコンをクリックし、式エディタを使用します。 次の図は、文字列配列に対して定義されたフィルタ条件を示しています:
この場合、5という長さのソース配列の要素のみがターゲット配列に割り当てられます。
- 複合配列オブジェクトの場合、そこに含まれるすべての属性で構成される条件を定義できます:

「図filter-condition-complex.pngの説明」ノート:
現時点では、複合配列オブジェクトのフィルタ条件を定義する際に、各配列要素および関連する条件を「条件」フィールドに入力する必要があります。 ドラッグ・アンド・ドロップ機能は、単一のオブジェクトまたは要素に対してのみサポートされます。
- VALUE要素を「条件」フィールドにドラッグ・アンド・ドロップして、式を定義します。 必要に応じて、fx(式)アイコンをクリックし、式エディタを使用します。 次の図は、文字列配列に対して定義されたフィルタ条件を示しています:
- フィルタ条件を保存します。
- プロセス内に定義されたフィルタを表示または編集するには、データ関連付けエディタで「アクション」をクリックします。
- 最後に、「適用」をクリックして、すべてのデータの関連付けとフィルタを保存します。
実行時に、定義したフィルタ条件に従ってターゲット配列が移入されます。
データ関連付けの条件の定義
特定の条件が満たされる場合にのみ、実行時にデータ関連付けを実行するビジネス・シナリオがあります。 データ関連付けエディタで条件を追加することにより、実行時のデータ関連付けの実行を制御します。
条件マッピングで構成されているデータ関連付けは、定義された条件が満たされる場合のみ実行されます。 それ以外の場合は実行に失敗します。 条件マッピングが定義されていない他のすべてのデータ関連付けは、実行時に通常どおり実行されます。
データ・マッピングの条件は、構造化されたプロセスと動的プロセスの両方で設定できます。
新規条件を定義するには:







