Business Faults handling

I am having a simple BPEL process and i am trying to catch fault within the process.
1.file adapter read the xml file when available and process it
2. XML is parsed and plsql pkg are invoked via DBadapter,
I want to catch business faults. How should i use fault variables and how to assign them to a wsdl.
WSDL part is confusing me. Can you throw some light on this please
Regards

Can u make it bit clear?
In the scenario u mentioned File adpater and DB adapter can not throw a business fault.
If U want to throw a business fault in your service u can use throw activity.
Then u catch it using catch block.
If you want to expose the business fault thrown by you in the service to the service consumer add below segment to the wsdl of your service
<binding .... >
<operation .... >
<fault>*
<soap:fault name="nmtoken" use="literal|encoded"
encodingStyle="uri-list"? namespace="uri"?>
</fault>
</operation>
</binding>
namespace is the URI u define while throwing fault in your service.

Similar Messages

  • Business faults defined in fault policies for synchonous processing

    Hi everyone,
    I have an issue I would like to use your knowledge. I am re-throwing business faults from a synchronous process to a calling synchronous client. Instead of the business fault a remote fault is being propagated back to the calling client using SOA suite 11g for synchronous SCA components. This then causes the fault policies to trigger an incorrect policy.
    Please see below what happens and the error returned.
    1. I have created a synchronous process called SynchrnousBusinessFault that invokes another synchronous process called SynchrnousThrowBusinessFault.
    2. The SynchrnousThrowBusinessFault re-throws a business fault when receiving a text 'businessfault'.
    3. The fault is automatically propaged back to the calling client SynchrnousBusinessFault without the use of any CatchAll branch. The error re-thrown is correct see below:
    <bpelFault>
    <faultType>
    <message>1</message>
    </faultType>
    <BusinessFault>
    <part name="payload">
    <BusinessFault>
    <FaultCode>1000</FaultCode>
    <FaultMessage>Own Business Fault</FaultMessage>
    </BusinessFault>
    </part>
    </BusinessFault>
    </bpelFault>
    4. The callback client SynchrnousBusinessFault receives the fault and should trigger the fault policies for the business fault I have created. The business fault in the fault policies look as follow:
    <faultName xmlns:ns1="http://www.businessfault/example"
    name="ns1:BusinessFault">
    <condition>
    <action ref="business-fault-handler"/>
    </condition>
    </faultName>
    <Action id="business-fault-handler">
    <humanIntervention/>
    </Action>
    This business fault is not triggered in the fault policies and instead the remote fault policy. The reason is that after the re-thrown of the fault the business fault is followed by another fault. I don't understand where this remote fault comes from or whatever this is expected behaviour. Please see the fault below.
    I can provide the example SCA component if required.
    Many Thanks for your time.
    Ren
    om.oracle.bpel.client.BPELFault: faultName: {{http://www.businessfault/example}BusinessFault} messageType: {{http://xmlns.oracle.com/Synchrnous_scenario_jws/SynchrnousThrowBusinessFault/SynchrnousThrowBusinessFault}FaultMessage} parts: {{ payload=<BusinessFault xmlns="http://www.businessfault/example">  <FaultCode>1000</FaultCode>  <FaultMessage>Own Business Fault</FaultMessage> </BusinessFault> } at com.collaxa.cube.engine.ext.bpel.common.BPELWMPHelper.createBPELFault(BPELWMPHelper.java:1071) at com.collaxa.cube.engine.ext.bpel.common.wmp.BPELThrowWMP.__executeStatements(BPELThrowWMP.java:43) at com.collaxa.cube.engine.ext.bpel.common.wmp.BaseBPELActivityWMP.perform(BaseBPELActivityWMP.java:157) at com.collaxa.cube.engine.CubeEngine._performActivity(CubeEngine.java:2585) at com.collaxa.cube.engine.CubeEngine.performActivity(CubeEngine.java:2444) at com.collaxa.cube.engine.CubeEngine.handleWorkItem(CubeEngine.java:1121) at com.collaxa.cube.engine.dispatch.message.instance.PerformMessageHandler.handleLocal(PerformMessageHandler.java:73) at com.collaxa.cube.engine.dispatch.DispatchHelper.handleLocalMessage(DispatchHelper.java:220) at com.collaxa.cube.engine.dispatch.DispatchHelper.sendMemory(DispatchHelper.java:322) at com.collaxa.cube.engine.CubeEngine.endRequest(CubeEngine.java:4497) at com.collaxa.cube.engine.CubeEngine.endRequest(CubeEngine.java:4428) at com.collaxa.cube.engine.CubeEngine.createAndInvoke(CubeEngine.java:685) at com.collaxa.cube.engine.ejb.impl.CubeEngineBean.createAndInvoke(CubeEngineBean.java:116) at com.collaxa.cube.engine.ejb.impl.CubeEngineBean.syncCreateAndInvoke(CubeEngineBean.java:153) at com.collaxa.cube.engine.ejb.impl.bpel.BPELEngineBean.syncCreateAndInvoke(BPELEngineBean.java:107) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at com.bea.core.repackaged.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:310) at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182) at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149) at com.bea.core.repackaged.springframework.jee.intercept.MethodInvocationInvocationContext.proceed(MethodInvocationInvocationContext.java:104) at oracle.security.jps.ee.ejb.JpsAbsInterceptor$1.run(JpsAbsInterceptor.java:88) at java.security.AccessController.doPrivileged(Native Method) at oracle.security.jps.util.JpsSubject.doAsPrivileged(JpsSubject.java:313) at oracle.security.jps.ee.util.JpsPlatformUtil.runJaasMode(JpsPlatformUtil.java:413) at oracle.security.jps.wls.JpsWeblogicEjbInterceptor.runJaasMode(JpsWeblogicEjbInterceptor.java:61) at oracle.security.jps.ee.ejb.JpsAbsInterceptor.intercept(JpsAbsInterceptor.java:106) at oracle.security.jps.ee.ejb.JpsInterceptor.intercept(JpsInterceptor.java:105) at sun.reflect.GeneratedMethodAccessor756.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at com.bea.core.repackaged.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:310) at com.bea.core.repackaged.springframework.jee.intercept.JeeInterceptorInterceptor.invoke(JeeInterceptorInterceptor.java:69) at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:131) at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:119) at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) at com.bea.core.repackaged.springframework.jee.spi.MethodInvocationVisitorImpl.visit(MethodInvocationVisitorImpl.java:37) at weblogic.ejb.container.injection.EnvironmentInterceptorCallbackImpl.callback(EnvironmentInterceptorCallbackImpl.java:55) at com.bea.core.repackaged.springframework.jee.spi.EnvironmentInterceptor.invoke(EnvironmentInterceptor.java:50) at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) at com.bea.core.repackaged.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89) at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:131) at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:119) at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) at com.bea.core.repackaged.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204) at $Proxy175.syncCreateAndInvoke(Unknown Source) at com.collaxa.cube.engine.ejb.impl.bpel.BPELEngineBean_51369e_ICubeEngineLocalBeanImpl.syncCreateAndInvoke(BPELEngineBean_51369e_ICubeEngineLocalBeanImpl.java:911) at com.collaxa.cube.engine.delivery.DeliveryHandler.callCreateAndInvoke(DeliveryHandler.java:784) at com.collaxa.cube.engine.delivery.DeliveryHandler.initialRequestAnyType(DeliveryHandler.java:524) at com.collaxa.cube.engine.delivery.DeliveryHandler.initialRequest(DeliveryHandler.java:485) at com.collaxa.cube.engine.delivery.DeliveryHandler.request(DeliveryHandler.java:164) at com.collaxa.cube.engine.ejb.impl.CubeDeliveryBean.request(CubeDeliveryBean.java:607) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at com.bea.core.repackaged.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:310) at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182) at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149) at com.bea.core.repackaged.springframework.jee.intercept.MethodInvocationInvocationContext.proceed(MethodInvocationInvocationContext.java:104) at oracle.security.jps.ee.ejb.JpsAbsInterceptor$1.run(JpsAbsInterceptor.java:88) at java.security.AccessController.doPrivileged(Native Method) at oracle.security.jps.util.JpsSubject.doAsPrivileged(JpsSubject.java:313) at oracle.security.jps.ee.util.JpsPlatformUtil.runJaasMode(JpsPlatformUtil.java:413) at oracle.security.jps.wls.JpsWeblogicEjbInterceptor.runJaasMode(JpsWeblogicEjbInterceptor.java:61) at oracle.security.jps.ee.ejb.JpsAbsInterceptor.intercept(JpsAbsInterceptor.java:106) at oracle.security.jps.ee.ejb.JpsInterceptor.intercept(JpsInterceptor.java:105) at sun.reflect.GeneratedMethodAccessor756.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at com.bea.core.repackaged.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:310) at com.bea.core.repackaged.springframework.jee.intercept.JeeInterceptorInterceptor.invoke(JeeInterceptorInterceptor.java:69) at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:131) at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:119) at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) at com.bea.core.repackaged.springframework.jee.spi.MethodInvocationVisitorImpl.visit(MethodInvocationVisitorImpl.java:37) at weblogic.ejb.container.injection.EnvironmentInterceptorCallbackImpl.callback(EnvironmentInterceptorCallbackImpl.java:55) at com.bea.core.repackaged.springframework.jee.spi.EnvironmentInterceptor.invoke(EnvironmentInterceptor.java:50) at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) at com.bea.core.repackaged.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89) at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:131) at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:119) at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) at com.bea.core.repackaged.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204) at $Proxy172.request(Unknown Source) at com.collaxa.cube.engine.ejb.impl.bpel.BPELDeliveryBean_5k948i_ICubeDeliveryLocalBeanImpl.request(BPELDeliveryBean_5k948i_ICubeDeliveryLocalBeanImpl.java:829) at oracle.fabric.CubeServiceEngine.request(CubeServiceEngine.java:354) at oracle.integration.platform.blocks.mesh.SynchronousMessageHandler.doRequest(SynchronousMessageHandler.java:139) at oracle.integration.platform.blocks.mesh.MessageRouter.request(MessageRouter.java:179) at oracle.integration.platform.blocks.mesh.MeshImpl.request(MeshImpl.java:144) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:296) at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:177) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:144) at oracle.integration.platform.metrics.PhaseEventAspect.invoke(PhaseEventAspect.java:59) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:166) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204) at $Proxy185.request(Unknown Source) at oracle.integration.platform.blocks.local.LocalInvocationProcessor.request(LocalInvocationProcessor.java:232) at oracle.integration.platform.blocks.soap.WebServiceExternalBindingComponent.request(WebServiceExternalBindingComponent.java:514) at oracle.integration.platform.blocks.mesh.SynchronousMessageHandler.doRequest(SynchronousMessageHandler.java:139) at oracle.integration.platform.blocks.mesh.MessageRouter.request(MessageRouter.java:179) at oracle.integration.platform.blocks.mesh.MeshImpl.request(MeshImpl.java:144) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:296) at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:177) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:144) at oracle.integration.platform.metrics.PhaseEventAspect.invoke(PhaseEventAspect.java:71) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:166) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204) at $Proxy185.request(Unknown Source) at oracle.fabric.CubeServiceEngine.requestToMesh(CubeServiceEngine.java:784) at com.collaxa.cube.ws.WSInvocationManager.invoke(WSInvocationManager.java:256) at com.collaxa.cube.engine.ext.common.InvokeHandler.__invoke(InvokeHandler.java:1009) at com.collaxa.cube.engine.ext.common.InvokeHandler.handleNormalInvoke(InvokeHandler.java:512) at com.collaxa.cube.engine.ext.common.InvokeHandler.handle(InvokeHandler.java:123) at com.collaxa.cube.engine.ext.bpel.common.wmp.BPELInvokeWMP.__executeStatements(BPELInvokeWMP.java:63) at com.collaxa.cube.engine.ext.bpel.common.wmp.BaseBPELActivityWMP.perform(BaseBPELActivityWMP.java:157) at com.collaxa.cube.engine.CubeEngine._performActivity(CubeEngine.java:2585) at com.collaxa.cube.engine.CubeEngine.performActivity(CubeEngine.java:2444) at com.collaxa.cube.engine.CubeEngine.handleWorkItem(CubeEngine.java:1121) at com.collaxa.cube.engine.dispatch.message.instance.PerformMessageHandler.handleLocal(PerformMessageHandler.java:73) at com.collaxa.cube.engine.dispatch.DispatchHelper.handleLocalMessage(DispatchHelper.java:220) at com.collaxa.cube.engine.dispatch.DispatchHelper.sendMemory(DispatchHelper.java:322) at com.collaxa.cube.engine.CubeEngine.endRequest(CubeEngine.java:4497) at com.collaxa.cube.engine.CubeEngine.endRequest(CubeEngine.java:4428) at com.collaxa.cube.engine.CubeEngine.createAndInvoke(CubeEngine.java:685) at com.collaxa.cube.engine.ejb.impl.CubeEngineBean.createAndInvoke(CubeEngineBean.java:116) at com.collaxa.cube.engine.ejb.impl.CubeEngineBean.syncCreateAndInvoke(CubeEngineBean.java:153) at com.collaxa.cube.engine.ejb.impl.bpel.BPELEngineBean.syncCreateAndInvoke(BPELEngineBean.java:107) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at com.bea.core.repackaged.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:310) at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182) at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149) at com.bea.core.repackaged.springframework.jee.intercept.MethodInvocationInvocationContext.proceed(MethodInvocationInvocationContext.java:104) at oracle.security.jps.ee.ejb.JpsAbsInterceptor$1.run(JpsAbsInterceptor.java:88) at java.security.AccessController.doPrivileged(Native Method) at oracle.security.jps.util.JpsSubject.doAsPrivileged(JpsSubject.java:313) at oracle.security.jps.ee.util.JpsPlatformUtil.runJaasMode(JpsPlatformUtil.java:413) at oracle.security.jps.wls.JpsWeblogicEjbInterceptor.runJaasMode(JpsWeblogicEjbInterceptor.java:61) at oracle.security.jps.ee.ejb.JpsAbsInterceptor.intercept(JpsAbsInterceptor.java:106) at oracle.security.jps.ee.ejb.JpsInterceptor.intercept(JpsInterceptor.java:105) at sun.reflect.GeneratedMethodAccessor756.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at com.bea.core.repackaged.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:310) at com.bea.core.repackaged.springframework.jee.intercept.JeeInterceptorInterceptor.invoke(JeeInterceptorInterceptor.java:69) at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:131) at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:119) at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) at com.bea.core.repackaged.springframework.jee.spi.MethodInvocationVisitorImpl.visit(MethodInvocationVisitorImpl.java:37) at weblogic.ejb.container.injection.EnvironmentInterceptorCallbackImpl.callback(EnvironmentInterceptorCallbackImpl.java:55) at com.bea.core.repackaged.springframework.jee.spi.EnvironmentInterceptor.invoke(EnvironmentInterceptor.java:50) at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) at com.bea.core.repackaged.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89) at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:131) at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:119) at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) at com.bea.core.repackaged.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204) at $Proxy175.syncCreateAndInvoke(Unknown Source) at com.collaxa.cube.engine.ejb.impl.bpel.BPELEngineBean_51369e_ICubeEngineLocalBeanImpl.syncCreateAndInvoke(BPELEngineBean_51369e_ICubeEngineLocalBeanImpl.java:911) at com.collaxa.cube.engine.delivery.DeliveryHandler.callCreateAndInvoke(DeliveryHandler.java:784) at com.collaxa.cube.engine.delivery.DeliveryHandler.initialRequestAnyType(DeliveryHandler.java:524) at com.collaxa.cube.engine.delivery.DeliveryHandler.initialRequest(DeliveryHandler.java:485) at com.collaxa.cube.engine.delivery.DeliveryHandler.request(DeliveryHandler.java:164) at com.collaxa.cube.engine.ejb.impl.CubeDeliveryBean.request(CubeDeliveryBean.java:607) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at com.bea.core.repackaged.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:310) at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182) at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149) at com.bea.core.repackaged.springframework.jee.intercept.MethodInvocationInvocationContext.proceed(MethodInvocationInvocationContext.java:104) at oracle.security.jps.ee.ejb.JpsAbsInterceptor$1.run(JpsAbsInterceptor.java:88) at java.security.AccessController.doPrivileged(Native Method) at oracle.security.jps.util.JpsSubject.doAsPrivileged(JpsSubject.java:313) at oracle.security.jps.ee.util.JpsPlatformUtil.runJaasMode(JpsPlatformUtil.java:413) at oracle.security.jps.wls.JpsWeblogicEjbInterceptor.runJaasMode(JpsWeblogicEjbInterceptor.java:61) at oracle.security.jps.ee.ejb.JpsAbsInterceptor.intercept(JpsAbsInterceptor.java:106) at oracle.security.jps.ee.ejb.JpsInterceptor.intercept(JpsInterceptor.java:105) at sun.reflect.GeneratedMethodAccessor756.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at com.bea.core.repackaged.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:310) at com.bea.core.repackaged.springframework.jee.intercept.JeeInterceptorInterceptor.invoke(JeeInterceptorInterceptor.java:69) at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:131) at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:119) at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) at com.bea.core.repackaged.springframework.jee.spi.MethodInvocationVisitorImpl.visit(MethodInvocationVisitorImpl.java:37) at weblogic.ejb.container.injection.EnvironmentInterceptorCallbackImpl.callback(EnvironmentInterceptorCallbackImpl.java:55) at com.bea.core.repackaged.springframework.jee.spi.EnvironmentInterceptor.invoke(EnvironmentInterceptor.java:50) at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) at com.bea.core.repackaged.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89) at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:131) at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:119) at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) at com.bea.core.repackaged.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204) at $Proxy172.request(Unknown Source) at com.collaxa.cube.engine.ejb.impl.bpel.BPELDeliveryBean_5k948i_ICubeDeliveryLocalBeanImpl.request(BPELDeliveryBean_5k948i_ICubeDeliveryLocalBeanImpl.java:829) at oracle.fabric.CubeServiceEngine.request(CubeServiceEngine.java:354) at oracle.integration.platform.blocks.mesh.SynchronousMessageHandler.doRequest(SynchronousMessageHandler.java:139) at oracle.integration.platform.blocks.mesh.MessageRouter.request(MessageRouter.java:179) at oracle.integration.platform.blocks.mesh.MeshImpl.request(MeshImpl.java:144) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:296) at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:177) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:144) at oracle.integration.platform.metrics.PhaseEventAspect.invoke(PhaseEventAspect.java:59) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:166) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204) at $Proxy185.request(Unknown Source) at oracle.integration.platform.blocks.soap.WebServiceEntryBindingComponent.doMessageProcessing(WebServiceEntryBindingComponent.java:1169) at oracle.integration.platform.blocks.soap.WebServiceEntryBindingComponent.processIncomingMessage(WebServiceEntryBindingComponent.java:768) at oracle.integration.platform.blocks.soap.FabricProvider.processMessage(FabricProvider.java:113) at oracle.j2ee.ws.server.provider.ProviderProcessor.doEndpointProcessing(ProviderProcessor.java:1160) at oracle.j2ee.ws.server.WebServiceProcessor.invokeEndpointImplementation(WebServiceProcessor.java:888) at oracle.j2ee.ws.server.provider.ProviderProcessor.doRequestProcessing(ProviderProcessor.java:561) at oracle.j2ee.ws.server.WebServiceProcessor.processRequest(WebServiceProcessor.java:216) at oracle.j2ee.ws.server.WebServiceProcessor.doService(WebServiceProcessor.java:179) at oracle.j2ee.ws.server.WebServiceServlet.doPost(WebServiceServlet.java:417) at oracle.integration.platform.blocks.soap.FabricProviderServlet.doPost(FabricProviderServlet.java:480) at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227) at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125) at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:292) at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56) at oracle.dms.wls.DMSServletFilter.doFilter(DMSServletFilter.java:326) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56) at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3592) at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321) at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121) at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2202) at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2108) at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1432) at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201) at weblogic.work.ExecuteThread.run(ExecuteThread.java:173) </message>

    So that means - only fault originating from invoke activity in BPEL can be associated with a fault policy. No other fault can be associated. Even if I throw a selectionFault from throw activity, that will not be captured. Only fault from invoke activity can be associated with a fault policy.
    Please confirm.
    Thanks,
    Edited by: 833944 on Feb 24, 2011 9:36 PM

  • How to handle Business faults

    Hi All,
    I have a question. I would like to use a Throw activity in my BPEL process using Oracle SOA suite 11g. The fault that I want to through is a custom business fault. Is it possible to capture the thrown fault in the fault policies configured in the same SCA composite from where the fault is thrown? I would like to call a custom Java class. I am able to do this with the out-of-the box faults in BPEL (without using the throw activity).
    If this is possible I would appreciate an example.
    Thanks
    SR

    Nagakiran-
    As long as the fault is thrown by external service, you could handle the same ways as system fault.
    Below URL could show some example:
    http://www.it-eye.nl/weblog/2009/02/14/oracle-bpel-fault-policy-framework-handling-custom-business-faults/
    -Sridhar

  • How Handle ESB business Faults using Error Hospital

    Hai Everyone
    I am trying to configure Error Hospital for both BPEL & ESB faults. I`ve successfully configured it for BPEL and am trying to do that for ESB. I found that Fault Management can`t be done for ESB. Is that true ?
    If thats true, then I was thinking of a solution:
    1) Throw Fault from ESB to BPEL Service Invoker
    2) BPEL Invoke activity fails
    3) BPEL fault policy will be used.
    Now I am struck in throwing fault using XSL transformation from ESB service wsdl to BPEL, but my BPEL invoke activity doesnt understand the fault from wsdl and just thinks that as the output and succeeds.
    Is there anyway to get around this ?
    cheers
    Srini

    Nagakiran-
    As long as the fault is thrown by external service, you could handle the same ways as system fault.
    Below URL could show some example:
    http://www.it-eye.nl/weblog/2009/02/14/oracle-bpel-fault-policy-framework-handling-custom-business-faults/
    -Sridhar

  • Handling BPEL custom business faults in 11g

    Hi All,
    I am trying to work with 11g BPEL custom business faults based on fault-policies and following options are tried, but no success
    1. Use Throw activity to throw business fault and handle it in fault-policies
    2. Receive SOAP:Fault from OSB partnerlink and handle it in fault-policies
    Flow Description_
    BPEL<sync=>OSB
    Fault-Policy used*
    <faultName xmlns:ns="http://schemas.org/2207/Services"
    name="ns:BusinessFault">
    <condition>
    <action ref="ora-retry"/>
    </condition>
    </faultName>
    OSB WSDL*
    &lt;wsdl:message name="Business_ResponseFaultMessage"&gt;
    &lt;wsdl:part name="BusinessFault" element="tns:BusinessFault"&gt;&lt;/wsdl:part&gt;
    &lt;/wsdl:message&gt;
    &lt;wsdl:portType name="IntegrationService"&gt;
    &lt;wsdl:operation name="Order"&gt;
    &lt;wsdl:input message="tns:IntegrationService_InputMessage"/&gt;
    &lt;wsdl:output message="tns:IntegrationService_OutputMessage"/&gt;
    &lt;wsdl:fault name="BusinessFault" message="tns:Business_ResponseFaultMessage"&gt;&lt;/wsdl:fault&gt;
    &lt;/wsdl:operation&gt;
    &lt;/wsdl:portType&gt;
    &lt;wsdl:binding name="IntegrationSoap" type="tns:IntegrationService"&gt;
    &lt;soap:binding transport="http://schemas.xmlsoap.org/soap/http"/&gt;
    &lt;wsdl:operation name="Order"&gt;
    &lt;soap:operation soapAction="Order" style="document"/&gt;
    &lt;wsdl:input&gt;
    &lt;soap:body use="literal"/&gt;
    &lt;/wsdl:input&gt;
    &lt;wsdl:output&gt;
    &lt;soap:body use="literal"/&gt;
    &lt;/wsdl:output&gt;
    &lt;wsdl:fault name ="BusinessFault" &gt;
    &lt;soap:fault name="BusinessFault" use="literal" /&gt;
    &lt;/wsdl:fault&gt;
    &lt;/wsdl:operation&gt;
    &lt;/wsdl:binding&gt;
    I have defined BusinessFault in xsd and xsd is referenced with in OSB WSDL.
    *1st case result*
    When I use Throw activity,business fault is being raised but always going to CatchAll in BPEL, but I would like to handle through fault-policies.
    _2nd case result_
    OSB partnerlink is returning SOAP:Fault to BPEL, but BPEL is always taking it as remoteFault, not as a business fault.
    When I ran OSB service,I can clearly see SOAP:Fault being thrown,but When I invoke from EM console it is always complaining like
    *     Either the WSDL URL is invalid or the WSDL file is not valid or incorrect. - Failed to model operation: {"http://schemas.org/2207/Services}Order(,)*
    *Reason: Could not find definition for element: {"http://schemas.org/2207/Services}BusinessFault Detail:*
    SOAP:Fault returned by OSB is
    &lt;soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"&gt;
    &lt;soapenv:Header/&gt;
    &lt;soapenv:Body&gt;
    &lt;soap-env:Fault xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/"&gt;
    &lt;faultcode&gt;soap-env:Server&lt;/faultcode&gt;
    &lt;faultstring&gt;Unable to find order offer for supplied product: ZINDA&lt;/faultstring&gt;
    &lt;detail&gt;
    &lt;ns:BusinessFault xmlns:ns="http://schemas.org/2207/Services"&gt;
    &lt;OrderResponse xmlns="http://schemas.org/2207/Services" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&gt;
    &lt;Errors&gt;
    &lt;ErrorMsgl Code="Unknown"&gt;Unable to find offer for supplied product: ZINDA&lt;/ErrorDetail&gt;
    &lt;/Errors&gt;
    &lt;Status&gt;Failed&lt;/Status&gt;
    &lt;/OrderResponse&gt;
    &lt;/ns:BusinessFault&gt;
    &lt;/detail&gt;
    &lt;/soap-env:Fault&gt;
    &lt;/soapenv:Body&gt;
    &lt;/soapenv:Envelope&gt;
    Any ideas where we are going wrong?
    Thanks,
    Praveen
    Edited by: Praveen Vaddanam on Apr 3, 2012 5:23 AM
    Edited by: Praveen Vaddanam on Apr 3, 2012 5:32 AM

    Hi
    Did you find a solution to your problem. I am also facing a similar problem.
    Thanks

  • How to return a business fault from a DB Adapter call.

    Using a SOA composite with a Mediator, from a BPEL service we call a PL/SQL package, via a DB Adapter, to get some information. Sometimes we will get a NO_DATA_FOUND from the select and we catch that (or as the documentation says - for example when a social security number is not found in the database).
    The question is how do we raise that as a business fault that is returned to the caller. Currently we catch the fault in the PL/SQL and return the details in the return message - but the messageis not in itself a fault and so we would need to check the message using an IF to see if it was an error.
    The question then also can we easily turn this message into a fault. We have tried using a Choose in a transformation without luck.
    Hope I am describing the scenario but clearly it is something that must be regularly handled. Thus how should we handle when a social security number is not found in the database.

    Sorry, the service was built without a BPEL. The service in question is used by othere services to access the database. There is a composite that exposes the service and includes a Mediator that has many Routing Rules that transform the various inputs using xsl, makes the appropriate jca call to a PL/SQL procedure and transforms the returned information from the database using xsl. The PL/SQL only has input and output variables and can raise an exception. We want to catch say N0 DATA FOUND and raise a business fault that subsequently gets caught. We tried adding code to the xsl to try and return a fault but it did not work. We can add a BPEL to the service to accomplish what we want but wanted to do without a BPEL.

  • Fault handling for Mediator component

    I am trying to capture all the system and business faults of the composite and email the details to system groups. I am having issues with the fault policy file and get the following error. My Composite is made up of Web Services ---> Mediator ---->DBAdapter
    INFO: FaultPoliciesParser.parsePolicies ------->Begin Parsing of policy file
    <Jun 18, 2012 3:48:58 PM EST> <Error> <oracle.soa.mediator.common.error.recovery> <BEA-000000> <Failed to recover the mediator fault.
    oracle.fabric.common.FabricException: Missing fault policy: TESTFaultPolicy
    at oracle.integration.platform.faultpolicy.RecoverFault.resolveToActionRef(RecoverFault.java:101)
    at oracle.integration.platform.faultpolicy.FaultRecoveryManagerImpl.resolveToActionRef(FaultRecoveryManagerImpl.java:151)
    at oracle.tip.mediator.common.error.recovery.MediatorRecoveryHandler.resolveToActionRef(MediatorRecoveryHandler.java:158)
    at oracle.tip.mediator.common.error.ErrorMessageEnqueuer.enqueue(ErrorMessageEnqueuer.java:174)
    at oracle.tip.mediator.dispatch.db.DeferredDBWorker.handleError(DeferredDBWorker.java:117)
    at oracle.tip.mediator.common.listener.DBWorker.process(DBWorker.java:114)
    at oracle.tip.mediator.common.listener.AbstractWorker.run(AbstractWorker.java:83)
    at oracle.integration.platform.blocks.executor.WorkManagerExecutor$1.run(WorkManagerExecutor.java:120)
    at weblogic.work.j2ee.J2EEWorkManager$WorkWithListener.run(J2EEWorkManager.java:183)
    at weblogic.work.DaemonWorkThread.run(DaemonWorkThread.java:30)
    I am attaching the following files
    FAULT-POLICIES.XML*
    <?xml version="1.0" encoding="UTF-8"?>
    <faultPolicies xmlns="http://schemas.oracle.com/bpel/faultpolicy"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <faultPolicy version="2.0.1" id="TESTFaultPolicy">
    <Conditions>
    <faultName>
    <condition>
    <action ref="ora-java"/>
    </condition>
    </faultName>
    </Conditions>
    <Actions>
    <Action id="ora-java">
    <javaAction className="test.EmailFaultHandler"
    defaultAction="ora-human-intervention">
    </javaAction>
    </Action>
    </Actions>
    </faultPolicy>
    </faultPolicies>
    FAULT-BINDINGS.XML_
    <?xml version="1.0" encoding="UTF-8"?>
    <faultPolicyBindings version="2.0.1"
    xmlns="http://schemas.oracle.com/bpel/faultpolicy">
    <composite faultPolicy="TESTFaultPolicy"/>
    <component faultPolicy=" TESTFaultPolicy">
    <name>HandleRealTimeRequests</name>
    </component>
    </faultPolicyBindings>
    I am yet to figure out how to capture the fault and email to the groups in EmailFaultHandler.java file below
    EmailFaultHandler.java_
    package test;
    import com.collaxa.cube.engine.fp.BPELFaultRecoveryContextImpl;
    import java.util.Map;
    import oracle.integration.platform.faultpolicy.IFaultRecoveryContext;
    import oracle.integration.platform.faultpolicy.IFaultRecoveryJavaClass;
    public class EmailFaultHandler implements IFaultRecoveryJavaClass {
    public void handleRetrySuccess(IFaultRecoveryContext iFaultRecoveryContext) {
    public String handleFault(IFaultRecoveryContext iFaultRecoveryContext) {
    //Print Fault Meta Data to Console
    System.out.println("****************Fault Metadata********************************");
    System.out.println("Fault policy id: " + iFaultRecoveryContext.getPolicyId());
    System.out.println("Fault type: " + iFaultRecoveryContext.getType());
    System.out.println("Partnerlink: " + iFaultRecoveryContext.getReferenceName());
    System.out.println("Port type: " + iFaultRecoveryContext.getPortType());
    System.out.println("**************************************************************");
    //print all properties defined in the fault-policy file
    System.out.println("Properties Set for the Fault");
    Map props = iFaultRecoveryContext.getProperties();
    for (Object key: props.keySet())
    System.out.println("Key : " + key.toString() + " Value : " + props.get(key).toString());
    //Custom Code to Log Fault to File/DB/JMS or send Emails etc.
    return "Manual";
    Please suggest
    Thanks
    Edited by: user5108636 on 18/06/2012 00:20
    Edited by: user5108636 on 18/06/2012 00:20

    By the way, I managed to break through a little further. Now I am past this fault policy error. However, the java fault handler class is giving ClassNotFoundException. The way I added the java file (test.EmailFaultHandler) through JDeveloper in the composite project (Right click --> New ---> Java file). How do I add this to the classpath. I thought it automatically gets added to the SOA composite project classpath.
    Please suggest.
    INFO: FaultPoliciesParser.parsePolicies ------->Begin Parsing of policy file
    <Jun 19, 2012 10:58:01 AM EST> <Warning> <oracle.soa.mediator.monitor> <BEA-000000> <Venkat:Inside Synchronized block with msg id :CCA40B60B9A911E1BF115F9190ABA14C>
    <Jun 19, 2012 10:58:01 AM EST> <Warning> <oracle.soa.mediator.monitor> <BEA-000000> <Venkat:Inside Synchronized block with msg id :CCA40B60B9A911E1BF115F9190ABA14C>
    <Jun 19, 2012 10:58:01 AM EST> <Warning> <oracle.soa.mediator.monitor> <BEA-000000> <Venkat:Inside Synchronized block with msg id :CCA40B60B9A911E1BF115F9190ABA14C>
    <Jun 19, 2012 10:58:01 AM EST> <Error> <oracle.soa.mediator.common.listener> <BEA-000000> <Enququeing to Error hospital successful...>
    <Jun 19, 2012 10:58:05 AM EST> <Error> <oracle.soa.mediator.common.error.recovery> <BEA-000000> <Error while loading "test.EmailFaultHandler" java class specified for action "ora-java".>
    <Jun 19, 2012 10:58:05 AM EST> <Error> <oracle.soa.mediator.common.error.recovery> <BEA-000000> <Failed to recover the mediator fault.
    java.lang.ClassNotFoundException: test.EmailFaultHandler
    at weblogic.utils.classloaders.GenericClassLoader.findLocalClass(GenericClassLoader.java:297)
    at weblogic.utils.classloaders.GenericClassLoader.findClass(GenericClassLoader.java:270)
    at weblogic.utils.classloaders.ChangeAwareClassLoader.findClass(ChangeAwareClassLoader.java:64)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
    at weblogic.utils.classloaders.GenericClassLoader.loadClass(GenericClassLoader.java:179)
    at weblogic.utils.classloaders.ChangeAwareClassLoader.loadClass(ChangeAwareClassLoader.java:43)
    at oracle.tip.mediator.common.error.recovery.CustomJavaHandler.execute(CustomJavaHandler.java:69)
    at oracle.tip.mediator.common.error.recovery.MediatorRecoverFault.recover(MediatorRecoverFault.java:73)
    at oracle.tip.mediator.serviceEngine.MediatorFacadeService.recoverFault(MediatorFacadeService.java:988)
    at oracle.integration.platform.faultpolicy.RecoverFault.recoverAndChain(RecoverFault.java:161)
    at oracle.integration.platform.faultpolicy.RecoverFault.resolveAndRecover(RecoverFault.java:124)
    at oracle.integration.platform.faultpolicy.FaultRecoveryManagerImpl.resolveAndRecover(FaultRecoveryManagerImpl.java:123)
    at oracle.tip.mediator.common.error.recovery.MediatorRecoveryHandler.recover(MediatorRecoveryHandler.java:116)
    at oracle.tip.mediator.common.error.ErrorDBWorker.handleMessage(ErrorDBWorker.java:37)
    Thanks

  • Fault Handling in Mediator

    Hi,
    We have a DBAdpater to retrieve the data and a mediator to invoke the DBAdapter. In cases like No Records we want to create a soap fault. So we implemented Mediator Java callout and overriden postRouting() to read the response message and create a soapfault.
    [ we referred to blog http://technology.amis.nl/blog/6669/soa-suite-11g-introducing-mediator-java-callouts-for-debug-audit-and]
    but when we tried creating SOAPFault and add it to the response message, while execution , the response message is being parsed and seeing the fault it is throwing the exception below:
    java.lang.Exception: oracle.sysman.emSDK.webservices.wsdlapi.SoapTestException:
    This is a fault.
    at oracle.sysman.emas.model.wsmgt.WSTestModel.invokeOperation(WSTestMode
    l.java:575)
    at oracle.sysman.emas.view.wsmgt.WSView.invokeOperation(WSView.java:381)
    at oracle.sysman.emas.view.wsmgt.WSView.invokeOperation(WSView.java:298)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
    java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
    sorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at com.sun.el.parser.AstValue.invoke(AstValue.java:157)
    at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:283)
    at org.apache.myfaces.trinidadinternal.taglib.util.MethodExpressionMetho
    dBinding.invoke(MethodExpressionMethodBinding.java:53)
    at org.apache.myfaces.trinidad.component.UIXComponentBase.broadcastToMet
    hodBinding(UIXComponentBase.java:1259)
    at org.apache.myfaces.trinidad.component.UIXCommand.broadcast(UIXCommand
    .java:183)
    I found that if exception from mediator is not handled, then the exception is throw as system fault as shown above.
    So we tried implementing external fault handling - by creating fault-policies.xml and fault-bindings.xml and a java callout.
    fault-bindings.xml
    <?xml version=”1.0" encoding=”UTF-8"?>
    <faultPolicyBindings version=”2.0.1" xmlns=”http://schemas.oracle.com/bpel/faultpolicy”>
    <composite faultPolicy=”SOM_ServiceFaults”/>
    </faultPolicyBindings>
    fault-policies.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <faultPolicies>
    <faultPolicy version="2.0.1" id="SOM_ServiceFaults">
    <Conditions>
    <faultName xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" name="env:Fault"> <!-- Qname of Business/SOAP fault -->
    <condition>
         <action ref="ora-custom"/>
    </condition>
    </faultName>
    <faultName xmlns:medns="http://schemas.oracle.com/mediator/faults" name="medns:mediatorFault">
    <condition>
    <action ref="ora-custom"/>
    </condition>
    </faultName>
    </Conditions>
    <Actions>
    <Action id=”ora-terminate”>
              <abort/>
         </Action>
    <Action id="ora-custom">
    <javaAction className="gm.som.FaultPolicyJavaAction" defaultAction="ora-terminate">
    <returnValue value="ora-terminate" ref="ora-terminate"/>
    </javaAction>
    </Action>
    </Actions>
    </faultPolicy>
    </faultPolicies>
    But still getting the error.Appreciate any help on this.
    Thanks in Advance,
    Subhashini

    Not exactly but doing it the other way around by copying the fault msg to output variable and check flag for the response in my initial requester process then throw fault accordingly.. didnt have much time as it was holding back my other deliverables
    Thanks a lot for your time

  • 11g: Help regarding fault handling framework

    I am trying to implement a POC demonstrating the fault handling framework using fault policies. I am trying to handle remote and business faults. These faults are being thrown explicitly in the code. But I dont see the framework coming into picture. Here are the fault policies and fault bindings files
    The POC does the following
    1. If input is R, throws a remote fault.
    2. If input is B1, throws a business fault. There is a catch defined for this. But as we also have a policy for this error, we expect the policy overrides the catch
    3. If input is B2, throws a business fault. There is no catch defined for this. We expect the policy to handle this.
    4. If any other input, we return a string.
    <?xml version="1.0" encoding="UTF-8"?>
    <faultPolicies xmlns="http://schemas.oracle.com/bpel/faultpolicy"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <faultPolicy version="2.0.1" id="ComponentFaults"
    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-human-intervention"/>
    </condition>
    </faultName>
    <faultName xmlns:ns1="NS_B1"
    name="ns1:LP_B1">
    <condition>
    <action ref="ora-human-intervention"/>
    </condition>
    </faultName>
    <faultName xmlns:ns2="NS_B2"
    name="ns2:LP_B2">
    <condition>
    <action ref="ora-human-intervention"/>
    </condition>
    </faultName>
    </Conditions>
    <Actions>
    <Action id="ora-human-intervention">
    <humanIntervention/>
    </Action>
    </Actions>
    </faultPolicy>
    </faultPolicies>
    Here is the fault-bindings.xml file
    <?xml version="1.0" encoding="UTF-8"?>
    <faultPolicyBindings version="2.0.1"
    xmlns="http://schemas.oracle.com/bpel/faultpolicy"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <!-- Below listed component names use policy ComponentFaults -->
    <component faultPolicy="ComponentFaults">
    <name>BPEL</name>
    </component>
    </faultPolicyBindings>

    I created another bpel in the same composite that calls the original bpel. So now, those errros are supposed to travel to calling bpel.
    Fault policies are coming into effect now. So, one part of the problem is solved, that atleast syntax and all is correct, and the fwk does work (!) but another one has opened - why is the fault not getting handled by the fwk if there is a single bpel that is throwing and not catching those faults.
    Also, even in this new avatar, fault b1 is getting handled by the catch in BPEL process, while the fault policies are supposed to override any catches in bpel code.
    What I was attempting was, throwing the fault in a bpel process and expecting the fault handling fwk to handle it.
    It turns out, the framework is not capable of doing this, its only capable of handling faults coming after an invoke activity.
    Consulted Oracle Support on this. Their response
    The behavior within the single composite you are seeing is correct and is by design. As the documentation states:
    http://download.oracle.com/docs/cd/E12839_01/integration.1111/e10224/bp_faults.htm#BABIGGIB
    If a fault occurs during runtime in an invoke activity in a process, the framework catches the fault and performs a user-specified action defined in a fault policy file associated with the activity.
    The fault management framework catches all faults (business and runtime) for an invoke activity.
    So the above means that unless the fault is thrown in response to an invoke activity the Fault Policy set will not be triggered, which has been confirmed through the test you have uploaded. Please let me know if you have any questions or concerns.

  • Fault handling framework

    Hi all,
    I'm currently using the fault handling framework introduced with the 10.1.3 version of BPEL. I've done some testing and it works fine. When I get an error from invoking one of my partnerlinks the framework handles the error - cool :-).
    Now to the problem.
    I would like to throw an error from within a process which I would like the framework to handle (I don't want to call a partnerlink which I know fails). I've tried using the throw activity but it doesn't work. According to the doc. the framework only handles errors comming from invoking a partnerlink (the throw activity shouldn't work but I just had to try). My question is, is it impossible what I'm trying to do?
    Best regards
    Stig

    Well, we have a bpel process here with some human tasks in which they can alter some variables and some invokes which may return variable values that are incorrect (because they are wrongfully altered in the source database) which result in a selection faillure during assign or transformation.
    So it would be nice if we could catch those and manually alter the variables and continue the process.
    We tried this but reading things here, it seems impossible?
    <?xml version="1.0" encoding="UTF-8" ?>
    - <faultPolicy version="2.0.1" id="DefaultPolicy" 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">
    - <!-- This section describes fault conditions. Build more conditions with faultName, test and action
    -->
    - <Conditions>
    - <!-- Fault if wsdlRuntimeLocation is not reachable
    -->
    - <faultName xmlns:bpelx="http://schemas.oracle.com/bpel/extension" name="bpelx:remoteFault">
    - <condition>
    <action ref="ora-retry" />
    </condition>
    </faultName>
    - <!-- Fault if location port is not reachable
    -->
    - <faultName xmlns:bpelx="http://schemas.oracle.com/bpel/extension" name="bpelx:bindingFault">
    - <condition>
    <action ref="ora-retry" />
    </condition>
    </faultName>
    - *<faultName xmlns:bpws="http://schemas.xmlsoap.org/ws/2003/03/business-process/" name="bpws:selectionFailure">*
    - <condition>
    *<action ref="ora-human-intervention" />*
    *</condition>*
    *</faultName>*
    </Conditions>
    - <Actions>
    - <!-- This action will attempt 8 retries at increasing intervals of 2, 4, 8, 16, 32, 64, 128, and 256 seconds.
    -->
    - <Action id="ora-retry">
    - <retry>
    <retryCount>2</retryCount>
    <retryInterval>2</retryInterval>
    <retryFailureAction ref="ora-human-intervention" />
    <exponentialBackoff />
    </retry>
    </Action>
    - <!-- This is an action will cause a replay scope fault
    -->
    - <Action id="ora-replay-scope">
    <replayScope />
    </Action>
    - <!-- This is an action will bubble up the fault
    -->
    - <Action id="ora-rethrow-fault">
    <rethrowFault />
    </Action>
    - <!-- This is an action will mark the work item to be "pending recovery from console"
    -->
    - <Action id="ora-human-intervention">
    <humanIntervention />
    </Action>
    - <!-- This action will cause the instance to terminate
    -->
    - <Action id="ora-terminate">
    <abort />
    </Action>
    </Actions>
    </faultPolicy>

  • Fault handler BPEL PM Weblogic issue ?

    Products:
    SOA for WebLogic Server (10.1.3.4) , p7490612_101340_GENERIC
    Jdeveloper 10.1.3.4
    Windows XP sp2
    1.- I was install SOA for WSL 9.2 and Jdev succesfull, now i start with any test.
    2.- I test Fault handling framework , then i create the simple xml files: fault-bindings.xml and fault-policies\mybpiPolicy.xml
    ----- Abstract files
    &lt;faultName xmlns:bpelx="http://schemas.oracle.com/bpel/extension" name="bpelx:bindingFault"&gt;
    &lt;condition&gt;
    &lt;action ref="ora-retry"/&gt;
    &lt;/condition&gt;
    &lt;/faultName&gt;
    &lt;Action id="ora-retry"&gt;
    &lt;retry&gt;
    &lt;retryCount&gt;2&lt;/retryCount&gt;
    &lt;retryInterval&gt;6&lt;/retryInterval&gt;     
    &lt;exponentialBackoff/&gt;
    &lt;retryFailureAction ref="ora-human-intervention"/&gt;           
    &lt;/retry&gt;
    &lt;/Action&gt;
    3.- Then i create an simple async BPEL case for fault handling with a DB BPEL Adapter using a wrong Jdbc string for instance Bad SID database (deliberately , The correct is XE not XE1).
    Then i test it, and with audit trail in BPEL Console, i can view the 2 retries that i indicate in the descriptor, but after [FAULT RECOVERY|http://forums.oracle.com/forums/] Marked Invoke activity as "pending manual recovery, it have a exception.
    * In normal case with OC4J, after last line, the process is ready for recovery in a manual step.
    * Well i think so maybe i missing another configuration or parameter because it is deploy in WebLogic, i do not. next i put the text that in audit trail appers.
    Please help, regards.
    ----- my Messages in audit trail.
    --2008/12/30 21:28:29-- [FAULT RECOVERY|http://forums.oracle.com/forums/] Marked Invoke activity as "pending manual recovery".
    --2008/12/30 21:28:30-- "BPELFault" has not been caught by a catch block.
    --2008/12/30 21:28:30-- There is a system exception while performing the BPEL instance, the reason is "faultName: {{[http://schemas.oracle.com/bpel/extension]}remoteFault} messageType: {{[http://schemas.oracle.com/bpel/extension]}RuntimeFaultMessage} parts: {{code=0 ,summary=file:/D:/oracle/soasuitebasic/bpel/domains/default/tmp/.bpel_Test1BPEL_1.0_7f0af90c7bf1874b5077831987befd2d.tmp/do.wsdl [ do_ptt::doSelect(doSelect_inparameters,DomainCollection) |http://forums.oracle.com/forums/] - WSIF JCA Execute of operation 'doSelect' failed due to: Could not create/access the TopLink Session. This session is used to connect to the datastore. [Caused by: Listener refused the connection with the following error: ORA-12505, TNS:listener does not currently know of SID given in connect descriptor The Connection descriptor used by the client was: localhost:1521:XE1 |http://forums.oracle.com/forums/] ; nested exception is: ORABPEL-11622 Could not create/access the TopLink Session. This session is used to connect to the datastore. [Caused by: Listener refused the connection with the following error: ORA-12505, TNS:listener does not currently know of SID given in connect descriptor The Connection descriptor used by the client was: localhost:1521:XE1 |http://forums.oracle.com/forums/] See root exception for the specific exception. You may need to configure the connection settings in the deployment descriptor (i.e. weblogic-ra.xml) and restart the server. Caused by Exception [TOPLINK-4002|http://forums.oracle.com/forums/] (Oracle TopLink - 10g Release 3 (10.1.3.4.0) (Build 080602)): oracle.toplink.exceptions.DatabaseException Internal Exception: java.sql.SQLException: Listener refused the connection with the following error: ORA-12505, TNS:listener does not currently know of SID given in connect descriptor The Connection descriptor used by the client was: localhost:1521:XE1 Error Code: 0. ,detail= Internal Exception: java.sql.SQLException: Listener refused the connection with the following error: ORA-12505, TNS:listener does not currently know of SID given in connect descriptor The Connection descriptor used by the client was: localhost:1521:XE1 Error Code: 0}} ". Please check the error log file for more infromation. A failure is detected in use of fault policy used to recover the activity. Please audit the instance manually or let engine recovery to attempt recovery. Best practice suggests to handle exceptions in fault policy or in the fault handlers in your bpel process. less
    com.oracle.bpel.client.BPELFault: faultName: {{[http://schemas.oracle.com/bpel/extension]}remoteFault}
    messageType: {{[http://schemas.oracle.com/bpel/extension]}RuntimeFaultMessage}
    parts: {{code=0
    ,summary=file:/D:/oracle/soasuitebasic/bpel/domains/default/tmp/.bpel_Test1BPEL_1.0_7f0af90c7bf1874b5077831987befd2d.tmp/do.wsdl [ do_ptt::doSelect(doSelect_inparameters,DomainCollection) |http://forums.oracle.com/forums/] - WSIF JCA Execute of operation 'doSelect' failed due to: Could not create/access the TopLink Session.
    This session is used to connect to the datastore. [Caused by: Listener refused the connection with the following error:
    ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
    The Connection descriptor used by the client was:
    localhost:1521:XE1
    ; nested exception is:
    ORABPEL-11622
    Could not create/access the TopLink Session.
    This session is used to connect to the datastore. [Caused by: Listener refused the connection with the following error:
    ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
    The Connection descriptor used by the client was:
    localhost:1521:XE1
    See root exception for the specific exception. You may need to configure the connection settings in the deployment descriptor (i.e. weblogic-ra.xml) and restart the server. Caused by Exception [TOPLINK-4002|http://forums.oracle.com/forums/] (Oracle TopLink - 10g Release 3 (10.1.3.4.0) (Build 080602)): oracle.toplink.exceptions.DatabaseException
    Internal Exception: java.sql.SQLException: Listener refused the connection with the following error:
    ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
    The Connection descriptor used by the client was:
    localhost:1521:XE1
    Error Code: 0.
    ,detail=
    Internal Exception: java.sql.SQLException: Listener refused the connection with the following error:
    ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
    The Connection descriptor used by the client was:
    localhost:1521:XE1
    Error Code: 0
    at com.collaxa.cube.ws.WSIFInvocationHandler.invoke(WSIFInvocationHandler.java:623)
    at com.collaxa.cube.ws.WSInvocationManager.invoke2(WSInvocationManager.java:437)
    at com.collaxa.cube.ws.WSInvocationManager.invoke(WSInvocationManager.java:251)
    at com.collaxa.cube.engine.ext.wmp.BPELInvokeWMP.__invoke(BPELInvokeWMP.java:826)
    at com.collaxa.cube.engine.ext.wmp.BPELInvokeWMP.__executeStatements(BPELInvokeWMP.java:402)
    at com.collaxa.cube.engine.ext.wmp.BPELInvokeWMP.expire(BPELInvokeWMP.java:151)
    at com.collaxa.cube.engine.CubeEngine.expireActivity(CubeEngine.java:4161)
    at com.collaxa.cube.engine.CubeEngine.expireActivity(CubeEngine.java:2073)
    at com.collaxa.cube.ejb.impl.ActivityManagerBean.expireActivity(ActivityManagerBean.java:174)
    at com.collaxa.cube.ejb.impl.ActivityManagerBean.expireActivity(ActivityManagerBean.java:145)
    at com.collaxa.cube.ejb.impl.ActivityManagerBean_lcloe8_ELOImpl.expireActivity(ActivityManagerBean_lcloe8_ELOImpl.java:542)
    at com.collaxa.cube.engine.dispatch.message.instance.ExpirationMessageHandler.handle(ExpirationMessageHandler.java:43)
    at com.collaxa.cube.engine.dispatch.DispatchHelper.handleMessage(DispatchHelper.java:140)
    at com.collaxa.cube.engine.dispatch.BaseDispatchTask.run(BaseDispatchTask.java:58)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
    at java.lang.Thread.run(Thread.java:595)
    -----

    The fault management framework catches all faults (business and runtime) for an invoke activity only.
    For all other activities use the BPEL fault handler.

  • BPEL PM 10.1.3.3.0 : Exception Framework not capturing Business Faults.

    Hi Gurus,
    I am facing a problem with exception framework of BPEL PM 10.1.3.3.0 whereby it's not capturing Business Faults thrown using throw activity.
    The following is exactly what I am using:
    1) Fault Policy File:
    <?xml version="1.0" encoding="UTF-8"?>
    <faultPolicy version="2.0.1" id="TestPolicy" 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:coeFaults="http://test.myco.com/faults" name="coeFaults:testFault">
                   <condition>
                        <action ref="ora-human-intervention"/>
                   </condition>
              </faultName>
         </Conditions>
         <Actions>
              <Action id="ora-retry">
                   <retry>
                        <retryCount>8</retryCount>
                        <retryInterval>2</retryInterval>
                        <exponentialBackoff/>
                        <retryFailureAction ref="ora-rethrow-fault"/>
                   </retry>
              </Action>
              <!-- This is an action will cause a replay scope fault-->
              <Action id="ora-replay-scope">
                   <replayScope/>
              </Action>
              <!-- This is an action will bubble up the fault-->
              <Action id="ora-rethrow-fault">
                   <rethrowFault/>
              </Action>
              <!-- This is an action will mark the work item to be "pending recovery from console"-->
              <Action id="ora-human-intervention">
                   <humanIntervention/>
              </Action>
              <!-- This action will cause the instance to terminate-->
              <Action id="ora-terminate">
                   <abort/>
              </Action>
         </Actions>
    </faultPolicy>
    2) Faultpolicy Binding which I specify in bpel.xml just after partnerLinkBindings completes :
         <faultPolicyBindings>
              <process faultPolicy="TestPolicy"/>
         </faultPolicyBindings>
    3) Throw activity in my bpel process is as follows:
    <throw name="TestFault" faultName="ns1:testFault"
    faultVariable="FaultVar"/>
    Where ns1 refers to http://test.myco.com/faults
    And FaultVar is of type FaultMessage which is defined as follows:
         <message name="FaultMessage">
              <part name="payload" element="client:FaultEle"/>
         </message>
    And FaultEle is of complexType as follows:
    <complexType name="FaultType">
    <sequence>
    <element name="code" type="string"/>
    <element name="summary" type="string"/>
    <element name="detail" type="string"/>
    </sequence>
    </complexType>
    Gurus, please let me know what wrong I am doing here.
    Or is this a known issue in 10.1.3.3.0 ? If so, please provide me the workaround or fix.
    Thanks-
    Ashish.

    The fault management framework catches all faults (business and runtime) for an invoke activity only.
    For all other activities use the BPEL fault handler.

  • System Fault handler

    Hi,
    I am trying to catch the remoteFault and used the catch branch and used Namespace URI as http://schemas.oracle.com/bpel/extension Local Part: remoteFault and fault Variable: faultVar.
    But when assingning the faultVar is not showing its elements code, summary and details. It is weird that it is showing in some BPEL process and not showing in some BPEL process. Is something need to take care while using system fault?
    Regards,
    Sreejit

    Hi Sreejit,
    There is often a need to use an activity that does nothing. An example is when a fault must be caught and suppressed. In this case, you can use the empty activity to insert a no-op instruction into a business process. The syntax to use an empty activity is as follows:
    <empty standard-attributes>
    standard-elements
    </empty>
    If no catch or catchAll is selected, the fault is not caught by the current scope and is rethrown to the immediately enclosing scope. If the fault occurs in (or is rethrown to) the global process scope, and there is no matching fault handler for the fault at the global level, the process terminates abnormally. This is as though a terminate activity (described in "Using the Terminate Activity to Stop a Business Process Instance") had been performed.
    Consider the following example:
    <faulthandlers>
    <catch faultName="x:foo">
    <empty/>
    </catch>
    <catch faultVariable="bar">
    <empty/>
    </catch>
    <catch faultName="x:foo" faultVariable="bar">
    <empty/>
    </catch>
    <catchAll>
    <empty/>
    </catchAll>
    </faulthandlers>
    Assume that a fault named x:foo is thrown. The first catch is selected if the fault carries no fault data. If there is fault data associated with the fault, the third catch is selected if the type of the fault's data matches the type of variable bar. Otherwise, the default catchAll handler is selected. Finally, a fault with a fault variable whose type matches the type of bar and whose name is not x:foo is processed by the second catch. All other faults are processed by the default catchAll handler.
    Invoking a compensation handler that has not been installed is equivalent to using the empty activity (it is a no-op). This ensures that fault handlers do not have to rely on state to determine which nested scopes have completed successfully. The semantics of a process in which an installed compensation handler is invoked more than once are undefined.If an invoke activity has a compensation handler defined inline, then the name of the activity is the name of the scope to be used in the compensate activity. The syntax is as follows:
    <compensate scope="ncname"? standard-attributes>
    standard-elements
    </compensate>
    Hope this is much clearer and answers your question!
    Cheers
    Anirudh Pucha

  • Fault Handler do not catch selectionFailure

    Following is my fault handler policy defintions:
    <Conditions>
    <faultName name="bpelx:remoteFault">
    <condition>
    <test>$fault.code/code="WSDLReadingError"</test>
    <action ref="ora-rethrow-fault"/>
    </condition>
    <condition>
    <action ref="ora-retry"/>
    </condition>
    </faultName>
    <faultName name="bpelx:bindingFault">
    <condition>
    <action ref="ora-human-intervention"/>
    </condition>
    </faultName>
    <faultName name="bpelx:runtimeFault">
    <condition>
    <action ref="ora-rethrow-fault"/>
    </condition>
    </faultName>
    *<faultName xmlns:bpws="http://schemas.xmlsoap.org/ws/2003/03/business-process" name="bpws:selectionFailure">*
    *<condition>*
    *<action ref="ora-human-intervention"/>*
    *</condition>*
    *</faultName>*
    </Conditions>
    <Actions>
    <Action id="ora-human-intervention">
    <humanIntervention/>
    </Action>
    <Action id="ora-rethrow-fault">
    <rethrowFault/>
    </Action>
    <Action id="ora-retry">
    <retry>
    <retryCount>3</retryCount>
    <retryInterval>120</retryInterval>
    <exponentialBackoff/>
    </retry>
    </Action>
    <Action id="ora-terminate">
    <abort/>
    </Action>
    </Actions>
    While the policy definitions are working fine for runtime faults, it is not working for selectionFailure fault. Unless I add catch block in the bpel definition, the instances are faulted. Does fault handler ignores standard faults ?
    Please help. Thanks in advance.

    Yes, catch and catchAll branch can catch all the faults.
    fault policies will be executed only when the invoke activity fails.
    if both fault policies and catch and catchall brnaches are there,
    a. if invoke activity faults, then the fault policies will be executed.
    b. any other activity fails, then the catch or catchAll branch will be executed.
    Please look into these posts below...
    http://docs.oracle.com/cd/B31017_01/core.1013/b28764/bpel010.htm
    http://jianmingli.com/wp/?p=1740
    http://beatechnologies.wordpress.com/tag/fault-handling-and-management-in-oracle-soa-suite-11g/
    Hope this helps
    N

  • How to register multiple stages in fault handler?

    Hi,
    I am trying to create multiple fault handlers for multiple CQL processors.
    I understand how to create one handler but when I am trying to add another osgi service to rgister anothet fault handler I get strange behaviot in theeclipse. The EPN disappears.Any advice?
    Another question - how do I register multiple stages to the same handler?

    Hi,
    I am trying to create multiple fault handlers for multiple CQL processors.
    I understand how to create one handler but when I am trying to add another osgi service to rgister anothet fault handler I get strange behaviot in theeclipse. The EPN disappears.Any advice?
    Another question - how do I register multiple stages to the same handler?

Maybe you are looking for