Multiple start transitions

In case the called dialog has multiple start transitions that can be triggered by the emission of an event, the start transition that needs to be triggered can be controlled. To control which of the potentially matching start transitions must be triggered, an attribute ENTRY-POINT is assigned to the transition-endpoint element that references the dialog to be called.

The following code sample shows an example.

In the sample dialog1 calls dialog2. Dialog2 has two start transitions, which are both triggered by the emission of the event eX. The transition that calls dialog2 from within dialog1 uses the entry-point attribute. The attribute points to the respective source transition-endpoint portlet1 of the transition to be triggered.

For example, in a travel site, Flight booking dialog transitions to the Car booking dialog. The Car booking dialog can start either from the Renters information portlet or the Calendar portlet. The transition uses to the entry-point to point to the portlet that needs to be start.


<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>