intra-mart Accel Platform IM-LogicDesigner仕様書 第13版 2019-08-01

4.2.5.1.6. テンプレート

処理種別(タイプ)テンプレートは、ユーザ定義タスクとして文字列テンプレートの置換を行うタスクを定義します。
このタスクでは、 入力データをもとに設定された文字列テンプレートを置換して生成した文字列を返却します。
メール本文の生成や、HTMLの生成を行いたい場合などに、このユーザ定義タスクを利用することができます。

4.2.5.1.6.1. 入力値/返却値

処理種別(タイプ)テンプレートでは、入力値/返却値をそれぞれ以下のように定義します。

4.2.5.1.6.1.1. 入力値

テンプレートのロケールと、テンプレートを置換する際に利用する各変数を定義します。
  • locale
    • テンプレートのロケール(指定されていない場合は、標準のテンプレートが利用されます。)
  • data
    • テンプレートを置換する際に利用する変数

4.2.5.1.6.1.2. 返却値

テンプレート置換を行い生成された文字列が定義されます。
  • output
    • 生成された文字列

4.2.5.1.6.2. テンプレート定義

各ロケール毎の文字列テンプレートを設定します。
入力値に設定されていないロケールが指定されている場合は、標準のテンプレートが使用されます。

4.2.5.1.6.3. テンプレートの記法

テンプレートは FreeMarker Template Language(FTL)で記述することが可能です。
FTLの記法について詳しくは「Template Language Reference」を参照してください。
  • テンプレートではさまざまな式を扱うことができます。
    例えば、変数の値を代入したい場合は以下のようにテンプレートを定義します。
    Hello, ${userName}.
    
    変数 userName が「ueda tatsuo」の場合、Hello, ueda tatsuo.と変換された文字列が得られます。
  • built-in

    FTL では型ごとに、さまざまな組み込みの手続き(ビルトイン)が用意されています。ビルトインは「?」に続けて指定します。
    例えば、URLをエンコードして出力したい場合は以下のようにテンプレートを定義します。
    ${urlString?url}.
    
    変数 urlString の値をURLエンコーディングされた文字列が得られます。
  • list(繰り返し)

    変数(配列)による繰り返しを記述する場合には、<#list>ディレクティブを使用します。
    例えば、以下のようにテンプレートを定義します。
    <#list goodsList as goods>
      * ${goods.name} x ${goods.count} = ${goods.price}-
    </#list>
    
    変数 goodsList の要素を goods として扱いながら、繰り返し処理が行われます。
    変数 goodsList の内容が以下の場合には、
    "goodsList" : [
      {
        "name" : "pen",
        "count" : 10,
        "price" : 1000
      },
      {
        "name" : "book",
        "count" : 5,
        "price" : 6000
      },
    ]
    以下のように変換された文字列が得られます。
    * pen x 10 = 1000-
    * book x 5 = 6000-
    
  • if(条件式)

    変数による条件式を記述する場合には、 <#if>ディレクティブを使用します。
    例えば、以下のようにテンプレートを定義します。
    <#if totalPrice gte 100>
      Because the total amount is $100 or more, shipping is free.
    </#if>
    
    変数 totalPrice の値が 100 以上の場合、Because the total amount is $100 or more, shipping is free.と変換された文字列が得られます。
    <#if>ディレクティブのタグ内では 不等号( <> )は使うことはできません。代わりに相当する言葉で演算子が用意されています。
    記号 意味 タグ内で使う演算子
    < 未満 lt
    <= 以下 lte
    > より大きい gt
    >= 以上 gte