Thuy,

I'm not aware of any existing support for this. I'm not sure I fully understand the requirements though. If the intent is to redirect a failed invocation to another endpoint then modifying the endpoint for an active process instance seems insufficient. Wouldn't you also need to detect the failure and retry the failed activity? Would you also want all subsequent process instances to use the new endpoint, or would you expect each new instance to try the original ep and fail over as well?

If for some reason you cannot model the error handling in your BPEL process (which would be my first choice), it sounds like you would be better off capturing that logic elsewhere and using a fixed endpoint from BPEL. You could hide your 'real', potentially changing endpoints behind some other routing component (e.g. a camel route if you were running in servicemix).

~Greg



On Tue, 15 Dec 2009 11:16:00 -0500, Song Thuy Nguyen <[email protected]> wrote:

Hi everyone,


I'm quite new to Apache ODE and mailing lists, hoping for your help. I have
posted a similiar question in the user mailing list, but maybe here is a
better place to ask, as it has something to do with extending ODE.


As the title says I'm looking for a way to change service endpoints for BPEL
process instances at runtime. That means that only one instance should be
affected by these changes, not the entire process and the deployment
descriptor. By convention of the project I'm working on, it is not allowed
to write a BPEL-process that looks up service endpoints at a registry
service, put it in an  variable and use it as the dynamic endpoint. The
reason is we want to provide a fault resistant BPEL process execution by
replacing failing or unavailabe service endpoints by working ones with
transparency to the process. So there should be no sign of the "fault
handling" in the BPEL file. Failing services will be detected by a monitor
component, but this is not my part.


I have tried to look into the Management API doc for processes and instances to find a method that can provide a solution, but I had no luck. There are only methods to get and set endpoints on a process-wide level, on a instance
level however, those methods are not available.


It seems to me that the only way to get such a functionality is to extend
the Instance Management API and write those methods myself. If this is
right, can someone please tell me where to start? I think there should be
Java objects representing each BPEL instance, and there are variables
storing the endpoints, so if I change them, I would get the functionality I
need , right?


Or maybe there is already a built-in mechanism to do that but I missed it?


Any help or comment would be appreciated.

Reply via email to