  <sequence>
  <context>
    <transaction name="buyStock" type="atomic">
      <compensation>
        <action name="NotifyUnavailable"
          role="NYSE"
          operation="tns:NYSEtoBroker/NotifyUnavailable"/>
      </compensation>
    </transaction>
  </context>

  <action name="BuyShare"
    role ="Broker"
    operation="tns:BrokerToNYSE/BuyShare"/>

  <while name="BuyShares">
    <condition>defs:fundsRemain</condition>
    <action name="BuyShare"
      role ="Broker"
      operation="tns:BrokerToNYSE/BuyShare">
        <correlate correlation="defs:buyingCorrelation"/>
    </action>
  </while>
</sequence>

<!-- Compensating behavior for the above transaction -->
<exception>
  <onTimeout property="tns:expiryTime"
    type="duration"
    reference="tns:BuyShares@end">
     <compensate transaction="tns:buyStock"/>
  </onTimeout>
</exception>

