式ビルダーを使用して、データ辞書またはエンドユーザーによって提供されたデータ値に対して計算を実行する式または条件を作成できます。Correspondence Management は式の評価の結果を使用して、アセット(テキスト、画像、リスト、条件など)を選択し、それらを必要に応じて通信に挿入することができます。
式ビルダーは内部的には JSP EL ライブラリを使用しているため、式は JSPEL 構文に従います。詳しくは、「サンプル式」を参照してください。
式で使用できる演算子は、式ビルダーの上部バーにあります。
通信管理ソリューションで使用できる、一般的な JSP EL の例は以下のとおりです。
詳細な情報は、「JSP EL 仕様」で確認できます。クライアント側の Expression Manager は、JSP EL 仕様の特定の変数や関数をサポートしていません。以下に例を示します。
コレクションのインデックスとマップのキー([] 表記を使用)は、クライアント側で評価される式の変数名には対応していません。
式に使用する関数のパラメーターの型や戻り値の型を以下に示しています。
リモート関数を使用すると、式内でカスタムロジックを使用できます。Java のメソッドとして式内で使用するためのカスタムロジックを作成でき、その関数は式内で使用できます。使用可能なリモート関数の一覧は、式エディターの左側の「リモート関数」タブにあります。
式の中で使用する独自のリモート関数は、カスタムバンドルを作成してエクスポートすることができます。独自のリモート関数をエクスポートするカスタムバンドルを作成するには、次のタスクを実行します。このデモでは、入力文字列を大文字に変換するカスタム関数を作成する例を示します。
Expression Manager 用にエクスポートするメソッドを含んだ OSGi サービスのインターフェイスを定義します。
インターフェイス A のメソッドを宣言し、@ServiceMethod 注釈を設定します(com.adobe.exm.expeval.ServiceMethod)。Expression Manager では、注釈が付いていないメソッドはすべて無視されます。ServiceMethod 注釈には次のオプション属性があり、必要に応じて指定することができます。
package mergeandfuse.com;
import com.adobe.exm.expeval.ServiceMethod;
public interface RemoteFunction {
@ServiceMethod(enabled=true,displayName="Returns_all_caps",description="Function to convert to all CAPS", familyId="remote")
public String toAllCaps(String name);
}
メソッドのパラメーターには、必要に応じて @ServiceMethodParameter 注釈(com.adobe.exm.expeval.ServiceMethodParameter)を使用し、注釈を設定することもできます。この注釈は、オーサリングユーザーインターフェイスに表示されるメソッドパラメーターの名前と説明を人間が判読できる形で指定する目的でのみ使用されます。インターフェイスメソッドのパラメーターおよび戻り値が、次の型のいずれかに属していることを確認してください。
インターフェイスの実装を定義し、それを OSGi サービスとして設定して、次のサービスプロパティを定義します。
@org.apache.felix.scr.annotations.Properties({
@org.apache.felix.scr.annotations.Property(name = "connectors.jsoninvoker", boolValue = true),
@org.apache.felix.scr.annotations.Property(name = "connectors.jsoninvoker.alias", value = "<service_id>"),
@org.apache.felix.scr.annotations.Property(name = "exm.service", boolValue = true)})
exm.service=true エントリは、式マネージャーに対して、式での使用に適したリモート関数をサービスに含めるように指示します。<service_id> 値は、有効な Java 識別子である必要があります(英数字、$、_ のみ。他の特殊文字は使用できません)。この値の先頭に REMOTE_ というキーワードを付けると、式の中で使用されるプレフィックスとなります。例えば、サービスプロパティ内の注釈付きメソッド bar() およびサービス ID foo とのインターフェイスは、REMOTE_foo:bar() を使用して式内で参照できます。
package mergeandfuse.com;
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Service;
@Component(metatype = true, immediate = true, label = "RemoteFunctionImpl")
@Service(value = RemoteFunction.class)
@org.apache.felix.scr.annotations.Properties({
@org.apache.felix.scr.annotations.Property(name = "connectors.jsoninvoker", boolValue = true),
@org.apache.felix.scr.annotations.Property(name = "connectors.jsoninvoker.alias", value = "test1"),
@org.apache.felix.scr.annotations.Property(name = "exm.service", boolValue = true)})
public class RemoteFuntionImpl implements RemoteFunction {
@Override
public String toAllCaps(String name) {
System.out.println("######Got######"+name);
return name.toUpperCase();
}
}
使用するサンプルアーカイブを以下に示します。
GoodFunctions.jar.zip
GoodFunctions.zip