Types d'associateur d'événement
HCL UX Screen Flow Manager prend en charge les deux types d'associateurs d'événement suivants : PayloadToContextMappers et ContextToPayloadMappers.
Prenons l'exemple suivant afin de comprendre comment fonctionnent ces deux types d'associateur d'événement.
Exemple : Sur un site de voyage, un portlet d'informations passager portlet1 émet un ID passager sous la clé passengerID. Le contenu est de type Integer. Un deuxième portlet d'informations sur les loueurs de véhicules, portlet2, attend un ID passager sous la clé userID, en envoie un contenu de type String.
-
Les associateurs
PayloadToContextMapperstransforment un événement émis par une source de transition et influencent la façon dont cet événement est enregistré dans le segment DCX. Ces associateurs sont lancés avant l'enregistrement des données dans le contexte de boîte de dialogue (DCX) et, de ce fait, peuvent contrôler la clé sous laquelle les données sont stockées ainsi que le type de données.L'exemple de code suivant montre comment vous pouvez utiliser un associateur
PayloadToContextMapperpour permettre au portlet d'informations passagerportlet1et au portlet d'informations sur les loueurs de véhiculesportlet2de l'exemple de communiquer entre eux.Exemple de codepublic void payloadToContext(final QName dcxKey, final Object payload, final DCXData dcxData) { // ... QName mappedDcxKey = new QName("userID"); String transformedPayload = ((Integer)payload).toString(); dcxData.put(mappedDcxKey, transformedPayload); }Pour utiliser cet associateur, vous devez implémenter l'interfacePayloadToContextMapper. Les paramètres d'entrée contiennent des informations sur les deux éléments suivants :- La clé DCX utilisée pour stocker l'événement tel que défini en association avec la source, si elle n'est pas modifiée par l'associateur.
- La charge stockée sous cette clé, si elle n'est pas modifiée par l'associateur.
Les paramètres d'entrée fournissent également une référence au segment DCX appartenant à un instance de boîte de dialogue particulière. Dans cet exemple, l'associateur modifie la clé DCX où la charge doit être stockée et la charge elle-même en transformant son type
Integeren typeString.L'exemple de code suivant montre comment enregistrer
PayloadToContextMappers.Exemple de code<transition> <source> <transition-endpoint nameref="portlet1"> <event qname="passengerID" mapper-class="myPackage.myMapper"/> </transition-endpoint> </source> <target> <transition-endpoint nameref="portlet2"> <event qname="userID"/> </transition-endpoint> </target> </transition> -
Les associateurs
ContextToPayloadMapperspeuvent transformer un événement avant la transmission à une cible de transition. Ces associateurs sont lancés après la lecture des données à partir de l'environnement de boîte de dialogue (DCX) et avant leur transmission à la cible. Cette action signifie que ces associateurs peuvent influencer la charge avant son envoi.L'exemple de code suivant montre comment vous pouvez utiliser un associateur
ContextToPayloadMapperpour permettre au portlet d'informations passagerportlet1et au portlet d'informations sur les loueurs de véhiculesportlet2de l'exemple de communiquer entre eux.Exemple de codepublic Serializable contextToPayload(final DCXData dcxData, final QName dcxKey, final Class<?> targetClass) { // ... Object payload = dcxData.get(dcxKey, targetClass); String transformedPayload = ((Integer)payload).toString(); return (Serializable) transformedPayload; }Pour utiliser cet associateur, vous devez implémenter l'interfaceContextToPayloadMapper. Les paramètres d'entrée contiennent des informations sur les deux éléments suivants :- La clé DCX ou le
QNameutilisé pour envoyer l'événement tel que défini en association avec la source. - La charge est envoyée sous cette clé, si elle n'est pas modifiée par l'associateur.
Les paramètres d'entrée fournissent également une référence au segment DCX appartenant à un instance de boîte de dialogue particulière. Dans cet exemple, l'associateur modifie le type de charge à envoyer en remplaçant
IntegerparString.L'exemple de code suivant montre comment enregistrer
ContextToPayloadMappers.Exemple de code<transition> <source> <transition-endpoint nameref="portlet1"> <event qname="passengerID"/> </transition-endpoint> </source> <target> <transition-endpoint nameref="portlet2"> <event qname="userID" dcx-key="employeeID" mapper-class="myPackage.myMapper"/> </transition-endpoint> </target> </transition> - La clé DCX ou le