Fault Policy Resolution in Fault Framework

Hello Gurus,
A simple doubt regarding fault-policy file resolution:
There are two places where you can specify a policy file:
1) In composite.xml file. E.g.
<property name="oracle.composite.faultPolicyFile">oramds://apps/faultpolicyfiles/fault-policies.xml</property>
2) In fault-bindings.xml file. E.g.
<faultPolicyBindings ...>
     <composite faultPolicy="FusionMidFaults"/>
</faultPolicyBindings>
When both are specified at same level, let's say at composite level as above, which one will take precedence over the other?
Thanks-
Ashish

Hi,
I don't know the answer but in 11g they should be in MDS. Second option was used in 10g. I guess it's still there just for backwards compatibility.
Regards,
Milan

Similar Messages

  • Fault Policy for any fault

    Hi,
    Is there any way I can write a fault policy in such a way that for any kind of fault, go to human intervention ?
    I am excepting something like * in place of fault names.
    -Sridhar

    Hi,
    If you are on soa suite 10.1.3.3 or higher you can use the new fault framework. In the directory [oracle_home]/bpel/domains/[name]/config you have a fault-bindings.xml file. Change it contents to:
    <?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">
            <process faultPolicy="MyPolicy"/>
            <partnerLink faultPolicy="MyPolicy"/>
    </faultPolicyBindings>Then create a file named [oracle_home]/bpel/domains/[name]/config/fault-policies/MyPolicy.xml and with contents:
    <?xml version="1.0" encoding="UTF-8"?>
    <faultPolicy    version="2.0.1"
                    id="MyPolicy"
                    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:bpelx="http://schemas.oracle.com/bpel/extension" name="bpelx:bindingFault">
          <condition>
            <action ref="ora-human-intervention"/>
          </condition>
        </faultName>
      </Conditions>
      <Actions>
        <Action id="ora-retry">
           <retry>
              <retryCount>5</retryCount>
              <retryInterval>4</retryInterval>
              <exponentialBackoff />
              <retryFailureAction ref="ora-human-intervention"/>
           </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>Then restart your bpel oc4j container and all remote and binding faults will result in human intervention.
    Kind Regards,
    Andre

  • Fault Policy - Handle Multiple Faults

    Hi,
    I have a requirement that i need to call a webservice Y from BPEL Process Z
    Both are on different networks.
    Y can return two types of fault
    1. Fault Xyz (Business Fault)
    2. Fault Pqr (Remote Fault)
    I need to create a fault policy so that
    when I get Xyz Fault it retries an an interval of 30 mins for 100 times.
    when I get Pqr Fault it retries an an interval of 5 mins for 100 times.
    I have implemented it, but it works bit differently that what i expect.
    The fault which comes first, the retry interval is taken of that fault.
    Below is my policy file:
    <faultPolicies xmlns="http://schemas.oracle.com/bpel/faultpolicy">
    <faultPolicy version="2.0.1" id="FPolicy123"
                   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:ff="http://xmlns.oracle.com/testApplication/FP_1/B" name="ff:Xx11iFault">
              <condition>
                   <action ref="ora-retry"/>
    </condition>
         </faultName>
    <faultName xmlns:bpelx="http://schemas.oracle.com/bpel/extension" name="bpelx:remoteFault">
    <condition>
                   <action ref="ora-retry_rf"/>
    </condition>
         </faultName>
    </Conditions>
    <Actions>
         <Action id="ora-retry">
              <retry>
                   <retryCount>10</retryCount>
                   <retryInterval>30</retryInterval>
    <retryFailureAction ref="ora-terminate"/>
              </retry>
         </Action>
         <Action id="ora-retry_rf">
              <retry>
                   <retryCount>3</retryCount>
                   <retryInterval>15</retryInterval>
    <retryFailureAction ref="ora-terminate"/>
              </retry>
         </Action>
    <Action id="ora-terminate">
    <abort/>
    </Action>
    </Actions>
    </faultPolicy>
    </faultPolicies>
    Please suggest a solution on this.
    Thanks,
    Rosh

    What is the significance of retrying on business fault / binding fault ?
    According to the Oracle Documentation, there is no point in retrying.
    http://docs.oracle.com/cd/E12839_01/integration.1111/e10224/bp_faults.htm
    Refer *12.3.2.1 bindingFault* section, please
    Thanks,
    Vijay

  • What is the "catchAll for all faults" equivalent in fault-policy.xml

    Hi
    This is regarding the catchAll equivalent tag in fault-policy.xml file
    fault-policy.xml has two sections - Conditions & Actions
    In Conditions, you'll define several <faultName name="XXX"> and corresponding <condition>, <test> & <action ref="">.
    But what I want is, how do you define a condition for all Fault types (something like a catchAll activity)?
    Lets say i need a single condition for all faults, so i want to say
    <conditions>
    <faultName name=*"ALL_FAULT_TYPES"*>
    <condition>
    <!--<test> -- i dont give any test condition here, so that it is applicable for all conditions for this fault type -->
    <action ref="ora-human-intervention">
    </condition>
    </faultName>
    </conditions>
    I've searched documentation, blogs but could not find any.
    Only thing i could find is, if we dont give any <test> tag, that means it is like a catchAll for that particular faultName. I need a similar one, but for all faults.
    Appreciate your response.
    Regards
    RaviKiran.
    Edited by: kiransaravi on Oct 16, 2012 12:39 AM
    Edited by: kiransaravi on Oct 16, 2012 12:40 AM

    Hi Ronald Van,
    what do you mean by this statement .
    Mind: the fault-policy framework catches faults in invocations of (external) services from BPEL, Mediator, etc. Internal BPEL faults such as errored assign activities are >not caught.Is it like faults generated while invoking only will go to faultpolicies ?
    I want to generate a email in case of faults to notify the customer. faultpolicies is working good for remote and binding fault and i am generating mail using java. but in case of selection failure it is not referring to fault policies. So Is generating a email from catchall block is the only solution for this or is there any other way.The problem with catch all block is that the instance state will be completed and my monitoring is affected. I want to generate a email and the process should be in running state . Is there any way?
    Please suggest .
    Thanks in Advance
    regards,
    Raju

  • "Message Rejection Handler" for the file/ftp adapter using fault policy

    Hi guys,
    We are trying to implement "Message Rejection Handler" for the file/ftp adapter using following fault policy configuration.
    Fault Policy:
    `````````````
    <?xml version='1.0' encoding='UTF-8'?>
    <faultPolicies xmlns="http://schemas.oracle.com/bpel/faultpolicy">
    <faultPolicy version="2.0.1" id="ProcessNameGenericPolicy"
    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>
    <faultName xmlns:bpelx="http://schemas.oracle.com/bpel/extension"
    name="bpelx:bindingFault">
    <condition>
    <action ref="ora-rethrow-fault"/>
    </condition>
    </faultName>
    </Conditions>
    <Actions>
    <Action id="ora-retry">
    <retry>
    <retryCount>3</retryCount>
    <retryInterval>1</retryInterval>
    <retryFailureAction ref="ora-rethrow-fault"/>
    </retry>
    </Action>
    <Action id="ora-rethrow-fault">
    <rethrowFault/>
    </Action>
    <Action id="ora-human-intervention">
    <humanIntervention/>
    </Action>
    <Action id="ora-terminate">
    <abort/>
    </Action>
    </Actions>
    </faultPolicy>
    <faultPolicy version="2.0.1" id="ProcessNameHumanInterventionPolicy"
    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:medns="http://schemas.oracle.com/mediator/faults"
    name="medns:mediatorFault">
    <condition>
    <test>contains($fault.mediatorErrorCode, "TYPE_TRANSIENT")</test>
    <action ref="ora-retry-with-intervention"/>
    </condition>
    </faultName>
    <faultName xmlns:bpelx="http://schemas.oracle.com/bpel/extension"
    name="bpelx:remoteFault">
    <condition>
    <action ref="ora-retry-with-intervention"/>
    </condition>
    </faultName>
    <faultName xmlns:bpelx="http://schemas.oracle.com/bpel/extension"
    name="bpelx:bindingFault">
    <condition>
    <action ref="ora-rethrow-fault"/>
    <!--<action ref="ora-retry-with-intervention"/>-->
    </condition>
    </faultName>
    </Conditions>
    <Actions>
    <Action id="ora-retry-with-intervention">
    <retry>
    <retryCount>3</retryCount>
    <retryInterval>1</retryInterval>
    <retryFailureAction ref="ora-human-intervention"/>
    </retry>
    </Action>
    <Action id="ora-retry">
    <retry>
    <retryCount>3</retryCount>
    <retryInterval>1</retryInterval>
    <retryFailureAction ref="ora-rethrow-fault"/>
    </retry>
    </Action>
    <Action id="ora-rethrow-fault">
    <rethrowFault/>
    </Action>
    <Action id="ora-human-intervention">
    <humanIntervention/>
    </Action>
    <Action id="ora-terminate">
    <abort/>
    </Action>
    </Actions>
    </faultPolicy>
    <faultPolicy version="2.0.1" id="RejectedMessages">
    <Conditions> <!-- All the fault conditions are defined here -->
    <faultName xmlns:rjm="http://schemas.oracle.com/sca/rejectedmessages" name="rjm:PartnerLinkName">
    <!-- local part of fault name should be the service name-->
    <condition>
    <action ref="writeToFile"/> <!-- action to be taken, refer to Actions section for the details of the action -->
    </condition>
    </faultName>
    </Conditions>
    <Actions> <!-- All the actions are defined here -->
    <Action id="writeToFile">
    <fileAction>
    <location>Server/Loc/path</location>
    <fileName>Rejected_AJBFile_%ID%_%TIMESTAMP%.xml</fileName>
    </fileAction>
    </Action>
    </Actions>
    </faultPolicy>
    </faultPolicies>
    Fault Binding:
    ``````````````
    <?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">
    <composite faultPolicy="ProcessNameGenericPolicy"/>
    <service faultPolicy="RejectedMessages">
    <name>PartnerLinkName</name>
    </service>
    <reference faultPolicy="RejectedMessages">
    <name>PartnerLinkName</name>
    </reference>
    </faultPolicyBindings>
    We have SyncFileRead partner link.
    The expectation is: when the message read by SyncFileRead partner link is rejected,
    that rejected message should come to particular directory in the server.
    Could you please help us fixing this.
    TIA.

    HI..
    Have a look at this blog :
    3) Error: HTTP_RESP_STATUS_CODE_NOT_OK 401 Unauthorized
    Description: The request requires user authentication
    Possible Tips:
    u2022 Check XIAPPLUSER is having this Role -SAP_XI_APPL_SERV_USER
    u2022 If the error is in XI Adapter, then your port entry should J2EE port 5<System no>
    u2022 If the error is in Adapter Engine
    u2013then have a look into SAP note- 821026, Delete the Adapter Engine cache in transaction SXI_CACHE Goto --> Cache.
    u2022 May be wrong password for user XIISUSER
    u2022 May be wrong password for user XIAFUSER
    u2013 for this Check the Exchange Profile and transaction SU01, try to reset the password -Restart the J2EE Engine to activate changes in the Exchange Profile After doing this, you can restart the message
    Http* Errors in XI
    Thanks,
    Pooja

  • Fault policy doesn't fire when asynchronous calls to BPEL  in soa11g

    Hi,
    I have created mainporcess and subprocess both are asynchronous process . exceptions thrown by subprocess are caught in mainprocess using call back operation and fault policy defined in fault-polacy/binding doesn't fire .
    if the subprocess is synchronous exceptions thrown by subprocess are caught in mainprocess and creating human-intervention job for Retry action as defined in fault-polacy/binding.
    Generally how we can handle custom Faults in A asynchronous calls to composites/BPEL processes?
    Thanks
    Ravi

    Hi ,Milan
    Thanks for your response . in subprocess callback port having two operations processResponse,callbackexception
    <wsdl:portType name="BPELProcessAsynchDetailsCallback">
              <wsdl:operation name="processResponse">
                   <wsdl:input message="client:BPELProcessAsynchDetailsResponseMessage"/>
              </wsdl:operation>
              <wsdl:operation name="callbackexception">
                   <wsdl:input message="client:FaultMessage"/>
              </wsdl:operation>
         </wsdl:portType>>
    Any exeptions thrown by suborocess is calling callbackexception operation and main process having pick activity for receiving both processResponse and callbackexception operations.
    subprocessdetails:
    <faultHandlers>
    <catch faultName="bpelx:remoteFault" faultVariable="FaultVar">
    <sequence>
    <assign name="Assign2">
    <copy>
    <from expression="'code'"/>
    <to variable="Invoke1_callbackexception_InputVariable"
    part="payload"
    query="/client:FaultElement/client:code"/>
    </copy>
    <copy>
    <from expression="'summary'"/>
    <to variable="Invoke1_callbackexception_InputVariable"
    part="payload"
    query="/client:FaultElement/client:summary"/>
    </copy>
    <copy>
    <from expression="'details'"/>
    <to variable="Invoke1_callbackexception_InputVariable"
    part="payload"
    query="/client:FaultElement/client:detail"/>
    </copy>
    </assign>
    <invoke name="Invoke1"
    inputVariable="Invoke1_callbackexception_InputVariable"
    partnerLink="bpelprocessasynchdetails_client"
    portType="client:BPELProcessAsynchDetailsCallback"
    operation="callbackexception"
    bpelx:invokeAsDetail="no"/>
    </sequence>
    </catch>
    </faultHandlers>
    <!--
    ORCHESTRATION LOGIC
    Set of activities coordinating the flow of messages across the
    services integrated within this business process
    -->
    <sequence name="main">
    <!-- Receive input from requestor. (Note: This maps to operation defined in BPELProcessAsynchDetails.wsdl) -->
    <receive name="receiveInput" partnerLink="bpelprocessasynchdetails_client" portType="client:BPELProcessAsynchDetails" operation="process" variable="inputVariable" createInstance="yes"/>
    <!--
    Asynchronous callback to the requester. (Note: the callback location and correlation id is transparently handled using WS-addressing.)
    -->
    <switch name="Switch1">
    <case condition="bpws:getVariableData('inputVariable','payload','/client:process/client:input')='test'">
    <bpelx:annotation>
    <bpelx:pattern>test</bpelx:pattern>
    <bpelx:general>
    <bpelx:property name="userLabel">test</bpelx:property>
    </bpelx:general>
    </bpelx:annotation>
    <sequence>
    <empty name="Empty1"/>
    <throw name="Throw1" faultName="bpelx:remoteFault"
    faultVariable="FaultVar"/>
    </sequence>
    </case>
    <otherwise>
    <assign name="Assign1">
    <copy>
    <from variable="inputVariable" part="payload"
    query="/client:process/client:input"/>
    <to variable="outputVariable" part="payload"
    query="/client:processResponse/client:result"/>
    </copy>
    </assign>
    </otherwise>
    </switch>
    <invoke name="Invoke2" bpelx:invokeAsDetail="no"
    inputVariable="outputVariable"
    partnerLink="bpelprocessasynchdetails_client"
    portType="client:BPELProcessAsynchDetailsCallback"
    operation="processResponse"/>
    </sequence>
    mainprocesdetails:
    <faultHandlers>
    <catch faultName="bpelx:remoteFault" faultVariable="Variable1"/>
    </faultHandlers>
    <!--
    ORCHESTRATION LOGIC
    Set of activities coordinating the flow of messages across the
    services integrated within this business process
    -->
    <sequence name="main">
    <!-- Receive input from requestor. (Note: This maps to operation defined in BPELProcess1ASynch.wsdl) -->
    <receive name="receiveInput" partnerLink="bpelprocess1asynch_client" portType="client:BPELProcess1ASynch" operation="process" variable="inputVariable" createInstance="yes"/>
    <!--
    Asynchronous callback to the requester. (Note: the callback location and correlation id is transparently handled using WS-addressing.)
    -->
    <assign name="Assign1">
    <copy>
    <from variable="inputVariable" part="payload"
    query="/client:process/client:input"/>
    <to variable="Invoke1_process_InputVariable" part="payload"
    query="/ns1:process/ns1:input"/>
    </copy>
    </assign>
    <invoke name="Invoke1" bpelx:invokeAsDetail="no"
    inputVariable="Invoke1_process_InputVariable"
    partnerLink="BPELProcessAsynchDetails.bpelprocessasynchdetails_client"
    portType="ns1:BPELProcessAsynchDetails" operation="process"/>
    <pick name="Pick1">
    <onMessage variable="OnMessage_processResponse_InputVariable"
    partnerLink="BPELProcessAsynchDetails.bpelprocessasynchdetails_client"
    portType="ns1:BPELProcessAsynchDetailsCallback"
    operation="processResponse">
    <sequence name="Sequence2">
    <assign name="Assign3">
    <copy>
    <from variable="OnMessage_processResponse_InputVariable"
    part="payload"
    query="/ns1:processResponse/ns1:result"/>
    <to variable="outputVariable" part="payload"
    query="/client:processResponse/client:result"/>
    </copy>
    </assign>
    </sequence>
    </onMessage>
    <onMessage variable="OnMessage_callbackexception_InputVariable"
    partnerLink="BPELProcessAsynchDetails.bpelprocessasynchdetails_client"
    portType="ns1:BPELProcessAsynchDetailsCallback"
    operation="callbackexception">
    <sequence name="Sequence1">
    <throw name="Throw1" faultName="bpelx:remoteFault"
    faultVariable="Variable1"/>
    </sequence>
    </onMessage>
    </pick>
    <invoke name="callbackClient" partnerLink="bpelprocess1asynch_client" portType="client:BPELProcess1ASynchCallback" operation="processResponse" inputVariable="outputVariable"/>
    </sequence>

  • EDN not available throws runtimeFault - Fault Policy Framework unable to catch it

    Hi Team,
    I have been working on some error handling scenarios for EDN .
    From my observation if BPEL is used to publish the event, BPEL Fault policy cannot catch EDN errors (e.g., EDN unavailable) but BPEL catch activity can catch it.
    Steps performed :
    1. Create a BPEL to publish the event to EDN.
    2.Create fault policy to catch  BPEL runtime fault .
    3.Go to weblogic console to change EDNdatasource target to get "EDN datasource not available error".
    4.Test your BPEL.
    My requirement is to retry such faults and invoke human intervention after retry failure using BPEL.
    Please let me know how to achieve this

    Follow the oracle documentation
    - http://docs.oracle.com/cd/E28271_01/dev.1111/e10224/bp_faults.htm#BABIGGIB
    *The fault management framework catches all faults (business and runtime) for an invoke activity.*
    Hope that helps.
    P.S. The fault management framework main purpose is to define a enterprise wide standard policies to handle the faults that will be applied to various/all composite. Hence your specific fault that is specific to a composite should not creep into to fault management framework as this is not the enterprise standard i.e., every composite may have to handle the invalid variable, based on where it occurred and for what variable it occurred.

  • Soa suite 12c fault policy invokeWS action enqueue action resolveAndrecover: error in fault resolution:java.lang.NullPointerException

    Hi,
    I'm trying to use the new fault actions in Oracle SOA Suite 12c (12.1.3.0) invokeWS and enqueue.
    I've done the following:
    fault-policies.xml
    <faultName name="custom:MyFault" xmlns:custom="http://xmlns.oracle.com/Application1/Dummy/WebServiceB"
               path="SOA\WSDLs\dummybpelprocess_client_ep.wsdl">
        <condition>
            <action ref="default-enqueue"/>
        </condition>
    </faultName>
    <Action id="default-ws">
        <invokeWS uri="http://host:7003/soa-infra/services/default/WebServiceHandler/webservicehandlerbpel_client_ep?WSDL|webservicehandlerbpel_client_ep|WebServiceHandlerBPEL_pt"/>
        <!-- format - <Absolute wsdl path>|service name|port name -->
    </Action>
    <Action id="default-enqueue">
        <!-- enqueue uri="eis/aq/aqjmsuserDataSource"/ -->
        <enqueue uri="jdbc:oracle:thin:@host:1521:orcl#user/userpassword#USERQUEUE" />
        <!-- QueueURI format  - jdbc:oracle:thin:@<host>:<port>:<sid>#<un>/<pw>#queue -->
    </Action>
    Webservice Handler (which is the webservice to be invoked by the faultpolicy) is constructed 1-way pattern, 1 operation, 1 port and using the following schema:
    <?xml version="1.0"?>
    <schema xmlns="http://www.w3.org/2001/XMLSchema"
            targetNamespace="http://xmlns.oracle.com/pcbpel/errorHandling"
            xmlns:tns="http://xmlns.oracle.com/pcbpel/errorHandling"
            elementFormDefault="qualified">
      <element name="RejectedMessage" type="tns:RejectedMessageType"/>
        <complexType name="RejectedMessageType">
            <sequence>
           <!-- base64 encoded strings" -->
              <element name="MessageHeader" type="string"/>
              <element name="MessagePayload" type="string"/>
              <element name="RejectionReason" type="string"/>
            </sequence>
          <attribute name="RejectionId" type="string"/>
        </complexType>
    </schema>
    The scenario is the following:
    Webservice A invokes WebService B
    Webservice B has defined a BusinessFault
    Webservice A has defined faultbindings using the faulpolicies from the previous snippet, for the reference of WebserviceB
    The BusinessFault is thrown by WebServiceB
    The fault policy is not able to neither enque or call the webservce to handle the businessexception
    A NullPointerException is shown in the logs
    The error is also present if enqueue os invokeWS are used in retryFailureAction of a retry action
    The error is only present for enqueue or invokeWS actions (I didn't try fileAction)
    Traditional actions (such as retry, humanintervention, temrinate) are working properly for businessfaults
    The error in logs is the following:
    Message
    resolveAndrecover: error in fault resolution:java.lang.NullPointerException
    Supplemental Detail
    at com.collaxa.cube.engine.fp.BPELRecoverFault.recoverFault(BPELRecoverFault.java:102)
    at oracle.fabric.CubeServiceEngine.recoverFault(CubeServiceEngine.java:2195)
    at oracle.integration.platform.faultpolicy.RecoverFault.recoverAndChain(RecoverFault.java:497)
    at oracle.integration.platform.faultpolicy.RecoverFault.resolveAndRecover(RecoverFault.java:337)
    at oracle.integration.platform.faultpolicy.FaultRecoveryManagerImpl.resolveAndRecover(FaultRecoveryManagerImpl.java:372)
      at oracle.soa.tracking.fabric.service.se.ServiceEngineFaultRecoveryServiceImpl.recoverFault(ServiceEngineFaultRecoveryServiceImpl.java:116)
      at oracle.soa.tracking.fabric.service.se.CubeServiceEngineAuditServiceImpl.recoverFault(CubeServiceEngineAuditServiceImpl.java:502)
    at com.collaxa.cube.engine.ext.common.FaultPolicyHandler.resolveAndRecover(FaultPolicyHandler.java:115)
    at com.collaxa.cube.engine.ext.common.InvokeHandler.handleException(InvokeHandler.java:715)
    at com.collaxa.cube.engine.ext.common.InvokeHandler.__callback(InvokeHandler.java:784)
    at com.collaxa.cube.engine.ext.common.InvokeHandler.handleNormalInvoke(InvokeHandler.java:657)
    at com.collaxa.cube.engine.ext.common.InvokeHandler.handle(InvokeHandler.java:143)
    at com.collaxa.cube.engine.ext.common.InvokeHandler.expire(InvokeHandler.java:1371)
    at com.collaxa.cube.engine.ext.bpel.common.wmp.BPELInvokeWMP.expire(BPELInvokeWMP.java:62)
    at com.collaxa.cube.engine.CubeEngine.expireActivity(CubeEngine.java:3358)
    at com.collaxa.cube.engine.CubeEngine._expireActivity(CubeEngine.java:1621)
    at com.collaxa.cube.engine.CubeEngine.expireActivity(CubeEngine.java:1557)
    at com.collaxa.cube.engine.CubeEngine.expireActivity(CubeEngine.java:1478)
    at com.collaxa.cube.ejb.impl.CubeActivityManagerBean.expireActivity(CubeActivityManagerBean.java:115)
    at com.collaxa.cube.ejb.impl.CubeActivityManagerBean.expireActivity(CubeActivityManagerBean.java:72)
    at com.collaxa.cube.ejb.impl.bpel.BPELActivityManagerBean_8dvvts_ICubeActivityManagerLocalBeanImpl.__WL_invoke(Unknown Source)
    at weblogic.ejb.container.internal.SessionLocalMethodInvoker.invoke(SessionLocalMethodInvoker.java:33)
      at com.collaxa.cube.ejb.impl.bpel.BPELActivityManagerBean_8dvvts_ICubeActivityManagerLocalBeanImpl.expireActivity(Unknown Source)
    at com.collaxa.cube.engine.dispatch.message.instance.ExpirationMessageHandler.handle(ExpirationMessageHandler.java:58)
    at com.collaxa.cube.engine.dispatch.DispatchHelper.handleMessage(DispatchHelper.java:153)
    at com.collaxa.cube.engine.dispatch.BaseDispatchTask.process(BaseDispatchTask.java:132)
    at com.collaxa.cube.engine.dispatch.BaseDispatchTask.run(BaseDispatchTask.java:90)
    at com.collaxa.cube.engine.dispatch.WMExecutor$W.run(WMExecutor.java:239)
    at weblogic.work.j2ee.J2EEWorkManager$WorkWithListener.run(J2EEWorkManager.java:184)
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:311)
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:263)
    I already made sure I had all the artifacts for the AQ queue:
    -database
    -table
    -queue
    -permissions
    Do you have the same problem?
    Are you able to use this new actions?
    Please advise
    Thanks in advance.
    P.S: Related documentation: http://docs.oracle.com/middleware/1213/soasuite/develop-soa/bpel-fault-handling.htm#CHDCIBDF

    Creating a SR to Oracle....

  • Fault Policy Management Framework in 10.1.3.3

    Hi,
    According to the Oracle Documentation, 10133technote. It says
    1) "A fault policy can be associated at the following levels:
    Partner link,Port type, Process & Domain."
    - Here can you through a light on "Process" n what "Process" means
    - Is it Refering to a BPEL Process or a "Process" in <faultPolicyBindings>
    - Can we have multiple "Process" for a <faultPolicyBindings>
    2) "The framework looks for fault policy bindings in the following files (in order of priority):
    - In the bpel.xml file at the process level
    - In the domain level file "
    - what entry should go in bpel.xml (are we really have to edit bpel.xml, created by JDEV)
    - what does it mean Process Level & Domain Level
    - where we can have a thin line between "Process Level" & "Domain Level"
    and How they differ-in while at Implemenation level
    Lastly what are the files that we need to modify/edit to make faultPolicy work.
    Thanx in adv

    Hello,
    See comments below:
    Hi user568921,
    Thanx for an immediate reply.
    Apologize for the long list of questions.
    1) Already we can have expentional Handling in BPEL,
    then why this
    Fault Management Framework be used on top of this
    [ irrespective of your BPEL Process has Expectional
    Handling or not (pl. correct me if im wrong)]
    more over i have to restart the server for each
    modification,
    this is not that recommended when it goes to
    Production.
    1a) if i have both BPEL Expectional Handling and
    Fault Management Framework applied to my Process
    which one preceedes.
    Fault Management Framework is used for generic fault
    handling on a deployed server.
    Since the change affects all deployed processes, we do
    not recommend changing policy or bindings in production.
    We are providing a client api in 10.1.3.4.0 to reload fault
    policy and binding files.
    Fault Management Framework precedes BPEL "catch". You can
    attempt retry actions, if this fails, invoke java code to
    email an administrator and mark the activity for human
    recovery or do a rethrowFault to pass to BPEL exception
    handling.
    2) This is what my bpel.xml files contains
    <?xml version = '1.0' encoding = 'UTF-8'?>
    <BPELSuitcase>
    <BPELProcess id="FaultPolicyManagement"
    src="FaultPolicyManagement.bpel">
    <partnerLinkBindings>
    <partnerLinkBinding name="client">
    <property
    name="wsdlLocation">FaultPolicyManagement.wsdl</prope
    ty>
    </partnerLinkBinding>
    <partnerLinkBinding name="sayHelloService">
    <property
    name="wsdlLocation">sayHelloService3.wsdl</property>
    </partnerLinkBinding>
    <partnerLinkBinding
    name="FaultPolicyManagementSync">
    <property
    name="wsdlLocation">url?wsdl</property>
    </partnerLinkBinding>
    artnerLinkBindings>
    </BPELProcess>
    <faultPolicyBindings>
    process faultPolicy="defaultPolicy"/>
         <process faultPolicy="anvvPolicy"/>
    <partnerLink
    k faultPolicy="DefaultPolicy"></partnerLink>
         <partnerLink faultPolicy="anvvPolicy">
         <name>FaultPolicyManagementSync</name>
    <portType
    tType
    xmlns:db="http://FaultPolicyManagementSync">db:FaultPo
    licyManagementSync_plt</portType>
         </partnerLink>
    </faultPolicyBindings>
    /BPELSuitcase>
    when i edit the bpel.xml with
    <faultPolicyBindings></faultPolicyBindings> and
    deploy it
    all the <faultPolicyBindings></faultPolicyBindings>
    is resetting back to original bpel.xml
    ( The Content between
    <faultPolicyBindings></faultPolicyBindings> is taken
    from fault-bindings.xml file )
    why it is so ?
    and my fault-bindings.xml is
    <?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"
    <process faultPolicy="DefaultPolicy"/>
    <process faultPolicy="anvvPolicy"/>
    <partnerLink
    k faultPolicy="DefaultPolicy"></partnerLink>
         <partnerLink faultPolicy="DefaultPolicy2">
         <name>FaultPolicyManagementSync</name>
    <portType
    tType
    xmlns:db="http://FaultPolicyManagementSync">db:FaultPo
    licyManagementSync_plt</portType>
         </partnerLink>
    </faultPolicyBindings>
    and DefaultPolicy.xml & DefaultPolicy2.xml is same as
    what is there in the server.
    Is the file contents correct in Implementation.
    Only one process tag is allowed.
    2a) if Fault Management Framework applied and NO
    <faultPolicyBindings></faultPolicyBindings> is added
    to bpel.xml
    and if it is left as it is (i.e., default bpel.xml
    generated by JDEV) then what is the policy it is
    applied.
    Once the system detects an invoke has faulted, it tries
    to check if there is a fault policy attached to this faulted
    partner link (or port type, or the process), if no policy
    binding is detected, it will flow bubble up the fault. By
    default there is no policy applied.
    3) Can you please let me know
    - how many ( fault-binding.xml &) fault-policy's can
    n i have per domain.
    - how many ( fault-binding.xml &) fault-policy's can
    n i have per process.
         many to one or many to many relationship.
    We can have only one policy
    [config/DefaultPolicy.xml] at a Domain Level
    To create a Fault Policy File for Automated Fault Recovery
    Create directories named fault-policies under the config directory for
    every domain in which you want to use the fault management framework.
    SOA_ORACLE_HOME\bpel\domains\domain_name\config\fault-policies
    You can have n fault policies per domain.
    To provide a fault policy applicable to an entire domain in the
    fault-bindings.xml file in the SOA_ORACLE_
    HOME\bpel\domains\domain_name\config directory.
    You can have 1 fault-bindings.xml per domain.
    3a) how can i make sure/ensure that Fault Management
    Framework is applied at each process level and/or at
    Domain level.Provide a fault-binding: with
    <process faultPolicy="YourPolicy"/>
    >
    4) Is there any Advantages, limitations / contrains
    that we have if we are opting Fault Management
    Framework (have to consider, before going to
    production).
    The framework is applicable for faults in "invoke" activity
    only.
    5) can i have any samples / URL for samples for Fault
    Management Framework in OTN or else where.
         so that i can work around.
    >
    >
    Other than 10133technotes.pdf do you have any other
    documentation which has an eloberative description
    about
    Fault Management Framework and its samples
    please guide me accordingly.Let me know if you need more information.

  • BPEL 10.1.3.5: Fault policy framework: has retryCount a maximum of 50?

    Hello,
    i configured the fault policy with the folllowing values:
    <Action id="ora-retry">
    <retry>
    <retryCount>60</retryCount>
    <retryInterval>1</retryInterval>
    </retry>
    </Action>
    But when i look at the audit-tab in the BPEL-Console, i see only 50 retries, until the action fails.
    Has retryCount a maximum of 50 retries?
    Best regards and thanks for your help
    Friedrich

    Hi again.
    Has anyone been able to use any kind of Xpath function inside a policy file? If so, could you please share the code fragment including the namespace declarations and the conditions?
    Does anyone know if Fault Management Framework at least support the use of Xpath functions?
    Thanks.
    Denis

  • Fault Policy framework doesnt work - SOA 11g

    Hi All,
    I am trying to excute a composite in which i had a business fault and i had the swicth condition based on reply.
    If reply is other than success or failure i will throw a fault Invalid data and the fault is catched by teh fault handler. but the fault policy doesn't work.
    these is my fault ploicy
    <?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="0.0.1" id="FusionMidFaults"
    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:medns="http://schemas.oracle.com/mediator/faults"
    name="medns:mediatorFault">
    <condition>
    <action ref="MediatorJavaAction"/>
    </condition>
    </faultName>
    <faultName xmlns:bpelx="http://schemas.oracle.com/bpel/extension"
    name="bpelx:remoteFault">
    <condition>
    <action ref="java-fault-handler"/>
    </condition>
    </faultName>
    <faultName xmlns:bpelx="http://schemas.oracle.com/bpel/extension"
    name="bpelx:bindingFault">
    <condition>
    <action ref="ora-retry"/>
    </condition>
    </faultName>
    <faultName xmlns:bpelx="http://schemas.oracle.com/bpel/extension"
    name="bpelx:runtimeFault">
    <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-retry"/>
    </condition>
    </faultName>
    <faultName xmlns:bpws="http://schemas.xmlsoap.org/ws/2003/03/business-process/"
    name="bpws:InvalidData">
    <condition>
    <action ref="java-fault-handler"/>
    </condition>
    </faultName>
    <!-- <fault name="test" type="bpws:InvalidData" xmlns:bpws="http://schemas.xmlsoap.org/ws/2003/03/business-process/" >
    <condition>
    <action ref="ora-retry"/>
    </condition>
    </fault> -->
    </Conditions>
    <Actions>
    <!-- Generics -->
    Note: The preseeded recovery action tag names (ora-retry, ora-human-intervention, ora-terminate, and so on) are only samples.
    You can substitute these names with ones appropriate to your environment.
    Notes: ¦ Fault policy file names are not restricted to one specific name.However, they must conform to the fault-policy.xsd schema file. ¦ Example
    12–5 provides an example of catching faults based on fault names. You can also catch faults based on message types, or on both:
    <Action id="ora-retry">
    <retry>
    <retryCount>3</retryCount>
    <retryInterval>2</retryInterval>
    <exponentialBackoff/>
    <retryFailureAction ref="java-fault-handler"/>
    <retrySuccessAction ref="ora-terminate"/>
    </retry>
    </Action>
    <Action id="ora-rethrow-fault">
    <rethrowFault/>
    </Action>
    <Action id="java-fault-handler">
    <javaAction className="in.ibm.com.FAPErrorHandler"
    defaultAction="ora-human-intervention" propertySet="properties">
    <returnValue value="OK" ref="ora-human-intervention"/>
    </javaAction>
    </Action>
    <Action id="ora-human-intervention">
    <humanIntervention/>
    </Action>
    <Action id="ora-terminate">
    <abort/>
    </Action>
    <Action id="default-replay-scope">
    <replayScope/>
    </Action>
    </Actions>
    </faultPolicy>
    </faultPolicies>
    And my fault bindings.xml file
    <?xml version="1.0" encoding="UTF-8" ?>
    <faultPolicyBindings version="0.0.1"
    xmlns="http://schemas.oracle.com/bpel/faultpolicy"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <composite faultPolicy="FusionMidFaults"/>
    <!--<composite faultPolicy="ServiceExceptionFaults"/>-->
    <!--<composite faultPolicy="GenericSystemFaults"/>-->
    </faultPolicyBindings>
    In 10g we used a default fauly policy and we used to register it used to work fine. Here there is soem thing wrong with the java class.?????
    my compsoite execution gives the following error
    <bpelFault>
    <faultType>
    <message>0</message>
    </faultType>
    <InvalidData>
    <part name="summary">
    <summary xsi:type="def:string">Invalid status from HOL</summary>
    </part>
    <part name="detail">
    <detail xsi:type="def:string">HOL Sends Invalid Status</detail>
    </part>
    <part name="code">
    <code xsi:type="def:string">Error</code>
    </part>
    </InvalidData>
    </bpelFault>
    as per my fault value but not calling my java class... how do i know my fault policy is working or not ?????This is teh errored fault
         Error Message: {http://schemas.xmlsoap.org/ws/2003/03/business-process/}InvalidData
    Fault ID     default/FAPCustomerInitiatedBarUnbar!1.0*374a445a-1396-438e-a7c4-76bf5c6404a8/FAPCustomerInitiatedBarUnbarProcess/210005-BpThw0-BpSeq30.11-3
    Fault Time     Oct 25, 2010 4:26:49 PM
    Non Recoverable System Fault :
    <bpelFault><faultType> <message>0</message></faultType><InvalidData xmlns="http://schemas.xmlsoap.org/ws/2003/03/business-process/"><part name="summary"><summary xmlns:def="http://www.w3.org/2001/XMLSchema" xsi:type="def:string" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Invalid status from HOL</summary></part><part name="detail"><detail xmlns:def="http://www.w3.org/2001/XMLSchema" xsi:type="def:string" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">HOL Sends Invalid Status</detail></part><part name="code"><code xmlns:def="http://www.w3.org/2001/XMLSchema" xsi:type="def:string" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Error</code></part></InvalidData></bpelFault>
    I verified the serverlog and diagonostic log file..
    the java class is not called what is wrong with my java class call in fault policy.
    Venugopal Raja
    Edited by: user12893766 on Oct 25, 2010 3:57 AM
    Edited by: user12893766 on Oct 25, 2010 5:35 AM

    Many Thanks.
    I had misinteprted the documentation I had read which stipulated the pattern of the test should be $fault.<PartName>/<LocationPath>.
    What I didnt realise was the $fault.<PartName> e.g. $fault.code returned the root node which in this case is <code>. Therefore no further location path is required as this is a simple type / string field rather than a complex type

  • How to retry a external webservice without fault policy framework?

    hi ,
    -->i want retry a external web service if invocation fails first time, without using fault policy frame work how to achieve this?
    -->I have a Advanced Queue in OSB, i am Dequeueing that  , i have a proxy to deque the AQ topic, with any reason dequeue fails it should retry for number of times and then handled in Exception Hnadler in OSB.
    How to retry the AQ to Dequeue?
    Thanks,
    Shekar

    We are experiencing exactly the same problem!
    Only in our case its Wssp1.2-2007-Wss1.0-X509-Basic256.xml
    We encrypt and sign the request, the server processes it correctly.
    But afterwards we send a "naked" request(not encrypted nor signed) and still the WLS processes it.
    Is there a setting of some sort that enables strict enforcement of the policy?

  • Test Conditions in BPEL Fault Policy

    Per the ORacle 10.1.3.3 SOA Suite techical document, under the Fault Policy Framework section you can use an XPath expression in the <test> section of a fault policy. The example provided is +<test>$fault.code/code="WSDLReadingError"</test>+
    Instead of using an equals sign, I am trying to figure out the syntax to use a "contains" or "starts-with" expression. I want to filter out a particular remoteFault using the "summary".
    I have tried:
    +<Conditions>+
    +          <faultName xmlns:bpelx="http://schemas.oracle.com/bpel/extension" name="bpelx:remoteFault">+
    +               <condition>+
    +*<test>contains($fault.summary/summary,"exception on JaxRpc")</test>*+      
    +<action ref="ora-retry"/>+
    +               </condition>+
    +          </faultName>+
    +     </Conditions>+
    +     <Actions>...+
    but this does not seem to work.
    Anyone know what "tests" are possible, and\or have used a "contains" expression in their Fault Policy?
    Thanks in advance,
    Eric
    Example of the fault that I am trying to "catch".
    +<remoteFault xmlns="http://schemas.oracle.com/bpel/extension">+
    +<part name="code">+
    +<code>ESBMessageProcessingFailed</code>+
    +</part><part name="summary"><summary>exception on JaxRpc invoke:+
    start fault message:
    +801 Error validating amount. Must be numerical and greater than 0 [000]+
    +:end fault message</summary>+
    +</part><part name="detail"><detail>null</detail>+
    +</part></remoteFault>+

    I did try to add namespace but it still didn't catch the fault.
    I contacted Oracle support and they indicated that the syntax is: $fault.part/<xpath expression>
    So for my purposes I needed to put: <test>$fault.summary/contains(summary, "xyz")</test>
    HOWEVER this did not work. We recontacted Oracle and this time they admitted there is a bug that they will document. Only = or != can be used at this time.
    Thanks for all who responded. I'm closing this question.
    For reference, here's a list of what I tried:
    The following did NOT catch my fault
    <test>$fault.summary/contains(summary, "JaxRpc invoke")</test>      
    <test>$fault.summary/contains(summary, 'start fault message:')</test>     
    <test>$fault.code/contains(code, "ProcessingFail")</test>           
    <test>$fault.code/contains(code, "ESBMessageProcessingFailed")</test>
    <test>$fault.code/contains(code/code, "ESBMessageProcessingFailed")</test>          
    <test>$fault.code/contains($fault.code, "ESBMessageProcessingFailed")</test>          
    <test>$fault.code/contains($fault.code/code, "ESBMessageProcessingFailed")</test>     
    <test>$fault.code/code/contains(code, "ESBMessageProcessingFailed")</test>          
    <test>$fault.code/code/contains($fault.code/code/, "ESBMessageProcessingFailed")</test>     
    <test>$fault.code/code/contains(code/code/, "ESBMessageProcessingFailed")</test>           
    <test>$fault.code/contains(/remoteFault/part[1]/code/, "ESBMessageProcessingFailed")</test>     
    <test>contains($fault.code/code,"ESB")</test>           
    <test>contains($fault.summary/summary,"ESB")</test>     
    <test>contains($fault.summary, "ESB")</test>          
    <test>contains($fault.summary/summary, &#xD;)</test>           
    <test>xp20:matches($fault.summary/summary,'.*fault message.*')</test>      
    <test>xp20:matches($fault.summary/summary,'*fault message*')</test>     
    <test>not(xp20:matches($fault.summary/summary,'.*xyz.*'))</test>          
    <test>true()</test>

  • Urgent : 11g Fault Policy Java Handler

    Im trying to use fault policies in 11g and in fault policies want to catch the remote faults and pass it to a custom java handler.
    in Custom Handler use IFaultRecoveryJavaClass and also BPELFaultRecoveryContextImpl , i want to pick fault information
    and pass store it in DB...
    i placed the client jar file in <Oracle_HOME>\user_projects\domains\base_domain\lib
    Duuring runtime the server is able to Pick the IFaultRecoveryJavaClass but not BPELFaultRecoveryContextImpl
    is there anything im missing ?
    As per oracle documentation in Fault Handling in BPEL form SOA developer guide ..
    public class TestJavaAction implements IFaultRecoveryJavaClass {
    public void handleRetrySuccess(IFaultRecoveryContext ctx) {
    System.out.println("This is for retry success");
    handleFault(ctx);
    public String handleFault(IFaultRecoveryContext ctx) {          
    System.out.println("-----Inside handleFault-----\n" + ctx.toString());
    dumpProperties(ctx.getProperties());
    /* Get BPEL specific context here */
    BPELFaultRecoveryContextImpl bpelCtx = (BPELFaultRecoveryContextImpl) ctx;
    bpelCtx.addAuditTrailEntry("hi there");
    System.out.println("Policy Id" + ctx.getPolicyId());
    please find the Fault Policy and Custom Java Class
    please see may fault policy below..
    =====================================================================================================================
    <?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.1.3" id="ConnectionFaults">
    <Conditions>
    <!-- Remote Fault Handler -->
    <faultName xmlns:bpelx="http://schemas.oracle.com/bpel/extension" name="bpelx:remoteFault">
    <condition>
    <action ref="technical-fault-handler"/>
    </condition>
    </faultName>
    </Conditions>
    <Actions>
    <!-- Human Intervention -->
    <Action id="ora-human-intervention">
    <humanIntervention/>
    </Action>
    <!-- Technical Fault Action -->
    <Action id="technical-fault-handler">
    <javaAction className="com.FaultHandler"
    defaultAction="ora-human-intervention" propertySet="TechnicalProps">
    <returnValue value="OK" ref="ora-human-intervention"/>
    </javaAction>
    </Action>
    </Actions>
    <Properties>
    <!-- Properties for Technical Errors -->
    <propertySet name="TechnicalProps">
    <property name="logFileName">techinical-faults.log</property>
    <property name="logFileDir">c:\tmp\log</property>
    <property name="ErrorType">Technical</property>
    </propertySet>
    </Properties>
    </faultPolicy>
    </faultPolicies>
    Custom Java Handler ..
    =====================================================================================================================
    import java.io.File;
    import java.io.PrintStream;
    import java.util.ArrayList;
    import java.util.Map;
    ==============================================================
    // SOA Runtime fabric-runtime.jar Available with SOA Runtime Libraries
    ==============================================================
    import oracle.integration.platform.faultpolicy.IFaultRecoveryContext;
    import oracle.integration.platform.faultpolicy.IFaultRecoveryJavaClass;
    ==============================================================
    // BPEL Runtime orabpel.jar Available with BPEL Runtime Libraries
    ==============================================================
    import com.collaxa.cube.engine.fp.BPELFaultRecoveryContextImpl;
    public class FaultHandler implements IFaultRecoveryJavaClass {
    public FaultHandler() {
    super();
    public void handleRetrySuccess(IFaultRecoveryContext ifc) {
    print("RertySuccess");
    public String handleFault(IFaultRecoveryContext ifc) {
    print("Handle Fault");
    Map<String,ArrayList> props = ifc.getProperties();
    for (Map.Entry<String,ArrayList> entry: props.entrySet()){
    print (entry.getKey() + " = " + entry.getValue().get(0));
    String logFileName = (String) props.get("logFileName").get(0);
    String logFileDir = (String) props.get("logFileDir").get(0);
    String ErrorType = (String) props.get("ErrorType").get(0);
    PrintStream ps = null;
    try
    ps = new PrintStream(logFileDir + File.separator + logFileName);
    catch (Exception e) {
    print(e.getMessage());
    System.out.println( "Fault Details");
    System.out.println("===============================================================");
    System.out.println("Fault Type ................ " + ifc.getType());
    System.out.println("Poilcy ID ................. " + ifc.getPolicyId());
    System.out.println("Faulted Partner Link ...... " + ifc.getReferenceName());
    System.out.println("Error Type ...... " + ErrorType);
    System.out.println("Port Type ................. " + ifc.getPortType());
    try {
    BPELFaultRecoveryContextImpl bpelCtx = (BPELFaultRecoveryContextImpl) ifc;
    System.out.println("BPEL Context + getActivityName" + bpelCtx.getActivityName());
    System.out.println("BPEL Context + getActivityType" + bpelCtx.getActivityType());
    System.out.println("BPEL Context + getComponentInstanceId" + bpelCtx.getComponentInstanceId());
    System.out.println("BPEL Context + getComponentInstanceId" + bpelCtx.getComponentInstanceId());
    System.out.println("BPEL Context + getCompositeName" + bpelCtx.getCompositeName());
    System.out.println("BPEL Context + getECID" + bpelCtx.getECID());
    System.out.println("BPEL Context + getFault" + bpelCtx.getFault());
    System.out.println("BPEL Context + getFault" + bpelCtx.getProcessDN());
    catch (Exception ee){
    System.out.println("BPEL Context + Exception" + ee.getMessage());
    return "OK";
    Error Log ..
    =====================================================================================================================
    Caused by: com.oracle.bpel.client.BPELFault: faultName: {{http://schemas.oracle.com/bpel/extension}runtimeFault}
    parts: {{
    summary=<summary>com/collaxa/cube/engine/fp/BPELFaultRecoveryContextImpl</summary>
    ,detail=<detail>java.lang.NoClassDefFoundError: com/collaxa/cube/engine/fp/BPELFaultRecoveryContextImpl
         at com.FaultHandler.handleFault(FaultHandler.java:56)
         at com.collaxa.cube.engine.fp.RecoveryActionJava.execute(RecoveryActionJava.java:67)
         at com.collaxa.cube.engine.fp.BPELRecoverFault.recover(BPELRecoverFault.java:87)
         at oracle.fabric.CubeServiceEngine.recoverFault(CubeServiceEngine.java:1589)
         at oracle.integration.platform.faultpolicy.RecoverFault.recoverAndChain(RecoverFault.java:149)
         at oracle.integration.platform.faultpolicy.RecoverFault.resolveAndRecover(RecoverFault.java:112)
         at oracle.integration.platform.faultpolicy.FaultRecoveryManagerImpl.resolveAndRecover(FaultRecoveryManagerImpl.java:121)
         at com.collaxa.cube.engine.ext.bpel.common.wmp.BPELInvokeWMP.resolveAndRecover(BPELInvokeWMP.java:1170)
         at com.collaxa.cube.engine.ext.bpel.common.wmp.BPELInvokeWMP.__handleException(BPELInvokeWMP.java:1111)
         at com.collaxa.cube.engine.ext.bpel.common.wmp.BPELInvokeWMP.__callback(BPELInvokeWMP.java:626)
         at com.collaxa.cube.engine.ext.bpel.common.wmp.BPELInvokeWMP.handleNormalInvoke(BPELInvokeWMP.java:465)
         at com.collaxa.cube.engine.ext.bpel.common.wmp.BPELInvokeWMP.__executeStatements(BPELInvokeWMP.java:182)
         at com.collaxa.cube.engine.ext.bpel.common.wmp.BaseBPELActivityWMP.perform(BaseBPELActivityWMP.java:140)
         at com.collaxa.cube.engine.CubeEngine._performActivity(CubeEngine.java:2675)
         at com.collaxa.cube.engine.CubeEngine.performActivity(CubeEngine.java:2558)
         at com.collaxa.cube.engine.CubeEngine.handleWorkItem(CubeEngine.java:1256)
         at com.collaxa.cube.engine.dispatch.message.instance.PerformMessageHandler.handleLocal(PerformMessageHandler.java:73)
         at com.collaxa.cube.engine.dispatch.DispatchHelper.handleLocalMessage(DispatchHelper.java:188)
         at com.collaxa.cube.engine.dispatch.DispatchHelper.sendMemory(DispatchHelper.java:285)
         at com.collaxa.cube.engine.CubeEngine.endRequest(CubeEngine.java:4607)
         at com.collaxa.cube.engine.CubeEngine.createAndInvoke(CubeEngine.java:828)
         at com.collaxa.cube.engine.delivery.DeliveryService.handleInvoke(DeliveryService.java:610)
         at com.collaxa.cube.engine.ejb.impl.CubeDeliveryBean.handleInvoke(CubeDeliveryBean.java:354)
         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.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:54)
         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 $Proxy184.handleInvoke(Unknown Source)
         at com.collaxa.cube.engine.ejb.impl.bpel.BPELDeliveryBean_5k948i_ICubeDeliveryLocalBeanImpl.handleInvoke(BPELDeliveryBean_5k948i_ICubeDeliveryLocalBeanImpl.java:241)
         at com.collaxa.cube.engine.dispatch.message.invoke.InvokeInstanceMessageHandler.handle(InvokeInstanceMessageHandler.java:34)
         at com.collaxa.cube.engine.dispatch.DispatchHelper.handleMessage(DispatchHelper.java:139)
         at com.collaxa.cube.engine.dispatch.BaseDispatchTask.run(BaseDispatchTask.java:58)
         at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
         at java.lang.Thread.run(Thread.java:619)
    </detail>

    I tried bundling the jar file but still it is not able to pick up the class and throws the same exception. please find the following code which i tried to use to pick up the remote fault.
    System.out.println( "Fault Details");
    System.out.println( "===============================================================");
    System.out.println( "Fault Type ................ " + ifc.getType());
    System.out.println( "Poilcy ID ................. " + ifc.getPolicyId());
    System.out.println( "Faulted Partner Link ...... " + ifc.getReferenceName());
    System.out.println( "Error Type ...... " + ErrorType);
    System.out.println( "Port Type ................. " + ifc.getPortType());
    BPELFaultRecoveryContextImpl bpelCtx = (BPELFaultRecoveryContextImpl) ifc;
    System.out.println("BPEL Context + getActionId" + bpelCtx.getActionId());
    System.out.println("BPEL Context + getActivityName" + bpelCtx.getActivityName());
    System.out.println("BPEL Context + getActivityType" + bpelCtx.getActivityType());
    System.out.println("BPEL Context + getComponentInstanceId" + bpelCtx.getComponentInstanceId());
    System.out.println("BPEL Context + getCompositeName" + bpelCtx.getCompositeName());
    System.out.println("BPEL Context + getECID" + bpelCtx.getECID());
    System.out.println("BPEL Context + getFault" + bpelCtx.getFault());
    System.out.println("BPEL Context + getFault" + bpelCtx.getProcessDN());
    If you have any working example can you please pass the code. my emailid is [email protected]
    Edited by: lakshmi nadh on Jul 27, 2009 3:39 AM

  • BPEL 10.1.3.5 Fault Management - Using Xpath in Fault Policy conditions

    Hi all.
    I have a requirement to use the xpath functions "contais" and "upper-case" inside a condition in a fault policy file. I've done some tests and didn't get successful results so far.
    My first test using the policy file was the following:
    <faultName xmlns:bpelx="http://schemas.oracle.com/bpel/extension"
              xmlns:ebsv1="http://www.claro.com.br/EBS/Claro/v1"
              xmlns:ebov1="http://www.claro.com.br/EBO/Claro/v1"
              name="ebsv1:TechnicalFault">
         <condition>
         *<test>$fault.TechnicalFault/ebsv1:TechnicalFault/ebov1:message = 'TE-0001'</test>*
         <action ref="ora-human-intervention" />
         </condition>
    In this first test I used a simple expression just to test the overall namespace declarations and xpath navigation. It worked as expected.
    Second, I modified the test to use the "contais" function. I need to use this function because my message will eventually contain the value 'TE-0001' mixed with other string:
    <faultName xmlns:bpelx="http://schemas.oracle.com/bpel/extension"
              xmlns:ebsv1="http://www.claro.com.br/EBS/Claro/v1"
              xmlns:ebov1="http://www.claro.com.br/EBO/Claro/v1"
              name="ebsv1:TechnicalFault">
         <condition>
         *<test>contains($fault.TechnicalFault/ebsv1:TechnicalFault/ebov1:message, 'TE-0001')</test>*
         <action ref="ora-human-intervention" />
         </condition>
    In this second test I allways get FALSE results, meaning that this expression may not be correct. I'm certain that this should be evaluated to TRUE as the test scenario is the same as the first test. Is there something missing?? I turned on debug level log in the domain but didn't find any hint about the fault management processing.
    Besides the use of the contains function, it would be nice if I'm able use the function upper-case. Something like this:
    <faultName xmlns:bpelx="http://schemas.oracle.com/bpel/extension"
              xmlns:ebsv1="http://www.claro.com.br/EBS/Claro/v1"
              xmlns:ebov1="http://www.claro.com.br/EBO/Claro/v1"
              xmlns:xp20="http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.Xpath20"
              name="ebsv1:TechnicalFault">
         <condition>
         *<test>contains(xp20:upper-case($fault.TechnicalFault/ebsv1:TechnicalFault/ebov1:message), 'TE-0001')</test>*
         <action ref="ora-human-intervention" />
         </condition>
    Any ideas???
    Thanks
    Denis

    Hi again.
    Has anyone been able to use any kind of Xpath function inside a policy file? If so, could you please share the code fragment including the namespace declarations and the conditions?
    Does anyone know if Fault Management Framework at least support the use of Xpath functions?
    Thanks.
    Denis

Maybe you are looking for

  • How can I import playlists, ratings, and play counts from an old iTunes library into a new one?

    After reading countless threads re: how to get the iTunes artwork screensaver to work, I decided to delete my iTunes library file and reimport all of music which resulted in fixing the iTunes artwork screensaver.  Unfortunately (and expectedly), my p

  • Fingerprint utility is not working for normal users - Tecra M11

    Hi All, I installed windows 7 pro in Tecra M11 laptop and the Toshiba finger print utility is not working for normal users. It is working only for domain administrators. The TFPU is not working for, normal domain users, local users, local administrat

  • How to "Grab" or Highlight Safari Window Titles?

    Hello Folks, i was wondering if someone can answer a question for me about the titles that appear at the top of my Safari windows. (i'm using Safari 3.2.) When i display a webpage in a particular Safari window or tab within a window, there is a title

  • Higher Education cess not displayed in J2I6 when posted through J1IH

    Hi, We have passed an Excise JV through J1IH. BED, ECess and HECess accounts are credited and Excise Duty paid A/c is debited. All the values are posted properly. We have also checked the accounting document for this. But when we run the report J2I6

  • Dest Delimiter parameter in bic module

    Hi Experts, I am working on a IDoc to EDI scenario using seeburger modules (bic). While creating a EDI file on Target FTP server ,EDI content is written into file as a single line instead of a new line after every record. Please let me know if i had