Oracle BPEL process manager rollback
I have a empty BPEL process that polls for AQJMS messages using a JMS adapter and then insert the received messages to the DB. Now the problem is, if there is any error w.r.t the DB insert, then it should rollback the message to the source destination i.e., my AQJMS Queue. But it is not happening. using the bpelx:rollback explicitly doesn't seem to help.
Answer:
You need to make it as one transaction. Use JCA-XA transaction. Just like in PL/SQL to make a transaction block we write it inside BEGIN ... END; in BPEL we create a JNDI of XA type (global-transaction handler) and then configure the property name 'transaction' to 'participate' for all partner links which are part of the transaction.
However you need to take care of one thing, if the process is syncronous and you call rollback then it will not show up in BPEL console, since it posting to dehydration db will also be rollbacked.
Read the soa_best_practices_1013x
http://download.oracle.com/technology/tech/soa/soa_best_practices_1013x_drop3.pdf
Check the blog below for example on how to do this.
http://soab2bsahil.blogspot.com/2009/04/rollbacking-ebs-apis-using-bpel.html
Comments