ode-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Tammo van Lessen <tvanles...@gmail.com>
Subject Re: Changing Workflow at runtime
Date Thu, 13 Oct 2011 17:33:04 GMT
Hi Rafael,

this sounds like a typical research project ;) ODE is not designed to
properly support this, since, as you know, allowing adhoc changes to
already running process instances opens a can of worms.

However, here is how it could go:

In ODE, BPEL processes are compiled into a serializable OModel, which is
basically an optimized representation of the process model, each
activity got an id. During runtime, the process model is loaded and when
the process model is started, runtime classes (in most cases the
activity name in uppercase) will be instantiated. These classes
implement the execution semantics of the activities. Eg sequence
compiles to OSequence, which is during runtime evaluated by SEQUENCE.
This basically looks for child activities, gets the first one, creates
an UPPERCASE instance of that and delegates the execution to the virtual
process machine. Once it is completed, the control is given back to
SEQUENCE, which looks for the next activity, creates an UPPERCASE
instance and so on. The object graph of these UPPERCASE classes is
serialized and persisted to make the engine robust. So much for the
theory. If you want to change the process model, it should be possible
to change the OModel in parts that have not yet been processed by the
UPPERCLASS instances. Changing those is probably much more difficult,
since you then may need to change the state of such classes as well.
Basically it depends on your use case, but it could worth a try. No
warranties, however :)

I hope that helps a bit,
  Tammo

On 13.10.2011 15:46, Rafael R. Aschoff wrote:
> Hello all,
> 
> I am not very familiar with the ODE source code and was looking for a way to
> change the workflow during runtime.
> 
> I would like to know if someone has an advice on that, where should I look?
> 
> More precisely, I want to change the internal logic of a BPEL process based
> on some monitored events.
> 
> On a second phase, I would like to change the logic just for a particular
> user instance, which means that future calls to the BPEL process will not
> perceive the changes.
> 
> 
> For what I have seen so far, to change future logic I could try to
> manipulate the output of the ODE BPEL Compiler. I do not know if I could do
> the per user instance, but it seems possible for future executions.
> 
> In order to control the logic per user, I guess I would have to use the
> Process Management API, but I could not find any information of the
> possibility to change the execution instance itself.
> 
> 
> 
> 
> Best regards,

-- 
Tammo van Lessen - http://www.taval.de

Mime
View raw message