8 Replies Latest reply on Jun 20, 2012 6:28 PM by user8673275

    How to suppress more than one email message for the same fault.

    user8673275
      Hi,

      i have a AIA process flow, in which i am simulating the subLanguageExecutionFault. when this fault occurs, it calls the AIAAsyncBPELProcess and sends a notification. then the 'throw' rollbacks the message and hence the error bubbles up to the Requestor Transport(mediator). in the Requestor Transport i have configured jca.retry property. so it retries the reqABCS 2 times. because of this everytime the ReqABCS is invoked email notification is sent. please let me know how can i suppress multiple email notification been triggered for the same error.

      Thanks,
      Suganth.R
        • 1. Re: How to suppress more than one email message for the same fault.
          791885
          Hi Suganth,

          I would not use the jca.retry property at all. Instead use fault policies in which you can define for which fault you want to retry. In case of subLanguageExecutionFault you probably don't want to retry as the error will occur again. Your probably only want to retry in case of binding fault. Often people also retry on remote fault. Please note that fault policies are only triggered invoking a service. Please see:

          http://docs.oracle.com/cd/E21764_01/integration.1111/e10224/med_faulthandling.htm

          and

          Chapter 12.4 Using the Fault Management Framework of:

          http://docs.oracle.com/cd/E12839_01/integration.1111/e10224/bp_faults.htm

          Thanks

          Sander
          • 2. Re: How to suppress more than one email message for the same fault.
            user8673275
            Hi Sander,

            Thanks for your reply.

            Sorry i am not retrying for sublanguageExecutionfault.

            What i was saying is, lets say example i have the following flow:

            ReqTransport(Mediator FTPAdapter Service - ReadFile) ---> ReqABCS (BPEL Webservice which calls EBS Service) etc..

            In my ReqABCS i have catch block defined for 'sublanguageExecutionfault' which invokes AIAAsyncErrorHandlingBPELProcess and then a throw activity to throw the error back to caller and also to make the instance faulted. Now at runtime when a sublanguageExecutionfault occurs, it invokes the AIAAsyncErrorHandlingBPELProcess which sends an email notification and rollback the transaction.

            hence the error bubbles to ReqTransport service. The ReqTransport service rollback the transaction and the FTP adapter retries to read the file and invoke the ReqABCS. For every call of the ReqABCS the email notification is send. This caused multiple notification for the same file/ data with new Instance Id.

            please suggest how you handle such scenario.
            • 3. Re: How to suppress more than one email message for the same fault.
              791885
              Hi,

              Disable the retry. An other option is when catching the fault not to return it but to close the instance in the ReqABCS service.

              Thanks

              Sander
              • 4. Re: How to suppress more than one email message for the same fault.
                user8673275
                The adapter consider this as retriable error and hence it retries infinitely. so i have set the jca.retry limit to retry only for a specified number of time.

                do you know is there a way to disable retry?

                I didnt get what you mean by this

                " An other option is when catching the fault not to return it but to close the instance in the ReqABCS service".

                can you please explain in detail?

                Thanks.
                • 5. Re: How to suppress more than one email message for the same fault.
                  791885
                  Hello,

                  Try to set the jca.retry to 0.

                  " An other option is when catching the fault not to return it but to close the instance in the ReqABCS service".

                  What I mean in the ReqABCS BPEL process you have defined a catch all block to handly unexpected errors (e.g. subExecutionLanguage). Instead of throwing or replying the fault from the catch all block you can simple just terminiate your instance.

                  I am not mistaking then you should also be able to define rejection handlers on the inbound adapter to care of errored messages or use fault policies. See for more information:

                  http://docs.oracle.com/cd/E23943_01/integration.1111/e10231/life_cycle.htm#CIAIICJJ, chapter 2.21 Error Handling.

                  Thanks

                  Sander
                  • 6. Re: How to suppress more than one email message for the same fault.
                    user8673275
                    hi,

                    We cant set the jca.retry.count to 0. it should be a positive integer. :(

                    Regarding using the terminate action, i would not be interested in this approach because some interfaces uses the terminate action to stop the processing of the message. so i will not be able to differentiate between normal terminate and terminated because of error without opening the instance details (audit trail).

                    I was looking for some better approach when all the composites(ReqTransport, ReqABCS, EBS, ProvABCS & ProvTransport) participate in the global transaction.

                    Thanks.
                    • 7. Re: How to suppress more than one email message for the same fault.
                      791885
                      Hi,

                      The FTP adapter is a non-transactional adapter. Please be aware that using global transaction will rollback the complete transaction. Please read for more information:

                      http://docs.oracle.com/cd/E21764_01/integration.1111/e10231/life_cycle.htm#CIACFIFB

                      I think fault policies would be a good option for you.

                      Good luck!!

                      Sander
                      • 8. Re: How to suppress more than one email message for the same fault.
                        user8673275
                        Thanks for the reply.

                        We have the fault policy configured. but for the non-partner link error fault policy will not be called. More than one email goes in case of error that falls under catch all fault or sub language fault.

                        so still not able to figure out a good option :)

                        Edited by: user8673275 on Jun 20, 2012 11:28 AM