This blog post is about how to synchronize two databases through BPEL, focusing on transaction, rollback and fault handling.
a project, I’ve encountered a situation where we wanted to migrate from
an old database to a new one. However, in order to gradually move
external systems from the old to the new database, it was required that
both databases would be kept in sync for a limited amount of time. Apart
from the obvious database tools, for example Oracle Golden Gate, this
can be done through the service layer as well and that’s what this
article is about. I will explain how I have done it with a strong focus
on fault handling, since that’s the most complicated part of the deal.
In this case, since keeping things in sync is what we’re aiming for, a
rollback needs to be performed on one database when the other fails to
process the update.
One of the requirements is that it should be
easy to throw the synchronization code away, as it has no place in our
future plans. Another requirement is that the service layer should
return faults in a decent manner.
In order to
enable out-of-the-box rollback functionality, make sure that the data
sources connecting to both databases are XA enabled. As there is plenty
of information about this subject, I will not get into detail about it
in this blog.
Now we will be developing two services:
- SalesOrderBusinessService: a BPEL process that receives messages from a BPM process and forwards them to our integration service
a BPEL process that receives messages from SalesOrderBusinessService
and updates two databases through adapters
We need to make
sure that both services have a fault specified in their wsdl operation
in order to return the recoverable fault. Read the complete article here.
SOA & BPM Partner Community
regular information on Oracle SOA Suite become a member in the SOA
& BPM Partner Community for registration please visit www.oracle.com/goto/emea/soa (OPN account required) If you need support with your account please contact the Oracle Partner Business Center.
Blog Twitter LinkedIn Facebook Wiki