intra-mart Accel Platform IM-LogicDesigner仕様書 第23版 2023-10-01

5.4. EL式

IM-LogicDesignerでは、一部エレメントのプロパティやマッピング関数でEL式が利用可能です。
本章では、EL式についての概要と、IM-LogicDesignerでの利用例を説明します。

5.4.1. EL式とは

EL式(Expression Language)とは、JSP2.0より導入された式言語の一つです。
EL式を用いることで、簡易な演算処理や、特定の変数へのアクセスなどを定義することが可能です。

コラム

EL式の詳細な情報については以下のリンクを参照してください。

5.4.2. EL式の利用方法

5.4.2.1. EL式の基本的な書き方

EL式は以下の形で定義します。
${式}
この時、{}で囲まれた式を評価し、評価結果を最終的な結果とします。

例えば、以下の形でEL式を定義します。
${365 * 24}
この場合、式を評価し、最終的な結果として8760が得られます。

また、文字列全体の一部分としてEL式を適用することも可能です。
例えば、以下の形でEL式を定義します。
Hello, ${100*100} people.
この場合、式を評価し、最終的な結果としてHello, 10000 people.が得られます。

5.4.2.2. 変数の利用

EL式内では変数を扱うことができます。
例えば、以下の形でEL式を定義します(この式ではconditionが変数です)。
${condition < 100}
この場合、式を評価し、condition変数の値が100より小さい場合、trueが得られます。
逆にcondition変数の値が100以上であった場合、falseが得られます。

5.4.2.3. メソッドの利用

変数と同様に、EL式内ではメソッドを扱うことができます。
例えば、以下の形でEL式を定義します(この式ではmessageが文字列を扱う変数とします)。
${message.endsWith('.txt')}
この場合、式を評価し、messageに含まれる文字列が.txtで終わる場合、trueが得られます。

注意

EL式利用時の注意事項

IM-LogicDesignerのEL式では、JSTL(JavaServer Pages Standard Tag Library)を利用した以下の様な式は利用できません。
${fn:contains("Hello, World.","world")}

5.4.3. IM-LogicDesignerでの利用

5.4.3.1. 利用可能なエレメント・マッピング関数

IM-LogicDesignerでEL式が利用可能なエレメントおよびマッピング関数は以下の通りです。
(エレメントおよびマッピング関数でEL式を利用する場合、「評価結果」の項にある型で評価結果が得られる必要があります)
  • エレメント
    • 分岐
      • 利用可能なプロパティ: 条件式
      • 評価結果: Boolean
    • 繰り返し開始
      • 利用可能なプロパティ名: 繰り返し条件
      • 評価結果: Boolean
  • マッピング関数
    • el 関数
    • 評価結果: String

5.4.3.2. 利用可能な暗黙的な変数

IM-LogicDesignerでは、はじめから利用可能な暗黙的な変数を定義しています。
ユーザが明示的に定義する必要はありません。
IM-LogicDesignerが提供する暗黙的な変数の一覧は以下の通りです。
  • $const
    • 事前に定義した定数値を表す変数です。
  • $input
    • 事前に定義したフローの入力値を表す変数です。
  • $account_context
    • アカウントコンテキストを表す変数です。
  • $user_context
    • ユーザコンテキストを表す変数です。
  • $session_properties
    • セッションプロパティを表す変数です。
  • $task_result
    • 処理結果情報を表す変数です。
  • $variable
    • ロジックフロー内で利用可能な変数を表す変数です。

注意

$user_context(ユーザコンテキスト)について

$user_context変数は、ユーザコンテキストのモジュールがiAPに含まれている場合のみ利用可能です。

5.4.4. IM-LogicDesignerでの利用が可能なEL式関数

5.4.4.1. sizeOf 関数

要素数または文字数を返却します。
  • ${sizeOf(array)}
    • 引数に配列を指定した場合、配列の要素数を integer 型で返却します。
  • ${sizeOf(map)}
    • 引数に map を指定した場合、map の要素数を integer 型で返却します。
  • ${sizeOf(str)}
    • 引数に文字列を指定した場合、文字数を integer 型で返却します。

5.4.4.2. isEmpty 関数

引数の要素が空かどうかを判定します。
  • ${isEmpty(array)}
    • 引数に指定した配列の要素数が0件の場合、true を返却します。
    • 引数に指定した配列の要素数が0件でない場合、false を返却します。
  • ${isEmpty(map)}
    • 引数に指定した map の要素数が0件の場合、true を返却します。
    • 引数に指定した map の要素数が0件でない場合、false を返却します。
  • ${isEmpty(str)}
    • 引数に指定した文字列が null である場合、true を返却します。
    • 引数に指定した文字列の長さが 0 の場合、true を返却します。
  • 引数に null を指定した場合、true を返却します。

  • 上記以外の場合、false を返却します。

5.4.4.3. contains 関数

第2引数の要素が、第1引数の配列または map のキーに存在するかどうかを判定します。
  • ${contains(array, value)}
    • 第1引数に配列を指定した場合、第2引数の内容が、第1引数の配列要素に存在する場合に、true を返却します。
  • ${contains(map, value)}
    • 第1引数に map のキーを指定した場合、第2引数のキーが、第1引数の map のキーに存在する場合に、true を返却します。
  • 上記以外の場合、false を返却します。

5.4.4.4. indexOf 関数

第1引数の要素に、第2引数の要素が存在または含まれているかを判定し、存在または含まれている場合には第1引数の要素のうち最初のインデックスを返却します。
  • ${indexOf(array, search)}
    • 第1引数に配列を指定した場合、第2引数と同じ内容を持つ配列要素のうち最初のインデックスを返却します。
  • ${indexOf(str, search)}
    • 第1引数に文字列を指定した場合、第2引数と同じ内容を含む要素のうち最初のインデックスを返却します。
  • 上記以外の場合、-1を返却します。

5.4.4.5. lastIndexOf 関数

第1引数の要素に、第2引数の要素が存在または含まれているかを判定し、存在または含まれている場合には第1引数の要素のうち最後のインデックスを返却します。
  • ${lastIndexOf(array, search)}
    • 第1引数に配列を指定した場合、第2引数と同じ内容を持つ配列要素のうち最後のインデックスを返却します。
  • ${lastIndexOf(str, search)}
    • 第1引数に文字列を指定した場合、第2引数と同じ内容を含む要素のうち最後のインデックスを返却します。
  • 上記以外の場合、-1を返却します。