Transitions à partir de portlets

Les exemples de code suivants montrent des exemples des différentes transitions pouvant être configurées à partir d'un portlet unique comme source.

Portlet unique vers portlet unique

La transition depuis un portlet unique vers un portlet unique constitue la transition la plus simple. L'exemple de code montre ce type de transition.

La source pointe sur un noeud final de transition unique d'un portlet, comme, sur un site de voyage, un portlet d'informations passager et la cible pointe, sur un autre noeud final de transition unique d'un autre portlet, par exemple le portlet de calendrier. Après que le portlet d'informations passager source portlet1 a émis l'événement e1, l'utilisateur est acheminé vers le portlet calendrier cible portlet2, lequel est alimenté avec l'événement e2.

Exemple de code

<transition>
    <source>
        <transition-endpoint nameref="portlet1">
             <event qname="e1"/>
         </transition-endpoint>
     </source>
     <target>
         <transition-endpoint nameref="portlet2">
              <event qname="e2"/>
          </transition-endpoint>
     </target>
</transition>

Portlet unique vers portlets multiples

Cet exemple de code montre une transition depuis un portlet unique vers des portlets multiples où la cible pointe sur plusieurs portlets plutôt qu'un portlet unique.
Certains portlets sont associés à différents événements. Dans l'exemple de code, les portlets référencés par les noeuds finaux de transition portlet2a et portlet2b reçoivent l'événement e2a. Le portlet référencé par le noeud final de transition portlet2c reçoit l'événement e2c.
Remarque : Dans le cas où plusieurs portlets sont référencés comme partie d'une cible, tous les portlets doivent se trouver sur la même page.
Exemple de code

<transition>
    <source>
        <transition-endpoint nameref="portlet1">
             <event qname="e1"/>
        </transition-endpoint>
    </source>
    <target>
        <transition-endpoint nameref="portlet2a">
              <event qname="e2a"/>
        </transition-endpoint>
        <transition-endpoint nameref="portlet2b">
              <event qname="e2a"/>
        </transition-endpoint>
        <transition-endpoint nameref="portlet2c">
              <event qname="e2c"/>
        </transition-endpoint>
    </target>
</transition>

Portlet unique vers une page

Cet exemple de code montre une transition depuis un portlet unique vers une page plutôt qu'un portlet. Du fait de cette transition, l'événement est propagé vers tous les portlets figurant sur la page.

Tous les portlets se trouvant sur la page référencée par le noeud final de transition page2 reçoivent l'événement e2.

Exemple de code

<transition>
    <source>
        <transition-endpoint nameref="portlet1">
            <event qname="e1"/>
        </transition-endpoint>
    </source>
    <target>
        <transition-endpoint nameref="page2">
             <event qname="e2"/>
         </transition-endpoint>
     </target>
</transition>

Portlet unique vers une page et plusieurs portlets

Cet exemple de code montre une transition avec la cible qui pointe sur la page et plusieurs portlets. La page et chaque portlet sont associés à un événement différent. Du fait de cette transition, chaque portlet reçoit l'événement associé à la page et l'événement associé au portlet spécifique.
Dans l'exemple de code, le portlet référencé par le noeud final de transition reçoit les événements comme suit :
  • Le noeud final de transition portlet2a reçoit les événements e2 et e2a.
  • Le noeud final de transition portlet2b reçoit les événements e2 et e2a.
  • Le noeud final de transition portlet2c reçoit les événements e2 et e2c.
Remarque : Si des pages et des portlets sont référencés comme cibles, tous les portlets doivent figurer dans la page référencée.
Exemple de code :

<transition>
    <source>
        <transition-endpoint nameref="portlet1">
             <event qname="e1"/>
        </transition-endpoint>
     </source>
     <target>
          <transition-endpoint nameref="page2">
              <event qname="e2"/>
          </transition-endpoint>
          <transition-endpoint nameref="portlet2a">
               <event qname="e2a'/>
          </transition-endpoint>
          <transition-endpoint nameref="portlet2b">
               <event qname="e2a'/>
          </transition-endpoint>
          <transition-endpoint nameref="portlet2c">
               <event qname="e2c'/>
          </transition-endpoint>
      </target>
