Monday, 9 January 2012

BPEL Fault Categories


Business Faults


* Application specific faults.
* Thrown or rethrown by application.
* Specified in WSDL.
* Can be caught with:
 
<catch faultName="ns1:faultName" faultVariable="varName">
 

Runtime Faults

* System errors (thrown by system).
* messageType:
 
<?xml version="1.0" encoding="UTF-8" ?>
<definitions name="RuntimeFault"
  targetNamespace="http://schemas.oracle.com/bpel/extension"
  xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  xmlns="http://schemas.xmlsoap.org/wsdl/">
 
  <message name="RuntimeFaultMessage">
<part name="code" type="xsd:string" />
<part name="summary" type="xsd:string" />
<part name="detail" type="xsd:string" />
  </message>
 
</definitions>
 
* Examples:
- bindingFault
- remoteFault
- replayFault

BPEL Standard Faults

BPEL 1.1 Standard Faults

* Standard faults are defined as follows:
- Typeless, meaning they do not have associated messageTypes
- Not associated with any Web Services Description Language (WSDL) message
- Caught without a fault variable:
 
<catch faultName="bpws:selectionFailure">
 
* Name space: http://schemas.xmlsoap.org/ws/2003/03/business-process/
* Standard faults:
- bindingFault (BPEL extension fault defined in http://schemas.oracle.com/bpel/extension)
- conflictingReceive
- conflictingRequest
- correlationViolation
- forcedTermination
- invalidReply
- joinFailure
- mismatchedAssignmentFailure
- remoteFault (BPEL extension fault defined in http://schemas.oracle.com/bpel/extension)
- repeatedCompensation
- selectionFailure
- uninitializedVariable

BPEL 2.0 Standard Faults

* See spec appendix A.
* Namespace is: http://docs.oasis-open.org/wsbpel/2.0/process/executable
* Standard faults:
- ambiguousReceive
- completionConditionFailure
- conflictingReceive
- conflictingRequest
- correlationViolation
- invalidBranchCondition
- invalidExpressionValue
- invalidVariables
- joinFailure
- mismatchedAssignmentFailure
- missingReply
- missingRequest
- scopeInitializationFailure
- selectionFailure
- subLanguageExecutionFault
- uninitializedPartnerRole
- uninitializedVariable
- unsupportedReference
- xsltInvalidSource
- xsltStylesheetNotFound

Fault Catch Activity Precedence

* Catching precedence for faults without associated data:
-> Catch activity with matching faultName
-> catchAll activity
-> Default fault handler
* Catching precedence for faults with associated data:
-> Catch activity with a matching faultName:
--> has a defined faultVariable: faultVariable initialized to the fault part element value.
--> no faultVariable defined
-> Catch activity without faultName attribute
-> catchAll activity
-> Default fault handler

References

* Using Fault Handling in a BPEL Process

No comments:

Post a Comment