Working with WSO2 BPS 3.6.0 - we have a service which notifies a running BPEL process about an event.
Util the process is running, it is working great (using the correlation). But when the process is already completed, the request doesn't get any response. I'm ok if an exception could be raised, but getting no response whatsoever is annoying. Is there a way to fail quickly if there's no (active) instance with the specific correlation?
Edit: effectively the receive, pick and onEvent activities behave the same way
Thank you in advance
Apache ODE is designed to enqueue incoming messages that arrive early.
Example: Process
Receive1 -> Receive2 -> Receive3 -> Reply3
Receive1: Creates an instance and initiates the correlation.
Receive2: Instance is awaiting for the message to arrive.
But, message on Receive3 arrives early before Receive2 and hence gets enqueued. Since the following activity is a Reply3, it's a synchronous call and the channel will timeout waiting for the response.
Once the Receive2 arrives, the engines sees that message for Receive3 has already arrived and completes the instance.
Now if another message arrives on Receive3 with the same correlated value, it gets enqueued again for future consumption on a new instance that would be created with the same correlation value. Hence No errors will be reported.
Note: This is the behaviour of Apache ODE, unless WSO2 has changed this behavior.