Funktionsweise des Bausteins „Expression Manager“

Zum Baustein „Expression Manager“ gehören zwei Module: die serverseitige und die clientseitige Auswertung von Ausdrücken. Die folgende Abbildung zeigt die Gesamtarchitektur dieses Moduls:

Grafik in Originalgröße anzeigen
Architektur von Expression Management

Serverseitige Auswertung von Ausdrücken

Das Modul für die serverseitige Auswertung von Ausdrücken bietet Funktionen zur Auswertung von Ausdrücken auf der Serverseite.

Das Kernstück dieses Moduls ist der Expression Evaluator-Dienst. Er stellt APIs zur Auswertung und Validierung von Ausdrücken bereit. Ausdrücke können einzeln oder im Batch-Modus ausgewertet werden. Diese Komponente dient als Wrapper für die JSP EL (die Bibliothek zur Auswertung von Ausdrücken). Die eigentliche Auswertungsaufgabe wird an die Ausdrucksbibliothek delegiert.

Ein Dienst zur Ausdrucksauswertung benötigt eine Instanz des Variablen-Resolvers, um Werte von Variablen abzurufen, die in Ausdrücken referenziert werden. In der Regel ist für einen Ausdruck ein Function Mapper erforderlich, um Funktionsreferenzen in Ausdrücken tatsächlichen Funktionen zuzuordnen, die vom Ausdrucksauswertungsdienst aufgerufen werden können. In Fällen, in denen die Werte von in Ausdrücken verwendeten Variablen aus Eigenschaften von Datenwörterbuch-Instanzen abgerufen werden, stellt der Baustein „Data Dictionary“ eine Implementierung des Variablen-Resolvers bereit, die von Anwendungen verwendet werden kann.

  • Variablen-Resolver: Wird von der Ausdrucksauswertungsbibliothek verwendet, um die Werte von Variablen abzurufen, die in Ausdrücken verwendet werden.

  • Function Mapper: Wird zur Zuordnung von Funktionsreferenzen in Ausdrücken zu tatsächlichen, aufrufbaren Funktionen verwendet.

Clientseitige Auswertung von Ausdrücken mit Flex

Das Modul zur clientseitigen Auswertung von Ausdrücken mit Flex bietet die Möglichkeit, Ausdrücke in einer Flex-Clientanwendung ohne Server-Roundtrip auszuwerten. Flex Expression Manager kann JSP-EL-kompatible Ausdrücke clientseitig auswerten. Die IExpressionManager-Schnittstelle(com.adobe.solutions.exm.runtime.IExpressionManager) gibt Zugang zur clientseitigen Ausdrucksauswertung. Anwendungen, die dies nutzen sollen, müssen einen JSP-EL-kompatiblen Ausdruck übergeben. Es ist auch möglich, dass die Anwendungen mithilfe von assignTo() oder einer der manage*()-Methoden eine Zielvariable an eine IExpressionManager-Instanz übergeben. Die Anwendungen rufen eine IComputedExpressions-Instanz ab, um die resultierende Auswertung des Ausdrucks zu erhalten. Wenn eine Zielvariable für Expression Manager bereitgestellt wird, wird die Variable automatisch festgelegt und bei der Neuberechnung des Ausdrucks mit dem Ergebnis der Auswertung aktualisiert. Der clientseitige Expression Manager benötigt einen Variablen-Resolver und einen Function Mapper zum Auflösen von Variablenreferenzen und Funktionsaufrufen in Ausdrücken.

Die IComputedExpressions-Instanz, die von Expression Manager an aufrufende Anwendungen zurückgegeben wird, fungiert als Live-Container für das Ergebnis der Ausdrucksauswertung. Der Container ist „live“, da er eine bindbare value-Eigenschaft (das Ergebnis der Ausdrucksauswertung) enthält, die bei jedem Neuberechnungsereignis für den Ausdruck aktualisiert wird. Beispiele für solche Ereignisse sind Änderungen des Werts einer in einem Ausdruck verwendeten Variablen oder ein asynchroner Remote-Funktionsaufruf mit erfolgreicher Rückgabe. Die IComputedExpression löst außerdem ein event (eine Instanz von com.adobe.solutions.exm.runtime.ComputationErrorEvent) namens computationErrorEvent aus. Das Ereignis wird ausgelöst, wenn während der Auswertung des Ausdrucks ein Fehler auftritt, z. B. wenn ein asynchroner Remote-Funktionsaufruf fehlschlägt. Der während der Auswertung aufgetretene Fehler wird in der error-Eigenschaft des Ereignisses angegeben.

Es gibt zwei Möglichkeiten zur Verwendung einer IComputedExpressions-Instanz durch Anwendungen:
  • In einfachen Fällen, in denen der Ausdruck nur einmal ausgewertet wird, können die Anwendungen die Eigenschaft value der IComputedExpression-Instanz direkt lesen. Dieser Mechanismus kann nicht für Ausdrücke verwendet werden, die Remote-Funktionsaufrufe enthalten, die naturgemäß asynchron sind. Die anfänglich aus der IComputedExpression-Instanz gelesene Eigenschaft value ist ein Garbage-Wert. Dieser Wert wird automatisch aktualisiert und durch den richtigen Wert ersetzt, wenn der Remote-Funktionsaufruf später erfolgreich ist.

  • Für längerfristige Verwendung können Anwendungen mithilfe standardmäßiger Flex-Bindungsfunktionen die Bindung zur Eigenschaft value der IComputedExpression-Instanz herstellen. So könnte z. B. ein Feld in der Benutzeroberfläche an das Ergebnis der Ausdrucksauswertung gebunden sein. Anwendungen warten auf Ereignisse des Typs „computationErrorEvent“ in der IComputedExpression-Instanz, um Fehler während der Auswertung der Ausdrücke zu erkennen. Diese Bindung ist das einzige verwendbare Verfahren für Ausdrücke, in denen Funktionsaufrufe enthalten sind, die naturgemäß asynchron sind.

Die Klasse „com.adobe.solutions.exm.runtime.impl.ExpressionManagerImpl“ ist die Standardimplementierung der IExpressionManager-Schnittstelle. Anwendungen müssen eine Instanz dieser Klasse erstellen, sie mit einem Variablen-Resolver und einem Function Mapper konfigurieren und zur Auswertung von Ausdrücken verwenden.