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: thrown inside an activity if the preparation of the invocation fails. For example, the WSDL of the process fails to load. A bindingFault is not retryable. This type of fault usually must be fixed by human intervention.
– remoteFault: thrown inside an activity because the invocation fails. For example, a SOAP fault is returned by the remote service.
– replayFault: A replayFault replays the activity inside a scope. At any point inside a scope, this fault is migrated up to the scope. The server then re-executes the scope from the beginning.
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