<?xml version="1.0" encoding="UTF-8"?><!-- test that the scxml event processor is used in both directions.  If child process uses the 
scxml event i/o processor to communicate with us, send it an event.  It will send back success if
this process uses the scxml processor to send the message to it, otherwise failure.  For this test we allow 
'scxml' as an alternative to the full url.   --><scxml xmlns="http://www.w3.org/2005/07/scxml" xmlns:conf="http://www.w3.org/2005/scxml-conformance" initial="s0" version="1.0" datamodel="ecmascript">
<datamodel>
  <data id="Var1"/>
  </datamodel>
     
<state id="s0" initial="s01">
  <onentry>
    <send event="timeout" delay="2s"/>
    </onentry>
    
    <transition event="timeout" target="fail"/>
    
    <invoke type="scxml" id="foo">
      <content>
      <!-- inform parent we're running then wait for it to send us an event.  If it uses the scxml event i/o
             processor to do so, return success, otherwise return failure.   -->
       <scxml initial="sub0" version="1.0" datamodel="ecmascript">
         <datamodel>
          <data id="Var2"/>
           </datamodel>
            <state id="sub0">
              <onentry>
               <send target="#_parent" event="childRunning"/>
            </onentry>
   
           <transition event="parentToChild" target="sub1">
           <assign location="Var2" expr="_event.origintype"/>
          </transition>
         </state>
          <state id="sub1">
            <transition cond="Var2=='http://www.w3.org/TR/scxml/#SCXMLEventProcessor'" target="subFinal">
             <send target="#_parent" event="success"/>
                </transition>
            <transition cond="Var2=='scxml'" target="subFinal">
             <send target="#_parent" event="success"/>
              </transition>
            <transition target="subFinal">
                <send target="#_parent" event="failure"/>
             </transition>
           </state>
          <final id="subFinal"/>
            </scxml>
        </content>
        </invoke>
    
    <state id="s01">
    <transition event="childRunning" target="s02">
       <assign location="Var1" expr="_event.origintype"/>
       </transition>
   </state>
    
    <state id="s02">

     <transition cond="Var1=='http://www.w3.org/TR/scxml/#SCXMLEventProcessor'" target="s03">
        <send target="#_foo" event="parentToChild"/>
        </transition>
    <transition cond="Var1=='scxml'" target="s03">
        <send target="#_foo" event="parentToChild"/>
        </transition>
 
    <transition target="fail"/>

    </state>        

     
     <state id="s03">
       <transition event="success" target="pass"/>
       <transition event="fail" target="fail"/>
  
     </state>   

</state>
 
<final id="pass"><onentry><log label="Outcome" expr="'pass'"/></onentry></final>
<final id="fail"><onentry><log label="Outcome" expr="'fail'"/></onentry></final>
</scxml>