データ項目への入力をもとに分岐条件を設定するときの、条件式に指定できるデータ型の設定書式です。値の入力有無や固定値との比較だけでなく、他のデータ項目の入力と比較する条件式を指定することもできます。
また、EL式を利用した条件式を指定することも可能です。「ワークフローの変数」や「データ項目」を用いた任意の分岐条件式を定義することができます。
1. 各データ型に対する条件式
件名/文字列型(単一行/複数行)
データ入力の有無や、入力されている文字列によって判定します
- 値が入力されている
- 値が入力されていない
- [任意文字列 / 他のデータ項目(文字列型)] と等しい
- [任意文字列 / 他のデータ項目(文字列型)] と等しくない
- [任意文字列 / 他のデータ項目(文字列型)] を含む
- [任意文字列 / 他のデータ項目(文字列型)] で始まる
- [任意文字列 / 他のデータ項目(文字列型)] で終わる
- [任意正規表現]に一致する
数値型
データ入力の有無や、入力された数値の大小によって判定します
- 値が入力されている
- 値が入力されていない
- [任意数値 / 他のデータ項目(数値型)] と等しい
- [任意数値 / 他のデータ項目(数値型)] と等しくない
- [任意数値 / 他のデータ項目(数値型)] 以下
- [任意数値 / 他のデータ項目(数値型)] より小さい
- [任意数値 / 他のデータ項目(数値型)] 以上
- [任意数値 / 他のデータ項目(数値型)] より大きい
選択型(ラジオボタン/セレクトボックス/検索セレクトボックス)
データ入力の有無や、データ入力時に選択された選択肢が [任意選択肢] と等しいか等しくないかで判定を行います
- 値が入力されている
- 値が入力されていない
- [任意選択肢] と等しい
- [任意選択肢] と等しくない
※選択肢が、「HTTP経由取得した選択肢を指定」または「文字型プロセスデータで選択肢を指定」で定義されている場合、[任意選択肢] には、「選択肢の値」を文字で入力します
選択型(チェックボックス)
データ入力の有無や、[任意選択肢] がデータ入力時に選択された選択肢に含まれているかいないかで判定を行います
- 値が入力されている
- 値が入力されていない
- [任意選択肢] と等しい
- [任意選択肢] と等しくない
- [任意選択肢] が選択に含まれている
- [任意選択肢] が選択に含まれていない
※選択肢が、「HTTP経由取得した選択肢を指定」または「文字型プロセスデータで選択肢を指定」で定義されている場合、[任意選択肢] には、「選択肢の値」を文字で入力します
日付型(年月日)
データ入力の有無、及び他のデータ項目との比較で判定を行います
- 値が入力されている
- 値が入力されていない
- [他のデータ項目(日付型)] と等しい
- [他のデータ項目(日付型)] と等しくない
- [他のデータ項目(日付型)] より前
- [他のデータ項目(日付型)] より後
日付型(年月/月日/年)
データ入力の有無で判定を行います
- 値が入力されている
- 値が入力されていない
日時型
データ入力の有無、及び他のデータ項目との比較で判定を行います
- 値が入力されている
- 値が入力されていない
- [他のデータ項目(日時型)] と等しい
- [他のデータ項目(日時型)] と等しくない
- [他のデータ項目(日時型)] より前
- [他のデータ項目(日時型)] より後
ユーザ型
データ入力の有無、及び他のデータ項目との比較で判定を行います
- 値が入力されている
- 値が入力されていない
- [任意ユーザ / 他のデータ項目(ユーザ型) / プロセス開始ユーザ] と等しい
- [任意ユーザ / 他のデータ項目(ユーザ型) / プロセス開始ユーザ] と等しくない
- [任意組織 / 他のデータ項目(組織型) / プロセス開始組織] に次の立場で所属
- [(未指定) / 役職あり / 役職なし / 任意の役職] - [任意組織 / 他のデータ項目(組織型) / プロセス開始組織] の親組織に次の立場で所属
- [(未指定) / 役職あり / 役職なし / 任意の役職] - [任意組織 / 他のデータ項目(組織型) / プロセス開始組織] の子組織いずれかに次の立場で所属
- [(未指定) / 役職あり / 役職なし / 任意の役職] - [任意組織 / 他のデータ項目(組織型) / プロセス開始組織] の上位組織いずれかに次の立場で所属
- [(未指定) / 役職あり / 役職なし / 任意の役職] - [任意組織 / 他のデータ項目(組織型) / プロセス開始組織] の下位組織いずれかに次の立場で所属
- [(未指定) / 役職あり / 役職なし / 任意の役職] - [任意ロール]に所属
組織型
データ入力の有無、及び他のデータ項目との比較で判定を行います
- 値が入力されている
- 値が入力されていない
- [任意組織 / 他のデータ項目(組織型) / プロセス開始組織] と等しい
- [任意組織 / 他のデータ項目(組織型) / プロセス開始組織] と等しくない
- [任意組織 / 他のデータ項目(組織型) / プロセス開始組織] の親組織
- [任意組織 / 他のデータ項目(組織型) / プロセス開始組織] の子組織
- [任意組織 / 他のデータ項目(組織型) / プロセス開始組織] の上位組織
- [任意組織 / 他のデータ項目(組織型) / プロセス開始組織] の下位組織
ファイル型
データ入力の有無や、ファイル名に利用されている文字列によって判定します
- 値が入力されている
- 値が入力されていない
- [任意文字列] をファイル名に含む
掲示板型
データ入力の有無や、入力されている文字列によって判定します
- 値が入力されている
- 値が入力されていない
- [任意文字列] を含む
テーブル型
(条件判定には利用できません)
ガイドパネル型
(表示専用。条件判定には利用できません)
2. EL式による条件式
EL式を用いて、任意の分岐条件式を定義することが可能です。
条件式が true と評価されれば、指定の遷移先に処理が進みます。評価結果が false となる場合(評価エラーが発生する、nullになってしまう場合なども false 扱い)は、条件不一致として遷移しません。
2-1. EL式として利用可能な値
EL式には、下記の値が利用可能です。
- アプリやプロセス情報 (プロセス属性)
- データ項目
※ ガイドパネル / 掲示板型は対応しておりません。 - 以下のものは利用できません。 バリデーションエラーとなります。
- システム変数: ${var[applicationRoot]}
- アプリケーション変数: ${var[param1]}
2-2. EL式で利用可能な演算子
EL式では、下記の演算子が利用可能です。
- 比較演算子
- 「==」、「!=」、「>」、「>=」、「 <」、「 <=」
- 数値型や、日付型 / 日時型 にも利用可能です。
- 比較演算子の左辺と右辺は同じ型である必要があります。
特に日付型の種類が違うもの(年月日/年月/年/日付)同士の比較や、日付型と日時型の単純比較などは、評価結果が false になるため、ご注意ください。
- 数値演算子
- 「+」、「-」、「*」、「/」、「%」
- 文字型データ項目同士の数値演算子は機能しません。少なくともどちらか一方が、または両方が数値型データ項目であることが求められます。
2-3. EL式による条件の記述サンプル
ワークフローの変数を利用した条件
評価式 | 式の内容 |
---|---|
processInstanceDebug == true | デバッグプロセスの場合に指定された遷移先に処理が進む |
processInstanceTitle == 'The Title.' | プロセスの件名 が "The Title." と等しい |
processInstanceId <= 20000 | プロセスID が 20000以下 |
processInstanceInitQuserName?.startsWith('Jack') == true | プロセス開始ユーザの名前が "Jack" で始まる |
processInstanceInitQuser?.getId() == 22 | プロセス開始ユーザのIDが 22 と等しい |
processInstanceInitQgroupName?.endsWith('Customer') == true | プロセス開始組織の名前が "Customer" で終わる |
processInstanceInitQgroup?.getEmail() == 'customer@example.com' | プロセス開始組織のE-mailが "customer@example.com" と等しい |
processInstanceStartDatetime?.toString() == #q_datetime?.toString() | プロセス開始日時が 日時型データ項目「q_datatime」の値と等しい |
processInstanceStartDatetime == #q_datetime | [注意] 秒のデータの扱いの違いのため、単純な「==」比較では false となります。
|
processInstanceSequenceNumber >= 10 | プロセス連番が 10以上 |
processModelInfoId == 123 | アプリIDが 123 と等しい |
processModelInfoName.contains('Satisfaction') == true | アプリ名に 「Satisfaction」 を含む |
データ項目を利用した条件
評価式 | 式の内容 |
---|---|
#q_string0?.contains('consultation') == true | 文字列型データ項目「q_string0」の値が "consultation" を含む |
#q_string0 == null | 文字列型データ項目「q_string0」が未入力 |
#q_string0 != null | 文字列型データ項目「q_string0」に値が入力されている |
#q_numeric1 <= 999 | 数値型データ項目「q_numeric1」の値が 999以下 |
#q_radio2?.get(0)?.value == '3' | 選択型(ラジオボタン)データ項目「q_radio2」で選択された項目の選択肢IDの値が "3" と等しい |
#q_checkbox3?.?[value == 'b']?.size() == 1 | 選択型(チェックボックス)データ項目「q_checkbox3」で選択された項目のうち、選択肢IDが "b" のものが選択されている |
#q_select != null && {‘選択肢の値1’, ‘選択肢の値2’}.contains(#q_select.get(0).value) | 選択型データ項目で、'選択肢の値1' か '選択肢の値2' のいずれかの選択肢が選択されている |
#q_ymd4 == #q_ymd5 | 日付型(年月日)データ項目「q_ymd4」の値が、「q_ymd5」の値と等しい |
#q_ym6 < #q_ym7 | 日付型(年月)データ項目「q_ym6」の値が、データ項目「q_ym7」の値より小さい |
#q_datetime8 >= #q_datetime9 | 日時型データ項目「q_datetime8」の値が、データ項目「q_datetime9」の値以上 |
#q_file10 == null | ファイル型データ項目「q_file10」にファイルが未添付 |
#q_file10?.size() > 1 | ファイル型データ項目「q_file10」のファイル添付数が 1個を超える |
#q_user11?.id == 10 | ユーザ型データ項目「q_user11」のユーザのIDが 10 と等しい |
#q_user11?.getEmail() == 'SouthPole@example.com' | ユーザ型データ項目「q_user11」のユーザのE-mailが 'SouthPole@example.com' と等しい |
#q_table12?.get(1, 2) == 'Apple' | テーブル型データ項目「q_table12」の 2行3列目(サブデータ項目:文字列型)の値が 'Apple' と等しい |
#q_organization13?.getId() == 15 | 組織型データ項目「q_organization13」の組織のID が 15 と等しい |
Appendix
- 単一条件だけではなく、複数の条件項目を組み合わせることも可能です。
processInstanceInitQuserName?.startsWith('Jack') == true && processInstanceInitQgroup?.getEmail() == 'customer@example.com' && #q_string0?.contains('consultation') == true && #q_radio2?.get(0)?.value == '3' && #q_datetime8 >= #q_datetime9 && #q_organization13?.getId() == 15
- 演算結果が null になってしまう場合も、「true でない (false)」扱いになるため、非推奨です。
- 次のような記述で、「#q_string」が未入力(null)の場合、EL式の評価結果も null となり、条件式の演算結果は false となります。
(非推奨)
#q_string?.startsWith('test') - EL式の null 評価を避けるため、下記の記述を推奨します。
#q_string?.startsWith('test') == true
- 次のような記述で、「#q_string」が未入力(null)の場合、EL式の評価結果も null となり、条件式の演算結果は false となります。
- 同様に、「!」演算子も評価エラーを誘発する可能性があるため、非推奨です。
- 次のような記述で、「#q_string」が未入力(null)の場合、EL式の評価結果は !null で評価エラーとなり、条件式の演算結果は false となります。
(非推奨)
!#q_string?.startsWith('test') - EL式の !null 評価エラーを避けるため、下記の記述を推奨します。
#q_string?.startsWith('test') == false
または#q_string?.startsWith('test') != true
- 次のような記述で、「#q_string」が未入力(null)の場合、EL式の評価結果は !null で評価エラーとなり、条件式の演算結果は false となります。
- 利用可能なデータ項目の型は、次のリファレンスを参照してください。
- データ項目
- ガイドパネル / 掲示板型は対応しておりません。
- 各データ項目に対するEL式の利用方法は、下記リファレンスも参考にしてください。
コメント
0件のコメント
記事コメントは受け付けていません。