ode-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Alexander Logvinov <alogvi...@softech.ru>
Subject event handlers and conflictingReceive fault
Date Wed, 01 Aug 2007 18:10:58 GMT
Hello,
I am using the JBI distribution of ODE 1.1-SNAPSHOT (July 31) with 
Servicemix 3.1.1 and have a problem with an event handler in the local 
scope inside the main sequence.

My event handler uses correlation set that is initialized in an <invoke> 
activity after the process has already been instantiated so it cannot 
belong to the global process scope. The process structure can be roughly 
described as the following:
1. receive message and instantiate process
2. make a call to a web service and initialize the correlation set
3. enter the local scope with several event handlers that use that 
correlation set.
    3.a. the scope activity sequence contains <receive> activity that 
waits for a message, so my event handlers will be active until a special 
message is received
4. end process

Q1: Is it a correct process structure to get the behavior described in 3.a.?

I have created a sample process based on the HelloWorld2 example but my 
event handlers do not work.
My sample process is slightly simpler than I described above (it 
initializes correlation set in the main <receive> activity instead of 
<invoke> and uses <wait> activity to define the scope lifetime instead 
of waiting for a message)
In the log I often see messages like the following:

21:48:29,323 | DEBUG | pool-2-thread-1 | BpelProcess              | 
.engine.BpelRuntimeContextImpl  196 | ProcessImpl completed with fault 
'{http://schemas.xmlsoap.org/ws/2004/03/business-process/}conflictingReceive'
    and
21:48:29,323 | WARN  | btpool0-2  | jetty                    | 
ervicemix.http.jetty.JCLLogger   93 | /Callback/
java.lang.Exception: 
org.apache.ode.jbi.msgmap.MessageTranslationException: Unmapped Fault : 
{http://schemas.xmlsoap.org/ws/2004/03/business-process/}conflictingReceive: 
null


... but sometimes my event handler works. For example I've got the 
following results for a test run using SoapUI:
1. send a message to instantiate process passing it some correlation value
2. send a callback with the previous value - OK - got the response (but 
sometimes I've got the conflictingReceive fault here)
3. send another callback message to this process instance and failed to 
get a response
4. instantiate another process instance with different correlation value
5. send callback to the second instance - FAIL with conflictingReceive fault

Q2. Is it a correct behavior? I thought that an event handler in a 
process instance can handle as many messages as it can until it's scope 
become inactive.

Thanks
Alexander

PS: my sample bpel process is attached



Mime
View raw message