1234567891011121314151617181920212223242526272829303132333435363738 |
- <?xml version="1.0"?>
- <!-- we test that #_scxml_sessionid as a target of <send> puts the event on the external queue. If it does,
- event1 will be processed before event2, because event1 is added to the internal queue while event2 is
- added to the external queue (event though event2 is generated first). we have to make sure that event2
- is actually delivered. The delayed <send> makes sure another event is generated (so the test doesn't hang) -->
- <scxml initial="s0" version="1.0" conf:datamodel="" xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance">
- <datamodel>
- <data conf:id="1" conf:quoteExpr="#_scxml_"/>
- <data conf:id="2" conf:systemVarExpr="_sessionid"/>
- </datamodel>
-
- <state id="s0">
- <onentry>
- <conf:concatVars id1="1" id2="2"/>
- <!-- goes to the external queue -->
- <send event="event2" conf:targetExpr="1"/>
- <!-- to the internal queue -->
- <raise event="event1"/>
- <!-- this should get added to the external queue after event2 -->
- <send event="timeout"/>
- </onentry>
-
- <!-- once we've entered the state, we should check for internal events first -->
- <transition event="event1" target="s1"/>
- <transition event="*" conf:targetfail=""/>
- </state>
-
- <!-- now check that we get event2 and not a timeout -->
- <state id="s1">
- <transition event="event2" conf:targetpass=""/>
- <transition event="*" conf:targetfail=""/>
- </state>
- <conf:pass/>
- <conf:fail/>
- </scxml>
|