4 Replies Latest reply on Nov 19, 2009 4:44 AM by anvv sharma

    BPEL Transaction Rollback.



      I have done the following things for transaction Roll back.. but the instance is not showing after rolling back the transaction? How I can get the instance?

      Create a Empty BPEL Process AQRollbackProcess.
      Copy the Schema File that contains element to be dequeued from the AQ into the bpel folder (Dequeue.xsd).
      Drop a AQ adapter partner link service and create a Dequeue operation.
      Provide the JNDI name of the XA datasource that connects to the schema where the Queue is created
      Provide the input schema (from the xsd file imported into the project say inputSehema.xsd) of the message to be dequeued using the AQ Adapter.
      Add a recieve operation to the BPEL Process linking the input dequeued from AQ partner Link.
      Click on the Activate Instance checkbox in the recieve Operation.
      Edit the WSDL file created by the AQ adapter Partner link such chat the dequeue operation is a request Response Type.
      Add a Reply Activity for the Process and link it with the AQ Adapter Partner.
      Now the BPEL Process would reflect a Request Response Template.
      Do the necessary Business Process Operations between the Request and Response.
      Throw a ([http://schemas.oracle.com/bpel/extension]) rollback fault in order to perform a rollback
      Edit the bpel.xml file to make the process confirm to Global Transaction
      For all partners that need to be part of the Global transaction add the property Transaction and set its value to participate.


        • 1. Re: BPEL Transaction Rollback.
          charles poulsen - oracle
          Depends on your process. Sounds like you have designed a synchronous (request / reply) transient (no breakpoints) process.

          If synchronous ( with no breakpoint activities) process executes a rollback, you will not ever see anything in the console. The reason for this, is that the BPEL Process is executed in the clients thread. Any rollback will cause dehydration not to occur, and the client will receive an error message. It is up to the client to handle the error. Synchronous transient processes will not show up in the console, as no data was ever committed to the database. The console only displays data that is in the database (and committed).

          The behavior for processes that have been designed as asyncronous and/or durable is different... if you need to see something in the console, you may need to think about redesigning your process.

          Do you NEED to see something in the console? Or are you just expecting to?


          Edited by: Charles Poulsen on Aug 28, 2008 7:02 AM
          • 2. Re: BPEL Transaction Rollback.
            I am unable to rollback the dbtransactions.
            some times it is working and some times not!!!!
            I am using one file read and six DB adapters to insert data into tables.
            I am using the transaction=participate at global level.
            I am using two scopes (total three the one including the main) in the first one receive activity is there and in the same scope i dragged the second scope and kept all DB adapters in that.
            Now i am catching exceptions using catchAll and throwing bpelx:rollback in the second scope and catching the rolback in first scope and compensating the activities done in the second scope.

            It is not working..
            Plz provide me with the consistent solution !!!!

            • 3. Re: BPEL Transaction Rollback.
              anvv sharma

              i am facing the same problem does anybody have the solution

              anvv sharma