</transition> 

L'exemple de code suivant montre une alternative pour déclarer les mêmes informations que dans l'exemple de code précédent. Deux des noeuds finaux de transition précédemment affichés sont fusionnés en un seul noeud final. Les deux notations donnent le même résultat.

Exemple de code

<transition>
    <source>
        <transition-endpoint nameref="portlet1">
             <event qname="e1"/>
        </transition-endpoint>
     </source>
     <target>
          <transition-endpoint nameref="page2">
              <event qname="e2"/>
          </transition-endpoint>
          <transition-endpoint nameref="portlet2a 2b">
               <event qname="e2a'/>
          </transition-endpoint>
          <transition-endpoint nameref="portlet2c">
               <event qname="e2c'/>
          </transition-endpoint>
      </target>
</transition> 
Il est également possible de transmettre plusieurs événements à un noeud final de transition cible unique. Dans l'exemple de code suivant, des noeuds finaux de transition sont associés à des événements comme illustré.
  • La page référencée par le noeud final de transition page2 est associée aux événements e2-1 et e2-2.
  • Le portlet référencé par le noeud final de transition portlet2a est associé aux événements e2a-1 et e2a-2.
  • Le portlet référencé par le noeud final de transition portlet2b est associé à l'événement e2b-1.

Dans cet exemple particulier, portlet2a reçoit les événements e2-1, e2-2, e2a-1 et e2a-2, et portlet2b reçoit les événements e2-1, e2-2 et e2b-1.

Remarque : La transmission d'événements multiples est prise en charge uniquement pour les cibles.
Exemple de code

<transition>
    <source>
        <transition-endpoint nameref="portlet1">
             <event qname="e1"/>
        </transition-endpoint>
     </source>
     <target>
          <transition-endpoint nameref="page2">
              <event qname="e2-1"/>
              <event qname="e2-2"/>
          </transition-endpoint>
          <transition-endpoint nameref="portlet2a">
               <event qname="e2a-1"/>
               <event qname="e2a-2"/>
          </transition-endpoint>
          <transition-endpoint nameref="portlet2b">
               <event qname="e2b-1"/>
          </transition-endpoint>
      </target>
</transition> 

Portlets multiple vers portlet unique

L'exemple de code suivant montre une transition où la source pointe vers plusieurs portlets et la cible vers un portlet unique.
Quand l'un des portlets source référencés, portlet1a ou portlet1b, émet l'événement e1, l'utilisateur est acheminé vers le portlet cible portlet2, lequel est alimenté avec l'événement e2.
Remarque : A la différence des cibles, il n'est pas possible de référencer en alternance plusieurs noeuds finaux de transition pour des sources.
Exemple de code

<transition>
    <source>
        <transition-endpoint nameref="portlet1a_1b">
            <event qname="e1"/>
         </transition-endpoint>
     </source>
     <target>
         <transition-endpoint nameref="portlet2">
              <event qname="e2"/>
          </transition-endpoint>
      </target>
</transition>

Portlet unique vers une autre boîte de dialogue

L'exemple de code suivant montre une transition où la source pointe sur un portlet unique et la cible vers une autre boîte de dialogue.

Cette transition représente la transition sortante. Quand la transition est déclenchée, elle démarre la boîte de dialogue référencée, laquelle est initialisée par l'événement défini. Pour plus d'informations sur la transition sortante, voir Nœuds finaux de transition.

Dans cet exemple de code, quand portlet1 émet l'événement e1, dialog2 est démarrée et initialisée avec l'événement eX. Ensuite, le passage à une étape particulière de dialog2 dépend des transitions définies comme partie de dialog2. Pour plus d'informations, accédez à la rubrique Chaînage et imbrication de boîtes de dialogue.

Exemple de code

<transition type="nested">
   <source>
       <transition-endpoint nameref="portlet1">
            <event qname="e1"/>
       </transition-endpoint>
    </source>
    <target>
        <transition-endpoint nameref="dialog2">
            <event qname="eX"/>
         </transition-endpoint>
     </target>
</transition>