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 PayloadToContextMappers transforment 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 PayloadToContextMapper pour permettre au portlet d'informations passager portlet1 et au portlet d'informations sur les loueurs de véhicules portlet2 de l'exemple de communiquer entre eux.

    Exemple de code
    
     public 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'interface PayloadToContextMapper. 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 Integer en type String.

    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 ContextToPayloadMappers peuvent 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 ContextToPayloadMapper pour permettre au portlet d'informations passager portlet1 et au portlet d'informations sur les loueurs de véhicules portlet2 de l'exemple de communiquer entre eux.

    Exemple de code
    
    public 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'interface ContextToPayloadMapper. Les paramètres d'entrée contiennent des informations sur les deux éléments suivants :
    • La clé DCX ou le QName utilisé 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 Integer par String.

    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>