Transitions de lancement multiples

Lorsque la boîte de dialogue appelée comporte des transitions de lancement multiples pouvant être déclenchées par l'émission d'un événement, la transition de lancement qui doit être déclenchée peut être contrôlée. Pour contrôler quelle transition de lancement par les transitions potentielles doit être déclenchée, un attribut entry-point est affecté à l'élément de noeud final de transition qui référence la boîte de dialogue à appeler.

Voici un exemple de code :

Dans l'exemple, dialog1 appelle dialog2. Dialog2 comporte deux transitions, lesquelles sont toutes deux déclenchées par l'émission de l'événement eX. La transition qui appelle dialog2 depuis dialog1 utilise l'attribut entry-point. Cet attribut pointe sur le noeud final de transition source respectif portlet1 de la transition à déclencher.

Ainsi, sur un site de voyage, la transition fait passer de la boîte de dialogue de réservation de vol à la boîte de dialogue de location de véhicule. Cette dernière permet d'accéder au portlet d'informations sur les loueurs ou au portlet de calendrier. La transition utilise le point d'entrée entry-point pour pointer sur le portlet à démarrer.


<dialog name="dialog1">
  ...
  <transition type="nested">
      <source>
          <transition-endpoint nameref="portlet1">
              <event qname="e1a"/>
          </transition-endpoint>
      </source>
      <target>
          <transition-endpoint nameref="dialog2" entry-point="portlet1">
              event qname="eX"/>
          </transition-endpoint>
      </target>
  </transition>
  ...
</dialog>
  ...
  <transition type="start">
      <source>
          <transition-endpoint nameref="portlet1">
              <event qname="eX"/>
          </transition-endpoint>
      </source>
      <target>
          <transition-endpoint nameref="portlet3">
             <event qname="eX"/>
          </transition-endpoint>
      </target>
  </transition>
  <transition type="start">
      <source>
          <transition-endpoint nameref="portlet2">
              <event qname="eX"/>
          </transition-endpoint>
      </source>
      <target>
          <transition-endpoint nameref="portlet3">
             <event qname="eX"/>
          </transition-endpoint>
      </target>
  </transition>
  ...
</dialog>