Fonctionnement du bloc de création Expression Manager

Le bloc de création Expression Manager peut être divisé en deux modules : évaluation de l’expression côté serveur et évaluation de l’expression côté client. Le diagramme suivant illustre l’architecture globale de ce module :

Afficher le graphique à sa taille d'origine
Architecture de gestion des expressions

Evaluation de l’expression côté serveur

Le module d’évaluation de l’expression côté serveur permet d’évaluer des expressions sur le côté serveur.

Le service Expression Evaluator est la pièce principale du module d’évaluation des expressions côté serveur. Il fournit des API pour l’évaluation et la validation des expressions. Les expressions peuvent être évaluées en mode unique ou par lots. Ce composant agit comme une enveloppe pour la bibliothèque d’évaluation des expressions (EL JSP). La véritable tâche d’évaluation des expressions est déléguée à la bibliothèque d’expressions.

Un service d’évaluation des expressions nécessite une instance de résolveur de variable afin d’extraire des valeurs de variables référencées à l’intérieur des expressions. En règle générale, une expression nécessite un mappeur de fonction pour résoudre les références au sein d’expressions visant des fonctions réelles, qui peuvent être appelées par le service d’évaluation des expressions. Dans les cas où les valeurs des variables utilisées dans les expressions sont issues de propriétés d’instances du dictionnaire de données, le bloc de création Data Dictionary fournit une implémentation du résolveur de variable qui peut être utilisée par les applications.

  • Résolveur de variable : permet de récupérer la valeur des variables utilisées dans les expressions par la bibliothèque d’évaluation des expressions.

  • Mappeur de fonction : utilisé pour résoudre les références au sein d’expressions qui visent des fonctions réelles pouvant être appelées.

Evaluation de l’expression côté client à l’aide de Flex

Le module d’évaluation des expressions côté client permet d’évaluer des expressions dans une application cliente Flex, sans aller-retour avec le serveur. Le service Flex Expression Manager peut interpréter et évaluer les expressions conformes à l’EL JSP sur le côté client. L’interface IExpressionManager (com.adobe.solutions.exm.runtime.IExpressionManager) est le point d’entrée pour l’évaluation des expressions côté client. Les applications d’exploitation doivent transmettre une expression conforme à l’EL JSP. Les applications peuvent également transmettre une variable cible à une instance IExpressionManager à l’aide de assignTo() ou de l’une des méthodes manage*(). Les applications récupèrent une instance IComputedExpression pour obtenir le résultat d’évaluation de l’expression. Si une variable cible est fournie pour Expression Manager, elle est automatiquement définie et mise à jour avec le résultat d’évaluation de l’expression lors du calcul de l’expression. Le gestionnaire d’expressions côté client nécessite un résolveur de variable et un mappeur de fonction pour résoudre les références aux variables et les appels de fonction au sein des expressions.

L’instance IComputedExpression renvoyée par Expression Manager aux applications effectuant des appels sert de conteneur actualisé en direct pour le résultat de l’évaluation de l’expression. Le conteneur est actualisé en direct car il contient une propriété value liable (le résultat de l’évaluation de l’expression) mise à jour automatiquement à chaque événement de recalcul d’une expression. Ces événements sont par exemple un changement de valeur pour une variable utilisée dans l’expression ou le retour réussi d’un appel à une fonction distante asynchrone. L’instance IComputedExpression distribue également un objet event (une instance de com.adobe.solutions.exm.runtime.ComputationErrorEvent) nommé computationErrorEvent. L’événement est distribué chaque fois qu’une erreur se produit pendant l’évaluation de l’expression, par exemple si un appel à une fonction distante asynchrone se termine par une erreur. La propriété d’erreur de l’événement contient l’erreur survenue pendant l’évaluation.

Les applications peuvent utiliser une instance IComputedExpression de deux manière différentes :
  • Pour les cas simples où l’expression est évaluée une fois, les applications peuvent lire immédiatement la propriété value de l’instance IComputedExpression. Ce mécanisme ne fonctionne pas pour les expressions contenant des appels de fonctions distantes qui sont asynchrones par nature. La propriété value initialement lue à partir de l’instance IComputedExpression est une valeur à nettoyer. La valeur est mise à jour automatiquement avec la valeur correcte lorsque l’appel de fonction distante réussit par la suite.

  • Pour les scénarios d’exécution prolongée, les applications peuvent se lier à la propriété value de l’instance IComputedExpression à l’aide d’une liaison Flex standard. Par exemple, un champ d’interface utilisateur est lié au résultat de l’évaluation de l’expression. Les applications écoutent les événements de type « computationErrorEvent » sur l’instance IComputedExpression afin de détecter les erreurs lors de l’évaluation de l’expression. Cette liaison est le seul mécanisme possible pour les expressions contenant des appels de fonctions distantes qui sont asynchrones par nature.

La classe com.adobe.solutions.exm.runtime.impl.ExpressionManagerImpl est l’implémentation par défaut de l’interface IExpressionManager. Les applications doivent créer une instance de cette classe, la configurer avec un résolveur de variable et un mappeur de fonction et l’utiliser pour l’évaluation de l’expression.