What You May Need to Know Executing the Retry Action with Multiple Faults in the Same Flow

11-24 Oracle Fusion Middleware Developers Guide for Oracle SOA Suite 1. Create a fault-policies.xml file in which you explicitly add retrySuccessAction ref=ora-java to the fault-policies.xml file. Action id=ora-retry Retry retryCount3retryCount retryInterval2retryInterval exponentialBackoff retryFailureAction ref=ora-java retrySuccessAction ref=ora-java Retry Action 2. Deploy the composite and create an instance. 3. Click the composite instance to invoke the instance trace of the composite. 4. Click the component in which there is a recoverable fault for example, Oracle BPEL Process Manager, Oracle Mediator, or Oracle BPM.

5. Go to the Faults tab.

6. Select the Retry option to successfully retry the fault.

If fault recovery is successful, the After Successful Retry list is displayed. 7. Select the list and note that the ora-java option is now listed. For more information about recovering from faults in Oracle Enterprise Manager Fusion Middleware Control, see Oracle Fusion Middleware Administrators Guide for Oracle SOA Suite and Oracle BPM Suite.

11.5 Catching BPEL Runtime Faults

BPEL runtime faults can be caught as a named BPEL fault. The bindingFault and remoteFault can be associated with a message. This action enables the faultHandler to get details about the faults.

11.5.1 How to Catch BPEL Runtime Faults

The following procedure shows how to use the provided examples to generate a fault and define a fault handler to catch it. In this case, you modify a WSDL file to generate a fault, and create a catch attribute to catch it. To catch BPEL runtime faults: 1. Import RuntimeFault.wsdl into your process WSDL. RuntimeFault.wsdl is seeded into the MDS from soa.mar inside soa-infra-wls.ear during its deployment. You may see a copy of soa.mar in the deployed SOA Infrastructure in the Oracle WebLogic Server domain, which is a JARZIP file containing RuntimeFault.wsdl. 2. Declare a variable with messageType bpelx:RuntimeFaultMessage. 3. Catch it using the following syntax: catch faultName=bpelx:remoteFault | bpelx:bindingFault faultName=varName