Can any one please help me in the design of this BPEL Process.
1) Consumer invokes the BPEL. BPEL validates the XML and sends an acknowledgement to the consumer. After sending an acknowledgment its the responsibility for the BPEL to deliver the message to the target service. So, whenever the target service is down or when the target sends out an negative acknowledgement, its BPEL responsibility to deliver the message. Can anyone please help me how to structure the BPEL Process.
One way to deal with the remote exceptions, and re-try the same call several times, every N seconds, is to use the Fault Management Framework. Within the framework, u can specify if a given Exception happens, u will handle it in a special way.
Pls take a look to this documentation http://docs.oracle.com/cd/E17904_01/integration.1111/e10224/bp_faults.htm
If the Target Service responds with a business error, then u need to read it within the bpel process, and manage it , in the way u need it.
Thank for your reply. Actually my business requirement is that when ever we are not able to deliver the message to the target service. The message should not be lost. We should redeliver the message at a later point of time when the target service is up and running.
Thanks for your reply.
The major concern is that there will be many transactions per seconds. So when the target system gets up again its not manually possible to recover all the transactions from the em console. Is there any alternative design approach
We can configure Automatic recovery `for BPEL instances that failed in invoke,callback or any other time bound activities ( like wait , onAlarm in pick etc..)which failed to execute on the threshhold time.
In your case, lets say your code( instance) is calling target service via invoke and failed due to some error ( network error) and like wise multiple instances ( multiple transactions) failed. In this case, the automatic recovery will recover all the transactions that failed based on your recovery schedule. Infact you can set properties to limit maximum number of time as message can be submitted for recovery (MaxRecoverAttempt - property available in Mbean section for BPEL) and also maxMessageRaiseSize to some value to limit total number of messages per activity per each recovery.
For more clarity. Refer - http://docs.oracle.com/cd/E25054_01/admin.1111/e10226/bp_config.htm