<?xml version="1.0" encoding="UTF-8"?><!-- test that done.invoke.id event is the last event we receive.  the invoked process sends childToParent
in the exit handler of its final state.  We should get it before the done.invoke, and we should get no
events after the done.invoke.  Hence timeout indicates success   --><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="2s"/>
    </onentry>
  <invoke type="http://www.w3.org/TR/scxml/">
    <content>
      <scxml initial="subFinal" version="1.0" datamodel="ecmascript">
       <final id="subFinal">
          <onexit>
           <send target="#_parent" event="childToParent"/>
            </onexit>
           </final>
         </scxml>
      </content>
      </invoke>
 
  <transition event="childToParent" target="s1"/>    
  <transition event="done.invoke" target="fail"/>
</state>

<state id="s1">
  <!-- here we should get done.invoke -->
  <transition event="done.invoke" target="s2"/>
  <transition event="*" target="fail"/>
  </state>
  
<state id="s2">
  <transition event="timeout" 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>