Ajout de fonctions distantes personnalisées

Vous pouvez créer un lot personnalisé pour exporter vos fonctions distantes afin de les utiliser dans les expressions. L’entrée exm.service=true indique à Expression Manager que le service contient des fonctions distantes dont il peut se servir dans les expressions. La valeur <service_id> doit être un identifiant Java valide (contenant uniquement des caractères alphanumériques ainsi que les symboles _ et $). Cette valeur précédée du mot clé REMOTE_ constitue le préfixe utilisé dans les expressions. Par exemple, une interface avec une méthode annotée bar() et un ID de service foo dans les propriétés de service BluePrint peuvent être référencés dans les expressions à l’aide de la chaîne REMOTE_foo:bar(). Pour créer un lot personnalisé afin d’exporter vos fonctions distantes, vous devez effectuer les tâches suivantes :
  1. Assurez-vous que les classes d’Expression Manager, en particulier le package com.adobe.exm.expeval, sont importées dans le manifeste du lot.

  2. Définissez une interface pour le service OSGi contenant les méthodes exportées pour Expression Manager.

  3. Déclarez les méthodes sur l’interface A et annotez-les au moyen de @ServiceMethod (com.adobe.exm.expeval.ServiceMethod). Expression Manager ignore les méthodes non annotées. L’annotation ServiceMethod comprend les attributs facultatifs suivants, qui peuvent également être spécifiés :

    • enabled : indique si la méthode est activée. Expression Manager ignore toute méthode désactivée.

    • familyId : indique la famille (groupe) de méthodes. Si cet attribut n’est pas spécifié, Expression Manager présume que la méthode appartient à la famille par défaut. Il n’y a aucun registre de familles (à l’exception de celui par défaut) d’où sont sélectionnées les fonctions. Expression Manager crée le registre de façon dynamique en prenant en compte l’ensemble des ID de famille spécifiés par toutes les fonctions exportées par les différents lots. Assurez-vous que l’ID spécifié ici est raisonnablement lisible étant donné qu’il apparaît également dans l’interface utilisateur de création d’expression.

    • displayName : nom de fonction lisible par les utilisateurs. Ce nom apparaît dans l’interface utilisateur de création. Si cet attribut n’est pas spécifié, Expression Manager crée un nom par défaut à l’aide du préfixe et du nom local de la fonction.

    • description : description détaillée de la fonction. Cette description apparaît dans l’interface utilisateur de création. Si cet attribut n’est pas spécifié, Expression Manager crée une description par défaut à l’aide du préfixe et du nom local de la fonction.

Les paramètres des méthodes peuvent également être annotés (facultatif) au moyen de l’annotation @ServiceMethodParameter (com.adobe.exm.expeval.ServiceMethodParameter). Cette annotation sert uniquement à spécifier des noms et descriptions de paramètres de méthodes lisibles dans l’interface utilisateur de création.
  1. Assurez-vous que les paramètres et les valeurs renvoyées relatives aux méthodes d’interface correspondent à l’un des types suivants :

    • java.lang.String

    • java.lang.Character

    • char

    • java.lang.Boolean

    • boolean

    • java.lang.Integer

    • int

    • java.lang.Short

    • short

    • java.lang.Byte

    • byte

    • java.lang.Double

    • double

    • java.lang.Long

    • long

    • java.lang.Float

    • float

    • java.lang.Float

    • java.util.Date

  2. Définissez l’implémentation de l’interface, configurez-la en Bean Spring et exportez-la en tant que service OSGi à l’aide de BluePrint avec les propriétés spéciales suivantes :
    <bp:service interface="A" ref="<bean_id_of_Impl_of_Interface_A> "> 
        <bp:service-properties> 
           <entry key="connectors.httpinvoker" value="true" /> 
           <entry key="connectors.httpinvoker.alias" value="/<service_id> " /> 
           <entry key="connectors.remoting" value="true" /> 
           <entry key="connectors.remoting.id" value="<service_id>" /> 
           <entry key="exm.service" value="true" /> 
        </bp:service-properties> 
    </bp:service>