BPEL Console - Fault Policy

Hi,
Can we use BPEL Console/Admin to edit fault policy file? I didn't find a way though.. I assume it should be possible using Console/Admin ...
Please let me know ..
Ranjith

I believe it is not possible atleast in 10.1.3.3 version, Oracle might support this in later version.
Have you seen the demo of Oracle CAB, I believe they wrote some JSP to view/edit these policies. (Not sure it may be just for ESB).
Regards,
Chintan

Similar Messages

  • BPEL 11g fault policy action java class not sending email

    Hi All,
    I am trying to attach fault policy to my bpel process. The fault conditions are working fine but the email part from the action class is not able to send email. The code execute properly , i can't see any error message in the log but I cant access the email in my inbox.
    I am able to send email from using email bpel activity and also test work flow notification from em console.
    I have used both the java options for sending email like javax.mail and oracle.sdp.messaging .
    JAVA CODE FOR EMAIL javax.mail
    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");
    //Print Fault Details to Console if it exists
    System.out.println("****************Fault Details********************************");
    // if(iFaultRecoveryContext instanceof BPELFaultRecoveryContextImpl)
    BPELFaultRecoveryContextImpl bpelCtx = (BPELFaultRecoveryContextImpl)iFaultRecoveryContext;
    System.out.println("Fault: " + bpelCtx.getFault());
    System.out.println("Activity: " + bpelCtx.getActivityName());
    System.out.println("Composite Instance: " + bpelCtx.getCompositeInstanceId());
    System.out.println("Composite Name: " + bpelCtx.getCompositeName());
    System.out.println("***********************************************************");
    try {
    bpelCtx.addAuditTrailEntry("Sending Email...");
    Map props = iFaultRecoveryContext.getProperties();
    if (props != null && props.size() > 0) {
    setFrom(getParameterValue((ArrayList)props.get("from")));
    setTo(getParameterValue((ArrayList)props.get("to")));
    setSubject(getParameterValue((ArrayList)props.get("subject")) + bpelCtx.getTitle());
    setText(getParameterValue((ArrayList)props.get("text")) + "\n" + "BPEL Process Instance: " + bpelCtx.getInstanceId() + " needs intervention to recover from a technical exception: " + bpelCtx.getFault().getMessage() + ".\n" + "Check the Activities tab in the BPEL Management Console in order to resolve the error as soon as possible.\n" + "This message was automatically generated, please do not reply to it.");
    setHost(getParameterValue((ArrayList)props.get("host")));
    setPort(getParameterValue((ArrayList)props.get("port")));
    bpelCtx.addAuditTrailEntry("to Email getFrom..."+getFrom());
    bpelCtx.addAuditTrailEntry("to Email getTo..."+getTo());
    bpelCtx.addAuditTrailEntry("to Email getText..."+getText());
    bpelCtx.addAuditTrailEntry("to Email getHost..."+getHost());
    bpelCtx.addAuditTrailEntry("to Email getPort..."+getPort());
    Session mailSession = Session.getDefaultInstance(properties);
    Message simpleMessage = new MimeMessage(mailSession);
    bpelCtx.addAuditTrailEntry("to Email toAddresses2...");
    InternetAddress fromAddress = new InternetAddress(from);
    bpelCtx.addAuditTrailEntry("to Email fromAddress..."+fromAddress);
    simpleMessage.setFrom(fromAddress);
    String[] toAddresses = to.split(";");
    if (toAddresses != null && toAddresses.length > 0)
    bpelCtx.addAuditTrailEntry("to Email toAddresses3...");
    InternetAddress[] toInternetAddresses =new InternetAddress[toAddresses.length];
    for (int i = 0; i < toAddresses.length; i++)
    bpelCtx.addAuditTrailEntry("to Email toAddresses4444..."+ toAddresses);
    toInternetAddresses[i] = new InternetAddress(toAddresses[i]);
    bpelCtx.addAuditTrailEntry("to Email toInternetAddresses..."+ toInternetAddresses[i]);
    simpleMessage.setRecipients(RecipientType.TO,toInternetAddresses);
    simpleMessage.setSubject(subject);
    simpleMessage.setText(text);
    Transport.send(simpleMessage);
    bpelCtx.addAuditTrailEntry("After Email...");
    } catch (Exception e) {
    bpelCtx.addAuditTrailEntry("fault Message:" + e.getMessage());
    //Custom Code to Log Fault to File/DB/JMS or send Emails etc.
    return "Manual";
    private String getParameterValue(ArrayList parameterList) {
    String value = null;
    if (parameterList != null && parameterList.size() > 0)
    value = (String)parameterList.get(0);
    return value;
    JAVA CODE FOR EMAIL oracle.sdp.messaging 
    private void sendMail(IFaultRecoveryContext iFaultRecoveryContext) {
    BPELFaultRecoveryContextImpl bpelCtx = (BPELFaultRecoveryContextImpl)iFaultRecoveryContext;
    bpelCtx.addAuditTrailEntry("In sendMail...");
    Map<String, Object> params = new HashMap<String, Object>();
    // params.put(key, value); // if optional parameters need to be specified.
    MessagingClient messagingClient;
    try {
    bpelCtx.addAuditTrailEntry("In sendMail111...");
    messagingClient =
    MessagingClientFactory.createMessagingClient(params);
    Message newMessage = MessagingFactory.createMessage();
    // newMessage.setContent(createEventPayload(iFaultRecoveryContext),"text/plain");
    newMessage.setContent("Component Name :"+bpelCtx.getComponentName()+ "\n Instacne Id :"+bpelCtx.getComponentInstanceId()+
    "\n Composite Instance Id :"+bpelCtx.getCompositeInstanceId()+ "\n Composite Name :" bpelCtx.getCompositeName()
    "\n Activity name :"+bpelCtx.getActivityName() + "\n Activity Id :" bpelCtx.getActivityId() "\n ECID :" bpelCtx.getECID()
    "\n Reference Name :"+bpelCtx.getReferenceName()+ "\n Title :" bpelCtx.getTitle()
    "\n Fault :" + bpelCtx.getFault()+ "\n Port Name :"+bpelCtx.getPortType(), "text/plain");
    bpelCtx.addAuditTrailEntry("In sendMail222...");
    Address sender = MessagingFactory.createAddress(getFrom());
    bpelCtx.addAuditTrailEntry("In sendMail sender..."+sender.toString());
    bpelCtx.addAuditTrailEntry("from Email..."+getFrom());
    String recipientsStr[] = to.split(";");
    bpelCtx.addAuditTrailEntry("to Email..."+getTo());
    bpelCtx.addAuditTrailEntry("In sendMail333...");
    Address[] recipients = MessagingFactory.createAddress(recipientsStr);
    bpelCtx.addAuditTrailEntry("In sendMail444...");
    newMessage.addSender(sender);
    messagingClient.registerAccessPoint(MessagingFactory.createAccessPoint(sender));
    newMessage.addAllRecipients(recipients);
    bpelCtx.addAuditTrailEntry("In sendMail5555...");
    newMessage.getMessageInfo().setSession(MessageSessionType.INBOUND_SESSION);
    newMessage.setSubject(getSubject());
    bpelCtx.addAuditTrailEntry("Subject..."+getSubject());
    String messageId = "";
    bpelCtx.addAuditTrailEntry("In sendMail666...");
    synchronized (this) {
    bpelCtx.addAuditTrailEntry("In sendMail777...");
    messageId = messagingClient.send(newMessage);
    bpelCtx.addAuditTrailEntry("In sendMail888...");
    Status[] statuses = messagingClient.getStatus(messageId);
    bpelCtx.addAuditTrailEntry("In sendMail999...");
    } catch (MessagingException e) {
    bpelCtx.addAuditTrailEntry("inside exception email fault Message:" + e.getMessage());
    //e.printStackTrace();
    MESSAGES FROM SOA SERVER OUT LOG after test the bpel process:
    ===========================================
    ****************Fault?Metadata********************************
    Fault?policy?id:?SimpleFaultPolicy
    Fault?type:?bpel
    Partnerlink:?Service1
    Port?type:?{http://kacst.edu.sa/process/nstip/coPINotifyProcess}kacst_process_nstipCoPIMotifyProcess
    Properties?Set?for?the?Fault
    ****************Fault?Details********************************
    Fault:?com.oracle.bpel.client.BPELFault: faultName: {{http://schemas.oracle.com/bpel/extension}remoteFault}
    messageType: {{http://schemas.oracle.com/bpel/extension}RuntimeFaultMessage}
    parts: {{
    summary=<summary>Message Router for nstip/nstip_Pro_CoPiNotificationProcess!1.0*soa_084da522-a825-4aa6-9d1c-ca1d50b4595b is not able to process messages. The composite state is set to "off". The composite can be turned "on" by using the administrative consoles.</summary>
    ,detail=<detail>&lt;exception>Message Router for nstip/nstip_Pro_CoPiNotificationProcess!1.0*soa_084da522-a825-4aa6-9d1c-ca1d50b4595b is not able to process messages. The composite state is set to "off". The composite can be turned "on" by using the administrative consoles.&lt;/exception>
    </detail>
    ,code=<code>env:Server</code>}
    Activity:?Invoke1
    Composite?Instance:?740332
    Composite?Name:?TestBPELFaultPolicy
    DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]
    DEBUG SMTP: useEhlo true, useAuth false
    DEBUG SMTP: trying to connect to host "localhost", port 25, isSSL false
    220 taisirsit.kacst.edu.sa ESMTP Sendmail 8.14.4+Sun/8.14.4; Fri, 12 Oct 2012 13:00:45 +0300 (AST)
    DEBUG SMTP: connected to host "localhost", port: 25
    EHLO taisirsit.kacst.edu.sa
    250-taisirsit.kacst.edu.sa Hello localhost [127.0.0.1], pleased to meet you
    250-ENHANCEDSTATUSCODES
    250-PIPELINING
    250-EXPN
    250-VERB
    250-8BITMIME
    250-SIZE
    250-DSN
    250-ETRN
    250-DELIVERBY
    250 HELP
    DEBUG SMTP: Found extension "ENHANCEDSTATUSCODES", arg ""
    DEBUG SMTP: Found extension "PIPELINING", arg ""
    DEBUG SMTP: Found extension "EXPN", arg ""
    DEBUG SMTP: Found extension "VERB", arg ""
    DEBUG SMTP: Found extension "8BITMIME", arg ""
    DEBUG SMTP: Found extension "SIZE", arg ""
    DEBUG SMTP: Found extension "DSN", arg ""
    DEBUG SMTP: Found extension "ETRN", arg ""
    DEBUG SMTP: Found extension "DELIVERBY", arg ""
    DEBUG SMTP: Found extension "HELP", arg ""
    DEBUG SMTP: use8bit false
    MAIL FROM:<[email protected]>
    250 2.1.0 <[email protected]>... Sender ok
    RCPT TO:<[email protected]>
    250 2.1.5 <[email protected]>... Recipient ok
    DEBUG SMTP: Verified Addresses
    DEBUG SMTP: [email protected]
    DATA
    354 Enter mail, end with "." on a line by itself
    From: [email protected]
    To: [email protected]
    Message-ID: <[email protected].sa>
    Subject: SOA EXCEPTIONInstance #890381 of BPELProcess1
    MIME-Version: 1.0
    Content-Type: text/plain; charset=us-ascii
    Content-Transfer-Encoding: 7bit
    Testing Email From Fault
    BPEL Process Instance: 890381 needs intervention to recover from a technical exception: faultName: {{http://schemas.oracle.com/bpel/extension}remoteFault}
    messageType: {{http://schemas.oracle.com/bpel/extension}RuntimeFaultMessage}
    parts: {{
    summary=<summary>Message Router for nstip/nstip_Pro_CoPiNotificationProcess!1.0*soa_084da522-a825-4aa6-9d1c-ca1d50b4595b is not able to process messages. The composite state is set to "off". The composite can be turned "on" by using the administrative consoles.</summary>
    ,detail=<detail>&lt;exception>Message Router for nstip/nstip_Pro_CoPiNotificationProcess!1.0*soa_084da522-a825-4aa6-9d1c-ca1d50b4595b is not able to process messages. The composite state is set to "off". The composite can be turned "on" by using the administrative consoles.&lt;/exception>
    </detail>
    ,code=<code>env:Server</code>}
    Check the Activities tab in the BPEL Management Console in order to resolve the error as soon as possible.
    This message was automatically generated, please do not reply to it.
    250 2.0.0 q9CA0j30012424 Message accepted for delivery
    QUIT
    221 2.0.0 taisirsit.kacst.edu.sa closing connection
    Details from Instance of BPEL PROCESS :
    Started invocation of operation "process" on partner "Service1".
    Oct 12, 2012 10:00:45 AM [FAULT RECOVERY] Invoked handleBPELFault on custom java action class "com.kacst.fault.CustomFaultHandler".
    Oct 12, 2012 10:00:45 AM Sending Email...
    Oct 12, 2012 10:00:45 AM to Email [email protected]
    Oct 12, 2012 10:00:45 AM to Email [email protected]
    Oct 12, 2012 10:00:45 AM to Email getText...Testing Email From Fault BPEL Process Instance: 890381 needs intervention to recover from a technical exception: faultName: {{http://schemas.oracle.com/bpel/extension}remoteFault} messageType: {{http://schemas.oracle.com/bpel/extension}RuntimeFaultMessage} parts: {{ summary=<summary>Message Router for nstip/nstip_Pro_CoPiNotificationProcess!1.0*soa_084da522-a825-4aa6-9d1c-ca1d50b4595b is not able to process messages. The composite state is set to "off". The composite can be turned "on" by using the administrative consoles.</summary> ,detail=<detail>&lt;exception>Message Router for nstip/nstip_Pro_CoPiNotificationProcess!1.0*soa_084da522-a825-4aa6-9d1c-ca1d50b4595b is not able to process messages. The composite state is set to "off". The composite can be turned "on" by using the administrative consoles.&lt;/exception> </detail> ,code=<code>env:Server</code>} . Check the Activities tab in the BPEL Management Console in order to resolve the error as soon as possible. This message was automatically generated, please do not reply to it.
    Oct 12, 2012 10:00:45 AM to Email getHost...smtp.kacst.edu.sa
    Oct 12, 2012 10:00:45 AM to Email getPort...25
    Oct 12, 2012 10:00:45 AM to Email toAddresses2...
    Oct 12, 2012 10:00:45 AM to Email [email protected]
    Oct 12, 2012 10:00:45 AM to Email toAddresses3...
    Oct 12, 2012 10:00:45 AM to Email [email protected]
    Oct 12, 2012 10:00:45 AM to Email [email protected]
    Oct 12, 2012 10:00:45 AM After Email...
    Oct 12, 2012 10:00:45 AM [FAULT RECOVERY] Marked Invoke activity as "pending manual recovery".
    Oct 12, 2012 10:00:45 AM Faulted while invoking operation "process" on provider "Service1".
    Please suggest.
    Thanks

    Hi,
    I got the solution. our email server is sending email to the mail accounts those are in the same domain but for different domains its not able to send the email.
    you can try with the email those are created on the same email server.
    Thanks
    Tuku

  • 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

  • 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>

  • SOA BPEL 11g (11.1.1.3.0) - Using encapsulated retries in fault-policy file

    Hi,
    We are using oracle SOA suite 11g (11.1.1.3.0)
    I'm trying to configure a fault-policy file so that it first retries 20 times every 20 secs, then reties 20 times every 10 minutes, then retries 23 times every hour, then retries 24 times every 6 hours and if the fault persists call a java action to send an email and then go to human-intervention. It seems however that only the first retry is executed. The rest ones are ignored and the action following the first retry failure is the Java Action. The fault-policy is as follows:
    <?xml version="1.0" encoding="UTF-8"?>
    <faultPolicies xmlns="http://schemas.oracle.com/bpel/faultpolicy">
    <faultPolicy version="0.0.1" id="TransferResponsibilityRequestProcessFaults"
    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:freeze="http://rom/cosmote/bpel/webservice/util" name="freeze:BpelWSFault">
    <condition>
    <action ref="ora-human-intervention"/>
    </condition>
    </faultName>
    <faultName xmlns:retry="http://rom/cosmote/bpel/webservice" name="retry:PendingRequestsFault">
    <condition>
    <action ref="ora-retry-20sec"/>
    </condition>
    </faultName>
    </Conditions>
    <Actions>
    <Action id="ora-retry-20sec">
    <retry>
    <retryCount>10</retryCount>
    <retryInterval>20</retryInterval>
    <retryFailureAction ref="ora-retry-10min"/>
    </retry>
    </Action>
         <Action id="ora-retry-10min">
    <retry>
    <retryCount>10</retryCount>
    <retryInterval>600</retryInterval>
    <retryFailureAction ref="ora-retry-1hour"/>
    </retry>
    </Action>
    <Action id="ora-retry-1hour">
    <retry>
    <retryCount>23</retryCount>
    <retryInterval>3600</retryInterval>
    <retryFailureAction ref="ora-retry-6hour"/>
    </retry>
    </Action>
         <Action id="ora-retry-6hour">
    <retry>
    <retryCount>24</retryCount>
    <retryInterval>21600</retryInterval>
    <retryFailureAction ref="ora-java"/>
    </retry>
    </Action>
    <Action id="ora-java">
    <javaAction className="gr.cosmote.bpel.util.JavaActionInCaseOfRetryFails"
    defaultAction="ora-human-intervention">
    <returnValue value="RETURNED" ref="ora-human-intervention"/>
    </javaAction>
    </Action>
    <Action id="ora-human-intervention">
    <humanIntervention/>
    </Action>
    </Actions>
    </faultPolicy>
    </faultPolicies>
    Is retrying with various intervals only done by using the tag <exponentialBackoff/>?
    Thanks for any response.

    I had a similar requirement, although not as elaborate as yours. After I failed to figure it out myself I filed a SR. Basically, you cannot restart a retry block after the first execution to avoid an infinite loop.
    If you need to send the e-mail after the 23rd hour, why not just retry until the 23rd hour and send an e-mail?

  • 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

  • Why is Fault Policy working only when the BPEL's transaction is requiresNew

    Hi All
    I've defined Fault policy & fault bindings files for faults in my BPEL process. I'm using Oracle SOA Suite 11g.
    But the fault management framework is properly working only when the transaction property(bpel.config.transaction) of the BPEL is set to "requiresNew" in composite.xml
    When i modify it ot required, its not working, i.e. it is waiting for some period and erroring out. I could not manage these errors from the EM as we do for those in Fault Management Framework.
    Why is this behavior?
    I went thru this article, but could not understand it
    Transaction and Fault Propagation Semantics in BPEL Processes(http://docs.oracle.com/cd/E21764_01/integration.1111/e10224/soa_transactions.htm)
    Can someone pls explain this.
    Regards
    RaviKiran.

    Please refer http://docs.oracle.com/cd/E21764_01/integration.1111/e10224/soa_transactions.htm
    Thanks,
    S

  • BPEL fault policy takes more time, when rethrowing

    Hi All,
    I have a scenario where BPEL fault policy is taking more time to re-throw the fault back to BPEL
    Scenario:
    1) Partner link service throws as business exception
    2) This exception is first caught by BPEL fault policy, this in-turn will invoke "oracle.apps.aia.core.eh.BPELJavaAction" & then it is re-throw's back to BPEL process. Then time while rethrow'n back to BPEL process it taking too much time.
    Environment:
    SOA suite : Version      10.1.3.4.0 with AIA
    Hi all , any updates on this
    Edited by: user535670 on Aug 19, 2009 7:43 PM

    Abap team debugged and found out that there was an issue with RFC in ECC system.
    RFC connection was not working. it was causing the flow to wait for 1 mins. Basis fixed the issue to make RFC working. now interface works without connection time out.

  • BPEL process on error retrying self after every 5 minutes (no fault policy)

    Hi All
    We are facing very strange issue in one of our BPEL processes (we are using Oracle SOA Suite 11.1.1.3 on linux with 2 soa servers in cluster). The composite consists of a web service binding followed by a mediator which routes to three different BPEL processes (operational routing). This is all one way.
    Inside the BPEL we are throwing a bpel rollback fault in the catch all to roll back any pending database changes. As soon as the error comes, In the composite diagram i can see multiple BPEL instances under the mediator and they keep on coming after every 5 minutes (basically i see two BPEL instances with a gap of one second and this pair keeps on repeating every 5 minutes)
    Also we have a send email in the catch all and the email we get has a different composite id in every mail. However in the em i can see only one composite id (the first one when the error came) with multiple BPEL diagrams in it.
    We are not sure what is causing the error?
    1) Is it the one way mediator routing to 3 BPEL processes as per the operation invoked?
    2) Is there something wrong with clustering?
    3) Is there a problem with version 11.1.1.3?
    Please help as we are struck and not able to move to INT.
    Thanks and Regards
    Amit Sachdev

    Hi Anuj
    Thanks for the reply again. Using the below property seems to work, but it is making the call sync (i get an empty fault in SOAP-UI) and my java client also waits for the response.
    <component name="abcd">
    <implementation.bpel src="abcd.bpel"/>
    <property name="bpel.config.oneWayDeliveryPolicy" many="false" type="xs:string">sync</property>
    <property name="bpel.config.transaction" many="false" type="xs:string">required</property>
    </component>
    As i told that this is a long running process (could easily take 3-4 hours), i cant afford to wait for this (should be fire and forget).
    1) Is there a way, i can make it fire and forget and also stop the recovery using the properties you just told?
    2) If there is no way out, i can remove the throw rollback fault in catch all, but i want the composite instance to be shown as red (i will take care of the rollbacks in db in code). I tried using the terminate activity but that doesn't make it red (like it used to be in 10g). Is there a way to mark the instance as red without throwing an uncaught fault?
    Please let me know. Thanks
    Also regarding the patch, if we apply it, will it still recover the BPEL instance? I mean the BPEL is throwing a rollback fault and is being exactly retried 50 times with a gap of 5 minutes (default settings in em console, not touched at all). Every time it runs it would throw the same fault again (as it reads and deletes a control file, so in successive runs that control file will not be there) leading to rollback error being thrown from catch all during automatic retry.

  • 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>

  • Fault policy does not work when throwing remoteFault in bpel

    Hi
    I have a BPEL-proces in which I throw a remoteFault.
    In the fault-policy there is a condition for this fault
    <faultName xmlns:bpelx="http://schemas.oracle.com/bpel/extension"
    name="bpelx:remoteFault">
    <condition>
    <action ref="ora-java"/>
    </condition>
    </faultName>
    But the fault-policy does not work if I throw this remoteFault in de bpel. But when I invoke another service (which is shutdown), then I get a remoteFault and for this remoteFault the fault-policy works well.
    Any idea why the fault-policy does not work when I throw the remoteFault?
    Regards

    BPEL fault works only on invocation failures.
    Fault management will work based on the remote fault from the remote service, you cannot throw remote fault from bpel and capture that in fault management and process.
    The following are the actions that we can take on faults.
    1. Human Intervention
    2. Rethrow [rethrowFault]
    3. Termination [abort]
    4. Replay Fault [replayScope]
    5. Custom Java Action [javaAction]
    6. Retry [retry]
    Hope this helps !!!
    Thanks,
    Vijay

  • BPEL - Fault Policy Management

    Hi All
    I trying to implement the fault policy management in oracle soa suite 10.1.3.5 and
    I am facing a problem in it.
    I have defined the process level policies in the fault-bindings.xml file as shown below and its not working.
    <faultPolicyBindings>
    <process faultPolicy="NICBPELFaultPolicy">
    <name>mainCalcProcess2</name>
    </process>
    <process faultPolicy="RetryPolicy">
    <name>addMainProcess</name>
    </process>
    </faultPolicyBindings>
    is it a correct way of fault handling?
    Regards
    Senthil R

    Sathish Venkatr... wrote:
    Hi,
    Could you provide me the details of testing this Fault policy.
    You can handle the fault policy at process level and domain level, it looks like you are trying to have fault policy at <font face="tahoma,verdana,sans-serif" size="1" color="#000">Domain</font> level.
    You have defined the Fauilt at domain level by defining in fault-bindings.xml file.
    Have you restarted the server after defining this fault? If yes how are you testing this fault?
    Thanks
    SathishI got more deep understanding about this part, Thanks for your explanation! Nice writing.

  • 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.

  • 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

  • Registering External Fault Policy(s) with a Composite in SOA 11g

    Hi
    I was wondering whether it is possible to register more than one external fault policy with a composite. I have loaded some fault policies into my database backed MDS store. I have added a fault-bindings.xml file locally to teh composite to indicate which components I want to use which policy. this file resembles:
    <composite faultPolicy="bpelSynchronousProcessingFaults"/>
    <component faultPolicy="mediatorSynchronousProcessingFaults">
    <name>MediatorRouting</name>
    </component>
    I have also added to the composite.xml file the respective imports / properties to identify the location of the fault policy files and the fault bindings. These resemble:
    </service>
    <property name="oracle.composite.faultPolicyFile">oramds:/apps/fault-policies/fault-policies-med-sync.xml</property>
    <property name="oracle.composite.faultPolicyFile">oramds:/apps/fault-policies/fault-policies-bpel-sync.xml</property>
    <property name="oracle.composite.faultBindingFile">fault-bindings.xml</property>
    <component name="MediatorRouting">
    For a test I have the BPEL component using one and the mediator component using another, both within the same composite. Depending on the order of the 2 properties shown above, only one is registered. This being the second one.
    Is it possible to register more than one policy in this way? I have been unable to get both working at the same time. Each works independently if I only register one of them. I want keep the fault policies external to the composites to allow them to be re-used appropriately across composites within an SOA project
    My thinking is, in order to be able to have differing policies effecting different components within a composite i'd have thought it would have been possible to define more than one external policy for a composite. However it appears this is not the case as it only registers or atleast works with the last policy in an import. Also placing the files locally within the composite with differing names has no impact.
    Therefore i'm assuming (unless I have configured these incoorectly) there is no option to have multiple fault policies for a composite. Therefore there is no ability to define a different policy per component within a composite
    Kind Regards
    Dave

    Using the fault binding attach your fault policy to particular component. See example below.Use the tag  <component faultPolicy="ServiceFaults">
    <?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">
      <component faultPolicy="ServiceFaults">
      <name>Component1</name>
      <name>Component2</name>
      </component>
      <!-- Below listed component names use polic CRM_SeriveFaults -->
      <component faultPolicy="CRM_ServiceFaults">
      <name>HelloWorld</name>
      <name>ShippingComponent</name>
      <name>AnotherComponent"</name>
      </component>
      <!-- Below listed reference names and port types use polic CRM_ServiceFaults
    -->
      <reference faultPolicy="CRM_ServiceFaults">
      <name>creditRatingService</name>
      <name>anotherReference</name>
      <portType
    xmlns:credit="http://services.otn.com">credit:CreditRatingService</portType>
      <portType
    xmlns:db="http://xmlns.oracle.com/pcbpel/adapter/db/insert/">db:insert_
    plt</portType>
      </reference>
      <reference faultPolicy="test1">
      <name>CreditRating3</name>
      </reference>
    </faultPolicyBindings>

Maybe you are looking for

  • Not able to do Reconcillation with BP.

    Hello SAP Experts,                          Here I'm facing one problem. My clients wants not to cut the TDS amount on transaction level but he wants to cut during payment. So that he can get the complete track report of invoice alongwith gross amoun

  • Adobe air settings manager download.

    Where can I download adobe air settings manager? This link does not work http://airdownload.adobe.com/air/applications/SettingsManager/SettingsManager.air

  • ITunes 10.1 now updated, trying to update contacts on iphone 3

    Hi, I have a friend who has a Powerbook G4 12" and an iphone 3. There are no contacts on the Powerbook, but all the contacts on the iphone. The iphone is currently synced to a PC and they want the contacts on the phone to be transferred to the Powerb

  • Home sharing not working with iMac

    I have been using my iMac to do home sharing for my media on to my Apple TV, lately it shows but won't allow the apple TV to connect to it.  I have the latest updates on my iMac and Apple TV.  If I turn on homesharing on iTunes on my Windows machine

  • HT1338 I have os 10.5.8 which is the next upgrade?

    I have OS  x10.5.8 which is the next upgrade?