Freitag, 28. September 2012

Fault Management Framework - Part 2


Structure of a fault-bindings.xml file

The fault policy bindings file fault-bindings.xml, which is located in the same directory, binds the policies of the fault policy file with

·         The SOA composite application
·         The BPEL processes and Oracle Mediator components
·         The reference binding components for BPEL processes and Oracle Mediator Service components

<faultPolicyBindings>
 <composite>
 <component>
  <name>
 <reference>
  <name>
  <portType>

The framework identifies the fault policy bindings in the following order:

·         Reference Binding Component
·         BPEL Process or Oracle Mediator Service Component
·         SOA Composite Application

If no condition is found during evaluation, the execution checks the next level.


Example of fault-bindings.xml file

This example associates the fault policy with the composite application

<?xml version="1.0" encoding="UTF-8" ?>
<faultPolicyBindings version="2.0.2"
 xmlns="http://schemas.oracle.com/bpel/faultpolicy"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<composite faultPolicy="ApplicationProcessingFaults"/>
</faultPolicyBindings>

Another example with definitions for BPEL / Mediator Components and definitions for references of an external service

<?xml version="1.0" encoding="UTF-8"?>
<faultPolicyBindings version="2.0.2"
 xmlns="http://schemas.oracle.com/bpel/faultpolicy"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<composite faultPolicy="Connection_Faults"/>
<component faultPolicy="Service_Faults">
<name>Komponente1</name>
</component>
<reference faultPolicy="Service_Faults">
<name>Service1</name>
<name>Reference2</name>
<portType xmlns:credit="http://xxxxxxx">xxxxxxService</portType>
<portType xmlns:db="http://xmlns.oracle.com/pcbpel/adapter/db/insert/">db:insert_plt</portType>
</reference>
<reference faultPolicy="test1">
<name>name3</name>
</reference>
</faultPolicyBindings>
Part 3 will follow...

Donnerstag, 20. September 2012

Fault Management Framework - Part 1

A colleague of mine just held a presentation about the fault management framework in Oracle SOA Suite 11g. With her permission, I publish the essential points here.

Oracle SOA Suite 11g provides a fault framework for handling errors in composites and BPEL processes. With this feature a consistent error handling for SCA components is possible.

Structure of fault-policies.xml

The policy file fault-policies.xml has an XML structure and contains conditions for errors (error names an XPath functions for the content) and actions, which can be executed. These are: retry, human intervention, replay scope, rethrow fault, abort, custom Java action.

<faultPolicies>
 <faultPolicy>
  <Conditions>
   <faultName>
    <condition>
     <test>
     <action>
  <Actions>
   <Action>
    <retry>
    <humanIntervention>
    <rethrowFault>
    ….

Furthermore process instances can be accessed during runtime. For example, if an action results in a user intervention, recovery actions can be initiated in the EM console.

Examples of a fault-policies.xml file

In this example the action “ora-retry” is allocated to all BPEL errors
The actions tries a repitition 2 times with an interval of 5 seconds. In case of error the “Human Intervention” will be executed afterwards.

<?xml version="1.0" encoding="UTF-8" ?>
<faultPolicies xmlns="http://schemas.oracle.com/bpel/faultpolicy">
  <faultPolicy version="2.0.2"
        id="ProcessingFaults"
               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:bpelx="http://schemas.oracle.com/bpel/extension" name="bpelx:remoteFault">
        <condition>
            <action ref="ora-retry"/>
        </condition>
    </faultName>
      </Conditions>
     <Actions>
      <Action id="ora-retry">
        <retry>
          <retryCount>2</retryCount>
          <retryInterval>5</retryInterval>
          <exponentialBackoff/>
          <retryFailureAction ref="ora-human-intervention"/>
        </retry>
      </Action>
      <Action id="ora-rethrow-fault">
        <rethrowFault/>
      </Action>
      <Action id="ora-human-intervention">
        <humanIntervention/>
      </Action>
    </Actions>
  </faultPolicy>
</faultPolicies>

Part 2 will follow...