if there any possibility for returning the result to the client in the middle of a synchronous BPEL process?
I put the reply component in the middle of BPEL process, but the client still will wait for the whole process completed. I am wondering how the reply mechanism works in BPEL for synchronous.
preguntado el 31 de enero de 12 a las 08:01
Yes, you can place Reply activity and do some other activities after it.
But you have to place Wait activity after Reply to force BPEL engine to actually send the reply message.
Also the Wait activity has to be configured to wait for 3 seconds minimum or the value of MinBPELWait property in the System MBean Browser of Oracle Enterprise Manager Fusion Middleware Control. Otherwise the server will ignore it.
You can have the reply activity anywhere you want to send the response back to the client. Whatever the activities after the reply activity get executed as expected.
One thing you need to make sure is that, only one reply activity can be there for the respective receive activity.
Instead of wait, you can use a dehydrate activity. The concept is that unless the transaction completes, bpel doesn't reply, so you basically need to end the transaction where you use a reply activity. To do that you have to commit the transaction, so that new transaction can begin.
Note: using a wait would slow your bpel process.
in your composite.xml try modifying below properties of your synchronous bpel component, it should be working with out adding dehydration or wait and there should be no wait at client call.
bpel.config.transaction = required bpel.config.oneWayDeliveryPolicy=async.persist
Your best bet would be to add a dehydrate activity after your reply, this will force BPEL to complete the transaction then start a new one.