intra-mart Accel Platform IM-LogicDesigner拡張プログラミングガイド 第3版 2016-12-01

6. EL関数

IM-LogicDesigner では、分岐条件、繰り返し条件等でExpression Language(EL)を利用します。
本章では、EL内で独自の関数を利用できるようEL関数の追加を行う方法を解説します。

6.1. EL関数の追加

EL関数を追加するには、 public static 修飾子を持つメソッドを実装する必要があります。
また、起動時に自動的に検出を行う為に、 jp.co.intra_mart.foundation.logic.annotation.ProvideELFunction アノテーションをクラスに付与します。
EL関数として追加するメソッドには、 jp.co.intra_mart.foundation.logic.annotation.ELFunction アノテーションを付与してください。
EL関数名は対象となるメソッドのメソッド名です。
package org.example.logicdesigner.el;

import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;

import jp.co.intra_mart.foundation.logic.annotation.ELFunction;
import jp.co.intra_mart.foundation.logic.annotation.ProvideELFunction;

@ProvideELFunction
public class MyELFunction {

    @ELFunction(prefix = "my")
    public static String encodeURIComponent(String value) {
        try {
            return URLEncoder.encode(value, StandardCharsets.UTF_8.name());
        } catch (UnsupportedEncodingException ignore) {
            return null;
        }
    }

    @ELFunction(prefix = "my")
    public static String decodeURIComponent(String value) {
        try {
            return URLDecoder.decode(value, StandardCharsets.UTF_8.name());
        } catch (UnsupportedEncodingException ignore) {
            return null;
        }
    }
}
  •  @ELFunction アノテーションには、EL関数のプレフィックスが指定可能です。この例では、 ${my:encodeURIComponent('<br />')} のように呼び出すことが可能です。
  • 一つのクラスに複数のEL関数を定義することが可能です。