ode-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Andi Abes" <aa...@progress.com>
Subject RE: Question about handling in-out operations
Date Fri, 13 Mar 2009 18:42:32 GMT
The BPEL spec demands of engines to handle messages received by them before the corresponding
receive activity has executed.
This makes sense since it avoids various race conditions and inconsistencies among diff bpel
engines (see quote below).

As such, ODE is correct in holding the message pending, until the receive activity is activated.
Potentially a better modeling approach would be to use a pick activity and an onAlarm as a
means to implement the 10 minute timeout.
An alternative could be to event handlers in scope containing the <wait> sop you can
process the incoming message (even if only to reject it using some application error).

Quote from p.92 of BPEL spec:

Race conditions may occur in a business process execution. Messages that target a particular
process instance may arrive before the corresponding <receive> activity is started.
For example, consider a process that receives a series of messages in a loop where all the
messages use the same correlation. At runtime, the messages will arrive independent of the
iterations of the loop. The fact that the correlation is already initiated, however, should
enable the runtime engine and messaging platform to recognize that these messages are correlated
to the process instance, and handle those messages appropriately. Another example is a process
that may invoke a remote service then initiate a correlation set for an expected callback
message. For a variety of reasons, the callback message may arrive before the corresponding
<receive> activity is started.

> -----Original Message-----
> From: Rafal Rusin [mailto:rafal.rusin@gmail.com]
> Sent: Friday, March 13, 2009 8:40 AM
> To: user@ode.apache.org
> Subject: Question about handling in-out operations
> I have a following process:
> <receive1 operation1 correlationSet1/>
> <reply1/>
> <wait 10min./>
> <receive2 operation2 correlationSet1/>
> <reply2/>
> When I send a message for operation2 during wait, I get timeout.
> Shouldn't it be some fault exception like "no such operation" without
> any delay instead?
> I'm attaching an example with soapUI test case.
> Regards,
> --
> RafaƂ Rusin
> http://www.touk.pl
> http://www.mimuw.edu.pl/~rrusin

View raw message