使用運算式產生器,您可以建立運算式或條件,對資料字典或使用者提供的資料值執行運算。 「對應管理」會使用運算式評估的結果來選取文字、影像、清單和條件等資產,並視需要將它們插入對應項目中。
運算式產生器內部使用JSP EL程式庫,因此運算式符合JSPEL語法。 如需詳細資訊,請參閱範例運算式。
運算式中可用的運算子位於運算式產生器的頂端列。
以下是一些常用的JSP EL示例,可用於您的通信管理解決方案:
您可以在JSP EL規範中找到更多資訊。 用戶端運算式管理器不支援JSP EL規格中的某些變數和函式,具體而言:
在用戶端上評估的運算式的變數名稱中,不支援系列索引和對應索引鍵(使用[]符號)。
以下是運算式中使用的函式的參數類型或返回類型:
遠端函式提供在運算式中使用自訂邏輯的功能。 您可以編寫自訂邏輯,以便在運算式中以Java方法的形式使用,而在運算式中可使用相同的函式。 可用的遠程函式列在表達式編輯器左側的「遠程函式」頁籤下。
您可以建立自訂搭售,以匯出您自己的遠端函式,以便在運算式內使用。 若要建立自訂套件以匯出您自己的遠端功能,請執行下列工作。 它示範如何編寫自訂函式,以便將其輸入字串大寫。
為OSGi服務定義一個介面,該介麵包含要導出以供「表達式管理器」使用的方法。
在介面A上宣告方法,並使用@ServiceMethod附註(com.adobe.exm.expeval.ServiceMethod)加以註解。 「運算式管理員」會忽略任何未加註的方法。 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_關鍵字前置詞,構成運算式內使用的首碼。 例如,使用REMOTE_foo:bar()可以在表達式內引用帶有注釋方法bar()和服務屬性中的服務ID foo的介面。
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