Utilizzando il Generatore di espressioni, è possibile creare espressioni o condizioni che eseguono calcoli sui valori dei dati forniti dal Dizionario dati o dagli utenti finali. Gestione corrispondenza utilizza il risultato della valutazione delle espressioni per selezionare risorse quali testo, immagini, elenchi e condizioni e inserirle nella corrispondenza come necessario.
Il Generatore di espressioni utilizza internamente le librerie JSP EL, pertanto l'espressione è conforme alla sintassi JSPEL. Per ulteriori informazioni, vedere Espressioni di esempio.
Gli operatori disponibili per l'uso nelle espressioni sono disponibili nella barra superiore del generatore di espressioni.
Di seguito sono riportati alcuni esempi JSP EL comunemente utilizzati per la soluzione di gestione della corrispondenza:
Ulteriori informazioni sono disponibili nella specifica JSP EL. Il gestore di espressioni lato client non supporta determinate variabili e funzioni nella specifica JSP EL, in particolare:
Gli indici delle raccolte e le chiavi di mappa (utilizzando la notazione []) non sono supportati nei nomi delle variabili per le espressioni valutate sul lato client.
Di seguito sono riportati i tipi di parametro o i tipi di restituzione delle funzioni utilizzate nelle espressioni:
Le funzioni remote consentono di utilizzare la logica personalizzata nelle espressioni. È possibile scrivere logica personalizzata da utilizzare come metodo in Java e all'interno di espressioni è possibile utilizzare la stessa funzione. Le funzioni remote disponibili sono elencate nella scheda "Funzioni remote" sul lato sinistro dell'Editor espressioni.
È possibile creare un bundle personalizzato per esportare le proprie funzioni remote da utilizzare all'interno di espressioni. Per creare un bundle personalizzato per esportare le proprie funzioni remote, eseguire le operazioni seguenti. Viene illustrato come scrivere una funzione personalizzata in grado di capitalizzare la stringa di input.
Definire un'interfaccia per il servizio OSGi contenente i metodi che vengono esportati per l'utilizzo da Expression Manager.
Dichiarare i metodi sull'interfaccia A e annotarli con l'annotazione @ServiceMethod (com.adobe.exm.expeval.ServiceMethod). Expression Manager ignora eventuali metodi non annotati. L'annotazione ServiceMethod ha i seguenti attributi facoltativi che è possibile specificare anche:
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);
}
I parametri dei metodi possono anche essere annotati facoltativamente utilizzando l'annotazione @ServiceMethodParameter (com.adobe.exm.expeval.ServiceMethodParameter). Questa annotazione viene utilizzata solo per specificare nomi leggibili e descrizioni dei parametri dei metodi da utilizzare nell’interfaccia utente di authoring. Assicurarsi che i parametri e i valori restituiti dei metodi di interfaccia appartengano a uno dei seguenti tipi:
Definite l'implementazione dell'interfaccia, configuratela come servizio OSGI e definite le seguenti proprietà del servizio:
@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)})
La voce exm.service=true indica a Expression Manager che il servizio contiene funzioni remote utilizzabili nelle espressioni. Il valore <service_id> deve essere un identificatore Java valido (alfanumerico,$, _ senza altri caratteri speciali). Questo valore, con il prefisso della parola chiave REMOTE_, forma il prefisso utilizzato all'interno delle espressioni. Ad esempio, un'interfaccia con un metodo annotato bar() e l'ID del servizio foo nelle proprietà del servizio, può essere utilizzata come riferimento all'interno di espressioni utilizzando 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();
}
}
Di seguito sono riportati alcuni esempi di archivi da utilizzare:
GoodFunctions.jar.zip