<?xml version="1.0" encoding="UTF-8"?><!-- test that autofoward works. If the child  process receives back a copy of the
childToParent event that it sends to this doc, it sends eventReceived, signalling success. (Note
that this doc is not required to process that event explicitly.  It should be forwarded in any case.) Otherwise
it eventually times out and the done.invoke signals failure   --><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">

     
<state id="s0">
  <onentry>
    <send event="timeout" delay="3s"/>
    </onentry>
 
  <invoke type="http://www.w3.org/TR/scxml/" autoforward="true">
    <content>
      <!-- when invoked, send childToParent to parent.  
      If it is forwarded back to us, send
      eventReceived to signal success and terminate.  
      Otherwise wait for timer to expire and terminate.  -->
     <scxml initial="sub0" version="1.0" datamodel="ecmascript">
        <state id="sub0">
          <onentry>
             <send target="#_parent" event="childToParent"/> 
              <send event="timeout" delay="3s"/> 
            </onentry> 
         <transition event="childToParent" target="subFinal">
         <send target="#_parent" event="eventReceived"/>
          </transition>
           <transition event="*" target="subFinal"/>
       </state>
        <final id="subFinal"/>
        </scxml>
    </content>
    </invoke>

  <transition event="childToParent"/>
  <transition event="eventReceived" target="pass"/>
  <transition event="*" target="fail"/>
</state>

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

</scxml>