You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@ode.apache.org by dawg <zo...@gmail.com> on 2010/01/07 21:59:41 UTC

Parallel Flow Question

Hi,

I wonder how can I express in BPEL the following:

I have two parallel flows that are joined at some point. They should be
executed in parallel, however, if one of them reached the end (where they
should be joined) then the process flow should not wait for the other
sequence to end, but carry on from the joint point. 

The specific use case I have is this: on the primary sequence I have my
business logic, where on the parallel I have a receive activity that listens
to a callback that may trigger a set of other activities. However if the
business logic reached the join point, then even if a callback message has
been received and started its processing, it should be dropped and the
process should continue from the join point. 

The way I wrote it now, I'm using flow activity, where one sequence (the
primary) is the business logic which completes, and the other (the
secondary) begins with a receive activity, which is never sent and therefore
the process gets stuck.

Is there a way to express that with BPEL?

Thanks,
Dawg
-- 
View this message in context: http://old.nabble.com/Parallel-Flow-Question-tp27066915p27066915.html
Sent from the Apache Ode User mailing list archive at Nabble.com.


Re: Parallel Flow Question

Posted by dawg <zo...@gmail.com>.
As my question is a bit different now, I'm moving it to a new thread to match
the different subject. I created the simplest process I could using onEvent
with correlation, and unless I'm misusing it, it doesn't work with ode 2.0. 

See
http://old.nabble.com/Correlation-not-working-on-ODE2--%28or-am-I-using-it-incorrectly...%29-td27108428.html

Thanks,
Dawg


