Ah my bad, I overlooked your correlations definition within Pick.

Post creation of the instance the pick onAlarm will trigger after 2
seconds, within which the onMessage should arrive. Either way, the while
loop will run only one iteration and your process instance should complete.

After the instance is completed, if the onMessage is triggered again, ODE
will not reject it. No new instance will be created and the message will be
queued waiting for the first receive to arrive with the same correlating
value that arrived for the onMessage. When the first receive message
arrives a new instance will be created and when it encounters the Pick
onMessage, ODE will check for any queued messages with the same correlating
value and since it finds one the pick completes and thus the instance will
complete.

Does it answer your question.

On Fri, Sep 18, 2015 at 2:47 PM, Sathwik B P <[email protected]> wrote:

> Hi,
>
> Apologise for my late reply.
>
> Would you explain what are you trying to do in your process?
>
> Correlation is initiated in the first receive, but pick-onMessage doesn't
> have a correlation defined. There is no way that your onMessage would be
> routed to the instance.
>
> Which ODE version are you on?
>
> Note: No attachments will come through. You need to embed all your process
> artefacts inline or use something like https://gist.github.com/.
>
> regards,
> sathwik
>
> On Thu, Sep 10, 2015 at 12:50 PM, TMAR Fadwa <[email protected]> wrote:
>
>> Here is my bpel.
>>
>> <!-- tstbpel BPEL Process [Generated by the Eclipse BPEL Designer] -->
>> <!-- Date: Mon Jul 27 14:57:23 CEST 2015 -->
>>
>> <bpel:process name="tstbpel" targetNamespace="
>> http://eclipse.org/bpel/tstbpel";
>>         suppressJoinFailure="yes" xmlns:tns="
>> http://eclipse.org/bpel/tstbpel";
>>         xmlns:bpel="
>> http://docs.oasis-open.org/wsbpel/2.0/process/executable";
>>         xmlns:ns="http://sample.bpel.org/bpel/ShippingOrderAsynchCaller";
>>         xmlns:xsd="http://shippingservice.services.com"; xmlns:ns1="
>> http://www.w3.org/2001/XMLSchema";>
>>         <!-- Import the client WSDL -->
>>         <bpel:import namespace="http://shippingservice.services.com";
>>                 location="1.xsd" importType="
>> http://www.w3.org/2001/XMLSchema";></bpel:import>
>>         <bpel:import location="tstbpelArtifacts.wsdl" namespace="
>> http://eclipse.org/bpel/tstbpel";
>>                 importType="http://schemas.xmlsoap.org/wsdl/"; />
>>
>>         <!--
>> ================================================================= -->
>>         <!-- PARTNERLINKS -->
>>         <!-- List of services participating in this BPEL process -->
>>         <!--
>> ================================================================= -->
>>         <bpel:partnerLinks>
>>                 <!-- The 'client' role represents the requester of this
>> service. It is
>>                         used for callback. The location and correlation
>> information associated with
>>                         the client role are automatically set using
>> WS-Addressing. -->
>>                 <bpel:partnerLink name="client"
>> partnerLinkType="tns:process"
>>                         myRole="process" />
>>                 <bpel:partnerLink name="PartnerLink"
>> partnerLinkType="tns:partner"
>>                         partnerRole="partnerRole"></bpel:partnerLink>
>>         </bpel:partnerLinks>
>>
>>         <!--
>> ================================================================= -->
>>         <!-- VARIABLES -->
>>         <!-- List of messages and XML documents used within this BPEL
>> process -->
>>         <!--
>> ================================================================= -->
>>         <bpel:variables>
>>                 <!-- Reference to the message passed as input during
>> initiation -->
>>                 <bpel:variable name="input"
>> messageType="tns:tstbpelRequestMessage" />
>>
>>                 <!-- Reference to the message that will be sent back to
>> the requester during
>>                         callback -->
>>
>>
>>
>>                 <bpel:variable name="clientRequest"
>> messageType="tns:secondOpRequest"></bpel:variable>
>>                 <bpel:variable name="clientRequest1"
>> messageType="tns:Op3Request"></bpel:variable>
>>                 <bpel:variable name="clientRequest2"
>> messageType="tns:Op4Request"></bpel:variable>
>>
>>                 <bpel:variable name="counter"
>> type="ns1:int"></bpel:variable>
>>                 <bpel:variable name="PartnerLinkRequest1"
>> messageType="ns:onResult"></bpel:variable>
>>         </bpel:variables>
>>
>>         <!--
>> ================================================================= -->
>>         <!-- ORCHESTRATION LOGIC -->
>>         <!-- Set of activities coordinating the flow of messages across
>> the -->
>>         <!-- services integrated within this business process -->
>>         <!--
>> ================================================================= -->
>>         <bpel:correlationSets>
>>                 <bpel:correlationSet name="CorrelationSet"
>>                         properties="tns:id"></bpel:correlationSet>
>>         </bpel:correlationSets>
>>         <bpel:sequence name="main">
>>                 <bpel:sequence name="Sequence">
>>                         <bpel:receive name="receiveOp1"
>> partnerLink="client"
>>                                 portType="tns:tstbpel"
>> operation="initiate" variable="input"
>>                                 createInstance="yes">
>>                                 <bpel:correlations>
>>                                         <bpel:correlation
>> set="CorrelationSet" initiate="yes"></bpel:correlation>
>>                                 </bpel:correlations>
>>                         </bpel:receive>
>>                         <bpel:assign validate="no" name="assign">
>>                                 <bpel:copy>
>>                                         <bpel:from>
>>                                                 <bpel:literal>
>>
>> <tns:OrderShippingResponse xmlns:tns="http://shippingservice.services.com
>> "
>>
>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>
>>
>> <tns:confirmationNo>tns:confirmationNo</tns:confirmationNo>
>>
>> <tns:estimatedDate>tns:estimatedDate</tns:estimatedDate>
>>
>> </tns:OrderShippingResponse>
>>                                                 </bpel:literal>
>>                                         </bpel:from>
>>                                         <bpel:to
>> variable="PartnerLinkRequest1" part="payload"></bpel:to>
>>                                 </bpel:copy>
>>                                 <bpel:copy>
>>                                         <bpel:from part="payload"
>> variable="input">
>>                                                 <bpel:query
>> queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0">
>>                             <![CDATA[tns:input]]>
>>                                                 </bpel:query>
>>                                         </bpel:from>
>>                                         <bpel:to part="payload"
>> variable="PartnerLinkRequest1">
>>                                                 <bpel:query
>> queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0"><![CDATA[xsd:confirmationNo]]></bpel:query>
>>                                         </bpel:to>
>>                                 </bpel:copy>
>>                                 <bpel:copy>
>>                                         <bpel:from part="payload"
>> variable="input">
>>                                                 <bpel:query
>> queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0"><![CDATA[tns:input]]></bpel:query>
>>                                         </bpel:from>
>>                                         <bpel:to part="payload"
>> variable="PartnerLinkRequest1">
>>                                                 <bpel:query
>> queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0"><![CDATA[xsd:estimatedDate]]></bpel:query>
>>                                         </bpel:to>
>>                                 </bpel:copy>
>>                         </bpel:assign>
>>                         <bpel:assign validate="no" name="Assigncounter">
>>                                 <bpel:copy>
>>                                         <bpel:from
>> expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0">
>>                         <![CDATA[0]]>
>>                                         </bpel:from>
>>                                         <bpel:to
>> variable="counter"></bpel:to>
>>                                 </bpel:copy>
>>                         </bpel:assign>
>>                         <bpel:invoke name="InvokePrintService"
>> partnerLink="PartnerLink"
>>                                 operation="onResult"
>> portType="ns:ShippingOrderAsynchCallerCallback"
>>
>> inputVariable="PartnerLinkRequest1"></bpel:invoke>
>>
>>                         <bpel:wait name="WaitFor20Second">
>>                                 <bpel:for><![CDATA['PT15S']]></bpel:for>
>>                         </bpel:wait>
>>                         <bpel:while name="While">
>>                                 <bpel:condition
>> expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0"><![CDATA[$counter<1]]></bpel:condition>
>>                                 <bpel:sequence>
>>                                         <bpel:assign validate="no"
>> name="Assign1">
>>                                                 <bpel:copy>
>>                                                         <bpel:from
>> expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0">
>>                                    <![CDATA[$counter+1]]>
>>                                                         </bpel:from>
>>                                                         <bpel:to
>> variable="counter"></bpel:to>
>>                                                 </bpel:copy>
>>                                         </bpel:assign>
>>
>>                                         <bpel:pick name="Pick">
>>                                                 <bpel:onMessage
>> partnerLink="client" operation="Op3"
>>
>> portType="tns:tstbpel" variable="clientRequest1">
>>                                                         <bpel:sequence
>> name="Sequence1">
>>
>>
>> <bpel:assign validate="no" name="Assign2">
>>
>> <bpel:copy>
>>
>>       <bpel:from>
>>
>>               <bpel:literal>
>>
>>                       <tns:OrderShippingResponse
>>
>>                               xmlns:tns="
>> http://shippingservice.services.com"; xmlns:xsi="
>> http://www.w3.org/2001/XMLSchema-instance";>
>>
>>
>> <tns:confirmationNo>tns:confirmationNo</tns:confirmationNo>
>>
>>
>> <tns:estimatedDate>tns:estimatedDate</tns:estimatedDate>
>>
>>                       </tns:OrderShippingResponse>
>>
>>               </bpel:literal>
>>
>>       </bpel:from>
>>
>>       <bpel:to variable="PartnerLinkRequest1" part="payload"></bpel:to>
>>
>> </bpel:copy>
>>
>> <bpel:copy>
>>
>>       <bpel:from
>> expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0">
>>
>>                                             <![CDATA["op3"]]>
>>
>>       </bpel:from>
>>
>>       <bpel:to part="payload" variable="PartnerLinkRequest1">
>>
>>               <bpel:query
>> queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0"><![CDATA[xsd:confirmationNo]]></bpel:query>
>>
>>       </bpel:to>
>>
>> </bpel:copy>
>>
>> <bpel:copy>
>>
>>       <bpel:from
>> expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0">
>>
>>                                             <![CDATA["op3"]]>
>>
>>       </bpel:from>
>>
>>       <bpel:to part="payload" variable="PartnerLinkRequest1">
>>
>>               <bpel:query
>> queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0"><![CDATA[xsd:estimatedDate]]></bpel:query>
>>
>>       </bpel:to>
>>
>> </bpel:copy>
>>
>> </bpel:assign>
>>
>> <bpel:invoke name="InvokePrintService" partnerLink="PartnerLink"
>>
>> operation="onResult" portType="ns:ShippingOrderAsynchCallerCallback"
>>
>> inputVariable="PartnerLinkRequest1">
>>
>>
>> </bpel:invoke>
>>                                                         </bpel:sequence>
>>
>> <bpel:correlations>
>>
>> <bpel:correlation set="CorrelationSet"
>>
>> initiate="no"></bpel:correlation>
>>
>> </bpel:correlations>
>>                                                 </bpel:onMessage>
>>                                                 <bpel:onMessage
>> partnerLink="client" operation="Op4"
>>
>> portType="tns:tstbpel" variable="clientRequest2">
>>                                                         <bpel:sequence
>> name="Sequence1">
>>
>>
>> <bpel:assign validate="no" name="Assign3">
>>
>> <bpel:copy>
>>
>>       <bpel:from>
>>
>>               <bpel:literal>
>>
>>                       <tns:OrderShippingResponse
>>
>>                               xmlns:tns="
>> http://shippingservice.services.com"; xmlns:xsi="
>> http://www.w3.org/2001/XMLSchema-instance";>
>>
>>
>> <tns:confirmationNo>tns:confirmationNo</tns:confirmationNo>
>>
>>
>> <tns:estimatedDate>tns:estimatedDate</tns:estimatedDate>
>>
>>                       </tns:OrderShippingResponse>
>>
>>               </bpel:literal>
>>
>>       </bpel:from>
>>
>>       <bpel:to variable="PartnerLinkRequest1" part="payload"></bpel:to>
>>
>> </bpel:copy>
>>
>> <bpel:copy>
>>
>>       <bpel:from
>> expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0">
>>
>>                                             <![CDATA["op4"]]>
>>
>>       </bpel:from>
>>
>>       <bpel:to part="payload" variable="PartnerLinkRequest1">
>>
>>               <bpel:query
>> queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0"><![CDATA[xsd:confirmationNo]]></bpel:query>
>>
>>       </bpel:to>
>>
>> </bpel:copy>
>>
>> <bpel:copy>
>>
>>       <bpel:from
>> expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0">
>>
>>                                             <![CDATA["op4"]]>
>>
>>       </bpel:from>
>>
>>       <bpel:to part="payload" variable="PartnerLinkRequest1">
>>
>>               <bpel:query
>> queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0"><![CDATA[xsd:estimatedDate]]></bpel:query>
>>
>>       </bpel:to>
>>
>> </bpel:copy>
>>
>> </bpel:assign>
>>
>> <bpel:invoke name="InvokePrintService" partnerLink="PartnerLink"
>>
>> operation="onResult" portType="ns:ShippingOrderAsynchCallerCallback"
>>
>> inputVariable="PartnerLinkRequest1">
>>
>>
>> </bpel:invoke>
>>                                                         </bpel:sequence>
>>
>> <bpel:correlations>
>>
>> <bpel:correlation set="CorrelationSet"
>>
>> initiate="no"></bpel:correlation>
>>
>> </bpel:correlations>
>>                                                 </bpel:onMessage>
>>
>>                                                 <bpel:onAlarm>
>>                                                         <bpel:scope>
>>
>> <bpel:sequence name="Sequence1">
>>
>> <bpel:assign validate="no" name="Assign4">
>>
>>       <bpel:copy>
>>
>>               <bpel:from>
>>
>>                       <bpel:literal>
>>
>>                               <tns:OrderShippingResponse
>>
>>                                       xmlns:tns="
>> http://shippingservice.services.com"; xmlns:xsi="
>> http://www.w3.org/2001/XMLSchema-instance";>
>>
>>                                       <tns:confirmationNo>tns:confirmationNo
>>
>>                                       </tns:confirmationNo>
>>
>>
>> <tns:estimatedDate>tns:estimatedDate</tns:estimatedDate>
>>
>>                               </tns:OrderShippingResponse>
>>
>>                       </bpel:literal>
>>
>>               </bpel:from>
>>
>>               <bpel:to variable="PartnerLinkRequest1"
>> part="payload"></bpel:to>
>>
>>       </bpel:copy>
>>
>>       <bpel:copy>
>>
>>               <bpel:from
>> expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0">
>>                                            <![CDATA["onAlarm"]]>
>>
>>               </bpel:from>
>>
>>               <bpel:to part="payload" variable="PartnerLinkRequest1">
>>
>>                       <bpel:query
>> queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0"><![CDATA[xsd:confirmationNo]]></bpel:query>
>>
>>               </bpel:to>
>>
>>       </bpel:copy>
>>
>>       <bpel:copy>
>>
>>               <bpel:from
>> expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0">
>>                                                 <![CDATA["onAlarm"]]>
>>
>>               </bpel:from>
>>
>>               <bpel:to part="payload" variable="PartnerLinkRequest1">
>>
>>                       <bpel:query
>> queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0"><![CDATA[xsd:estimatedDate]]></bpel:query>
>>
>>               </bpel:to>
>>
>>       </bpel:copy>
>>
>> </bpel:assign>
>>
>> <bpel:invoke name="InvokePrintService" partnerLink="PartnerLink"
>>
>>       operation="onResult" portType="ns:ShippingOrderAsynchCallerCallback"
>>
>>       inputVariable="PartnerLinkRequest1">
>>
>>
>> </bpel:invoke>
>>
>> </bpel:sequence>
>>                                                         </bpel:scope>
>>
>> <bpel:for><![CDATA['PT2S']]></bpel:for>
>>                                                 </bpel:onAlarm>
>>                                         </bpel:pick>
>>                                         <bpel:wait name="Wait1">
>>
>> <bpel:for><![CDATA['PT0S']]></bpel:for>
>>
>>                                         </bpel:wait>
>>                                 </bpel:sequence>
>>                         </bpel:while>
>>
>>
>>                 </bpel:sequence>
>>
>>         </bpel:sequence>
>> </bpel:process>
>>
>>
>> -----Message d'origine-----
>> De : Sathwik B P [mailto:[email protected]]
>> Envoyé : mercredi 9 septembre 2015 19:05
>> À : [email protected]
>> Objet : Re: question
>>
>> Hi,
>>
>> Attachments will not come through. Embed your bpel inline.
>>
>> regards,
>> sathwik
>>
>> On Wed, Sep 9, 2015 at 8:05 PM, TMAR Fadwa <[email protected]> wrote:
>>
>> > Hi,
>> >
>> > I’m testing the behavior of <pick> <on message> if there are more than
>> > one message that was already sent and the pick has to choose among
>> > several events.
>> >
>> > I want to test with many messages so I do this experiment with a
>> > <while> and a <wait> (before the <while>) to be sure that I received
>> > many messages before entering to the while and executing the pick (I
>> > attached a screen shot of my process).
>> >
>> > By sending only two messages, one to invoke op3 and one to invoke op4,
>> > the process executed the while more than 2 times and each time the
>> > process executed the branches attached to <on op3> and <on op4>.
>> > Normally it must execute twice (one for each received message) and then
>> execute on alarm.
>> > Could anybody give me an explanation of this behavior?
>> >
>> >
>>
>
>

Reply via email to