<?xml version="1.0" encoding="UTF-8"?><!-- test that we don't process any events received from the invoked process once it is cancelled.  child
process tries to send us childToParent in an onexit handler.  If we get it, we fail.  
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" initial="s01">
  <onentry>
    <send event="timeout" delay="2s"/>
    </onentry>
    
    <transition event="timeout" target="pass"/>
    <transition event="childToParent" target="fail"/>
    <transition event="done.invoke" target="fail"/>
    
    <state id="s01">
      <onentry>
        <send event="foo"/>
        </onentry>
   
     <invoke type="http://www.w3.org/TR/scxml/">
       <content>
         <scxml initial="sub0" version="1.0" datamodel="ecmascript">
              <state id="sub0">
             <onentry>
             <send event="timeout" delay="2s"/>
             </onentry> 
            <transition event="timeout" target="subFinal"/>
               <onexit>
               <send target="#_parent" event="childToParent"/>
            </onexit>
          </state>  
          <final id="subFinal"/>
          </scxml>
       </content>
      </invoke>
      
     <!-- this transition will cause the invocation to be cancelled -->
     <transition event="foo" target="s02"/>
   </state>
   
   <state id="s02"/>
   
</state>
 
<final id="pass"><onentry><log label="Outcome" expr="'pass'"/></onentry></final>
<final id="fail"><onentry><log label="Outcome" expr="'fail'"/></onentry></final>
</scxml>