dawg wrote:
> 
> It sounds right. I tried it, but for some reason I'm not getting the scope
> associated with the message invoked when I send the message although
> correlation is setup - possibly the correlation is not setup correctly. 
> 
> This is the message I'm sending:
> 
> <soapenv:Envelope
> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
> xmlns:med="http://j2ee.netbeans.org/wsdl/MediaCompositeWsdl">
>    <soapenv:Header/>
>    <soapenv:Body>
>       <med:SwitchRendererOperation>
>          <pid>957</pid>
>          <deviceName>some device</deviceName>
>       </med:SwitchRendererOperation>
>    </soapenv:Body>
> </soapenv:Envelope>
> 
> Here's what I see in the log when I send the message that is in the
> relevant onEvent:
> 
> DEBUG - GeronimoLog.debug(66) | The system is checking for the operation
> using the following WSAAction: 
> DEBUG - GeronimoLog.debug(66) | Checking for Operation using SOAP message
> body's first child's local name : SwitchRendererOperation
> DEBUG - GeronimoLog.debug(66) | Found operation
> org.apache.axis2.description.InOnlyAxisOperation@fb8048
> DEBUG - GeronimoLog.debug(66) | Received one-way message for
> SwitchRendererService.{http://j2ee.netbeans.org/wsdl/MediaCompositeWsdl}SwitchRendererOperation
> DEBUG - GeronimoLog.debug(66) | ODE routed to operation Operation:
> name=SwitchRendererOperation
> parameterOrder=[pid, deviceName]
> style=ONE_WAY,0
> Input: name=input1
> Message:
> name={http://j2ee.netbeans.org/wsdl/MediaCompositeWsdl}SwitchRendererOperationRequest
> Part: name=pid
> typeName={http://www.w3.org/2001/XMLSchema}string
> Part: name=deviceName
> typeName={http://www.w3.org/2001/XMLSchema}string from service
> {http://j2ee.netbeans.org/wsdl/MediaCompositeWsdl}SwitchRendererService
> DEBUG - GeronimoLog.debug(66) | Invoking ODE using MEX
> {MyRoleMex#hqejbhcnphr4w6489grb1j [Client null] calling
> {http://j2ee.netbeans.org/wsdl/MediaCompositeWsdl}SwitchRendererService.SwitchRendererOperation(...)}
> DEBUG - GeronimoLog.debug(66) | Message content:  <?xml version="1.0"
> encoding="UTF-8"?>
> <message><deviceName
> xmlns:med="http://j2ee.netbeans.org/wsdl/MediaCompositeWsdl"
> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">XBMC: Media
> Renderer (192.168.1.5)</deviceName><pid
> xmlns:med="http://j2ee.netbeans.org/wsdl/MediaCompositeWsdl"
> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">957</pid></message>
> DEBUG - GeronimoLog.debug(66) | invoke() EPR= null ==>
> ODEProcess[{http://enterprise.netbeans.org/bpel/MediaComposite1/MediaComposite1}MediaComposite1-1]
> DEBUG - GeronimoLog.debug(66) | INPUTMSG: 70.SwitchRendererOperation: MSG
> RCVD keys=[{CorrelationKey setId=66, values=[957]}] mySessionId=null
> partnerSessionId=null
> DEBUG - GeronimoLog.debug(66) | INPUTMSG: 70.SwitchRendererOperation:
> SAVING to DB (no match) 
> DEBUG - GeronimoLog.debug(66) | schedulingRunnable for process
> {http://enterprise.netbeans.org/bpel/MediaComposite1/MediaComposite1}MediaComposite1-1:
> org.apache.ode.bpel.engine.UnreliableMyRoleMessageExchangeImpl$2@4e32d5
> DEBUG - GeronimoLog.debug(66) | Releasing mex hqejbhcnphr4w6489grb1j
> 
> Now, 957 is the right process id, therefore I suspect that I'm doing
> something wrong with the correlation, but really not sure about it.
> 
>  http://old.nabble.com/file/p27074760/MediaComposite1.bpel
> MediaComposite1.bpel 
>  http://old.nabble.com/file/p27074760/MediaCompositeWsdl.wsdl
> MediaCompositeWsdl.wsdl 
> 
> Thanks,
> Dawg.
> 
> 
> Tammo van Lessen wrote:
>> 
>> Hi,
>> 
>> On 07.01.2010 21:59, dawg wrote:
>>> The specific use case I have is this: on the primary sequence I have my
>>> business logic, where on the parallel I have a receive activity that
>>> listens
>>> to a callback that may trigger a set of other activities. However if the
>>> business logic reached the join point, then even if a callback message
>>> has
>>> been received and started its processing, it should be dropped and the
>>> process should continue from the join point. 
>> 
>> What about wrapping your business logic in a scope and attaching an
>> event handler to it, with an onMessage element for the call back that
>> handles that particular case? When the business logic is done, the scope
>> is completed and the event handler discarded.
>> 
>> How does that sound?
>> 
>> Tammo
>> 
>> -- 
>> Tammo van Lessen - http://www.taval.de
>> 
>> 
> 
> 

-- 
View this message in context: http://old.nabble.com/Parallel-Flow-Question-tp27066915p27108447.html
Sent from the Apache Ode User mailing list archive at Nabble.com.


Re: Parallel Flow Question

Posted by dawg <zo...@gmail.com>.
It sounds right. I tried it, but for some reason I'm not getting the scope
associated with the message invoked when I send the message although
correlation is setup - possibly the correlation is not setup correctly. 

This is the message I'm sending:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:med="http://j2ee.netbeans.org/wsdl/MediaCompositeWsdl">
   <soapenv:Header/>
   <soapenv:Body>
      <med:SwitchRendererOperation>
         <pid>957</pid>
         <deviceName>some device</deviceName>
      </med:SwitchRendererOperation>
   </soapenv:Body>
</soapenv:Envelope>

Here's what I see in the log when I send the message that is in the relevant
onEvent:

DEBUG - GeronimoLog.debug(66) | The system is checking for the operation
using the following WSAAction: 
DEBUG - GeronimoLog.debug(66) | Checking for Operation using SOAP message
body's first child's local name : SwitchRendererOperation
DEBUG - GeronimoLog.debug(66) | Found operation
org.apache.axis2.description.InOnlyAxisOperation@fb8048
DEBUG - GeronimoLog.debug(66) | Received one-way message for
SwitchRendererService.{http://j2ee.netbeans.org/wsdl/MediaCompositeWsdl}SwitchRendererOperation
DEBUG - GeronimoLog.debug(66) | ODE routed to operation Operation:
name=SwitchRendererOperation
parameterOrder=[pid, deviceName]
style=ONE_WAY,0
Input: name=input1
Message:
name={http://j2ee.netbeans.org/wsdl/MediaCompositeWsdl}SwitchRendererOperationRequest
Part: name=pid
typeName={http://www.w3.org/2001/XMLSchema}string
Part: name=deviceName
typeName={http://www.w3.org/2001/XMLSchema}string from service
{http://j2ee.netbeans.org/wsdl/MediaCompositeWsdl}SwitchRendererService
DEBUG - GeronimoLog.debug(66) | Invoking ODE using MEX
{MyRoleMex#hqejbhcnphr4w6489grb1j [Client null] calling
{http://j2ee.netbeans.org/wsdl/MediaCompositeWsdl}SwitchRendererService.SwitchRendererOperation(...)}
DEBUG - GeronimoLog.debug(66) | Message content:  <?xml version="1.0"
encoding="UTF-8"?>
<message><deviceName
xmlns:med="http://j2ee.netbeans.org/wsdl/MediaCompositeWsdl"
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">XBMC: Media
Renderer (192.168.1.5)</deviceName><pid
xmlns:med="http://j2ee.netbeans.org/wsdl/MediaCompositeWsdl"
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">957</pid></message>
DEBUG - GeronimoLog.debug(66) | invoke() EPR= null ==>
ODEProcess[{http://enterprise.netbeans.org/bpel/MediaComposite1/MediaComposite1}MediaComposite1-1]
DEBUG - GeronimoLog.debug(66) | INPUTMSG: 70.SwitchRendererOperation: MSG
RCVD keys=[{CorrelationKey setId=66, values=[957]}] mySessionId=null
partnerSessionId=null
DEBUG - GeronimoLog.debug(66) | INPUTMSG: 70.SwitchRendererOperation: SAVING
to DB (no match) 
DEBUG - GeronimoLog.debug(66) | schedulingRunnable for process
{http://enterprise.netbeans.org/bpel/MediaComposite1/MediaComposite1}MediaComposite1-1:
org.apache.ode.bpel.engine.UnreliableMyRoleMessageExchangeImpl$2@4e32d5
DEBUG - GeronimoLog.debug(66) | Releasing mex hqejbhcnphr4w6489grb1j

Now, 957 is the right process id, therefore I suspect that I'm doing
something wrong with the correlation, but really not sure about it.

http://old.nabble.com/file/p27074760/MediaComposite1.bpel
MediaComposite1.bpel 
http://old.nabble.com/file/p27074760/MediaCompositeWsdl.wsdl
MediaCompositeWsdl.wsdl 

Thanks,
Dawg.


Tammo van Lessen wrote:
> 
> Hi,
> 
> On 07.01.2010 21:59, dawg wrote:
>> The specific use case I have is this: on the primary sequence I have my
>> business logic, where on the parallel I have a receive activity that
>> listens
>> to a callback that may trigger a set of other activities. However if the
>> business logic reached the join point, then even if a callback message
>> has
>> been received and started its processing, it should be dropped and the
>> process should continue from the join point. 
> 
> What about wrapping your business logic in a scope and attaching an
> event handler to it, with an onMessage element for the call back that
> handles that particular case? When the business logic is done, the scope
> is completed and the event handler discarded.
> 
> How does that sound?
> 
> Tammo
> 
> -- 
> Tammo van Lessen - http://www.taval.de
> 
> 

-- 
View this message in context: http://old.nabble.com/Parallel-Flow-Question-tp27066915p27074760.html
Sent from the Apache Ode User mailing list archive at Nabble.com.


Re: Parallel Flow Question

Posted by Tammo van Lessen <tv...@gmail.com>.
Hi,

On 07.01.2010 21:59, dawg wrote:
> The specific use case I have is this: on the primary sequence I have my
> business logic, where on the parallel I have a receive activity that listens
> to a callback that may trigger a set of other activities. However if the
> business logic reached the join point, then even if a callback message has
> been received and started its processing, it should be dropped and the
> process should continue from the join point. 

What about wrapping your business logic in a scope and attaching an
event handler to it, with an onMessage element for the call back that
handles that particular case? When the business logic is done, the scope
is completed and the event handler discarded.

How does that sound?

Tammo

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