3 Replies Latest reply: Nov 8, 2012 5:00 AM by veejai24 RSS

    Fault Policy - Handle Multiple Faults

    907339
      Hi,

      I have a requirement that i need to call a webservice Y from BPEL Process Z
      Both are on different networks.

      Y can return two types of fault
      1. Fault Xyz (Business Fault)
      2. Fault Pqr (Remote Fault)

      I need to create a fault policy so that
      when I get Xyz Fault it retries an an interval of 30 mins for 100 times.
      when I get Pqr Fault it retries an an interval of 5 mins for 100 times.

      I have implemented it, but it works bit differently that what i expect.
      The fault which comes first, the retry interval is taken of that fault.

      Below is my policy file:
      <faultPolicies xmlns="http://schemas.oracle.com/bpel/faultpolicy">
      <faultPolicy version="2.0.1" id="FPolicy123"
                     xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
                     xmlns:xs="http://www.w3.org/2001/XMLSchema"
                     xmlns="http://schemas.oracle.com/bpel/faultpolicy"
                     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

      <Conditions>
           <faultName xmlns:ff="http://xmlns.oracle.com/testApplication/FP_1/B" name="ff:Xx11iFault">
                <condition>
                     <action ref="ora-retry"/>

      </condition>
           </faultName>
      <faultName xmlns:bpelx="http://schemas.oracle.com/bpel/extension" name="bpelx:remoteFault">
      <condition>
                     <action ref="ora-retry_rf"/>
      </condition>
           </faultName>
      </Conditions>

      <Actions>
           <Action id="ora-retry">
                <retry>
                     <retryCount>10</retryCount>
                     <retryInterval>30</retryInterval>
      <retryFailureAction ref="ora-terminate"/>
                </retry>
           </Action>
           <Action id="ora-retry_rf">
                <retry>
                     <retryCount>3</retryCount>
                     <retryInterval>15</retryInterval>
      <retryFailureAction ref="ora-terminate"/>
                </retry>
           </Action>
      <Action id="ora-terminate">
      <abort/>
      </Action>
      </Actions>

      </faultPolicy>
      </faultPolicies>

      Please suggest a solution on this.

      Thanks,
      Rosh