ode-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Vinay Vijay <vinay.vi...@altair.com>
Subject RE: Receive activities inside a Flow activity
Date Thu, 05 Nov 2015 07:25:30 GMT
Hi Sathwik,

                Find below the assign snippet from the bpel. I am addressing it with namespace
'ns3' which is defined at the beginning of the bpel.



<copy>

       <from>

              <literal xml:space="preserve">

                     <ns3:initiate>

                           <ns3:in></ns3:in>

                     </ns3:initiate>

              </literal>

       </from>

       <to>

              $firstAsyncInvoke.parameters

       </to>

</copy>

<copy>

  <from variable="correlationVar"/>

  <to>$firstAsyncInvoke.parameters/ns3:in</to>

</copy>



-----------------------------------------------------------------------------------



I am pasting the entire bpel below for quick reference



<?xml version="1.0" encoding="UTF-8"?>

<process exitOnStandardFault="yes" name="FlowParallelInvoke"

       targetNamespace="http://www.example.org/FlowParallelInvoke/"

       xmlns="http://docs.oasis-open.org/wsbpel/2.0/process/executable"

    xmlns:tns="http://www.example.org/FlowParallelInvoke/"

       xmlns:ns0="http://www.example.org/wsdl/FlowParallelInvoke/"

    xmlns:ns1="http://www.example.org/FirstAsync/"

       xmlns:ns2="http://www.example.org/SecondAsync/"

    xmlns:ns3="http://www.example.org/xsd/FirstAsync/"

       xmlns:ns4="http://www.example.org/xsd/SecondAsync/"

    xmlns:xs="http://www.w3.org/2001/XMLSchema"

    xmlns:ode="http://www.apache.org/ode/type/extension"

    queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0"

    expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0">



       <import namespace="http://www.example.org/SecondAsync/" location="SecondAsync.wsdl"
importType="http://schemas.xmlsoap.org/wsdl/"></import>

       <import namespace="http://www.example.org/FirstAsync/" location="FirstAsync.wsdl"
importType="http://schemas.xmlsoap.org/wsdl/"></import>

       <import importType="http://schemas.xmlsoap.org/wsdl/" location="FlowParallelInvoke.wsdl"
namespace="http://www.example.org/wsdl/FlowParallelInvoke/" />



       <partnerLinks>

              <partnerLink name="bpelProcessPartner" partnerLinkType="ns0:FlowParallelInvoke"

            myRole="FlowParallelInvokeProvider"></partnerLink>

              <partnerLink name="firstAsyncPartner" partnerLinkType="ns1:FirstAsyncLinkType"
myRole="FirstCallbackRole"

                     partnerRole="FirstAsyncRole" initializePartnerRole="yes"></partnerLink>

              <partnerLink name="secondAsyncPartner"   partnerLinkType="ns2:SecondAsyncLinkType"
myRole="SecondCallbackRole"

                     partnerRole="SecondAsyncRole" initializePartnerRole="yes"></partnerLink>

       </partnerLinks>

       <variables>

              <variable name="initiateProcessRequest"

                     messageType="ns0:initiateProcessRequest" />

              <variable name="firstAsyncInvoke" messageType="ns1:initiateRequest">

              </variable>

              <variable name="firstAsyncCallback" messageType="ns1:callbackRequest"></variable>

              <variable name="secondAsyncInvoke" messageType="ns2:initiateRequest"></variable>

              <variable name="secondAsyncCallback" messageType="ns2:callbackRequest"></variable>

        <variable name="correlationVar" type="xs:integer"></variable>

        <variable name="executionFlowVarSeq1" type="xs:string"></variable>

        <variable name="executionFlowVarSeq2" type="xs:string"></variable>



       </variables>

       <correlationSets>

              <correlationSet name="inCorrelation" properties="ns1:firstin"></correlationSet>

        <correlationSet name="inCorrelation1" properties="ns2:secondin"></correlationSet>

       </correlationSets>

       <sequence name="MainSequence">





              <receive name="Receive" partnerLink="bpelProcessPartner"

                     operation="initiateProcess" portType="ns0:FlowParallelInvoke"

                     variable="initiateProcessRequest" createInstance="yes"></receive>

              <assign name="Assign">

            <copy>

                <from>$ode:pid</from>

                <to>$correlationVar</to>

            </copy>

                     <copy>

                           <from>

                                  <literal xml:space="preserve">

                        <ns3:initiate>

                            <ns3:in></ns3:in>

                        </ns3:initiate>

                    </literal>

                           </from>

                           <to>

                    $firstAsyncInvoke.parameters

                           </to>

                     </copy>

                     <copy>

                           <from>

                                  <literal xml:space="preserve">

                        <ns4:initiate>

                            <ns4:in></ns4:in>

                        </ns4:initiate>

                    </literal>

                           </from>

                           <to>

                    $secondAsyncInvoke.parameters

                           </to>

                     </copy>

              <copy>

                <from variable="correlationVar"/>

                <to>$firstAsyncInvoke.parameters/ns3:in</to>

              </copy>

              <copy>

                <from variable="correlationVar"/>

                <to>$secondAsyncInvoke.parameters/ns4:in</to>

              </copy>

              </assign>

              <flow name="FlowParallelInvokeReceive">

                     <sequence name="Sequence1">



                           <invoke name="Invoke1" partnerLink="firstAsyncPartner" operation="initiate"
portType="ns1:FirstAsync" inputVariable="firstAsyncInvoke">

                                  <correlations>

                                         <correlation set="inCorrelation" initiate="yes"></correlation>

                                  </correlations>

                           </invoke>





                <assign name="assignexecutionFlowVarSeq1-to1">

                    <copy>

                        <from>"1"</from>

                        <to>$executionFlowVarSeq1</to>

                    </copy>

                </assign>



                <wait name="Wait1">

                    <for>'PT1S'</for>

                </wait>



                           <receive name="Receive1" partnerLink="firstAsyncPartner" operation="callback"
portType="ns1:FirstCallbackSOAP" variable="firstAsyncCallback">

                                  <correlations>

                                         <correlation set="inCorrelation" initiate="no"></correlation>

                                  </correlations>

                           </receive>



                <assign name="assignexecutionFlowVarSeq1-to2">

                    <copy>

                        <from>"2"</from>

                        <to>$executionFlowVarSeq1</to>

                    </copy>

                </assign>



                     </sequence>

                     <sequence name="Sequence2">

                           <invoke name="Invoke2" partnerLink="secondAsyncPartner"    
  operation="initiate" portType="ns2:SecondAsync" inputVariable="secondAsyncInvoke">

                                  <correlations>

                                         <correlation set="inCorrelation1" initiate="yes"></correlation>

                                  </correlations>

                           </invoke>





                <assign name="assignexecutionFlowVarSeq2-to1">

                    <copy>

                        <from>"1"</from>

                        <to>$executionFlowVarSeq2</to>

                    </copy>

                </assign>



                <wait name="Wait2">

                    <for>'PT1S'</for>

                </wait>



                           <receive name="Receive2" partnerLink="secondAsyncPartner" operation="callback"
portType="ns2:SecondCallbackSOAP" variable="secondAsyncCallback">

                                  <correlations>

                                         <correlation set="inCorrelation1" initiate="no"></correlation>

                                  </correlations>

                           </receive>



                <assign name="assignexecutionFlowVarSeq2-to2">

                    <copy>

                        <from>"2"</from>

                        <to>$executionFlowVarSeq2</to>

                    </copy>

                </assign>



                     </sequence>

              </flow>

       </sequence>

</process>



Regards,

Vinay



-----Original Message-----
From: Sathwik B P [mailto:sathwik.bp@gmail.com]
Sent: Thursday, November 05, 2015 12:28 PM
To: user@ode.apache.org
Subject: Re: Receive activities inside a Flow activity



The input xml has a namespace for the "in" element and you are probably trying to query for
"in" element without using that namespace and hence the selection failure exception.



You might check your correlation definition.



On Thu, Nov 5, 2015 at 11:04 AM, Vinay Vijay <vinay.vijay@altair.com<mailto:vinay.vijay@altair.com>>
wrote:



> Hi Sathwik,

>

>                 I have taken the process and modified the same so that

> it can deploy and run in our environment. However I am getting the

> following selection failure errors.

>

>

>

> 115821 [ODEServer-1] ERROR org.apache.ode.bpel.runtime.INVOKE  -

> org.apache.ode.bpel.common.FaultException: No results for expression: 'in'

> against '<?xml version="1.0" encoding="UTF-8"?>

>

> <initiate xmlns="http://www.example.org/xsd/FirstAsync/">

>

>         <ns3:in xmlns:ns3="http://www.example.org/xsd/FirstAsync/

> ">500</ns3:in>

>

> </initiate>'

>

>

>

> I have uploaded the process archive into google drive at the following

> location -

> https://drive.google.com/file/d/0B7AACAopX_yxcTVhNWZ0b0VYSDQ/view?usp=

> sharing

>

>

>

> Can you please inspect the files and see if something is missing?

>

>

>

> Regards,

>

> Vinay

>

>

>

> -----Original Message-----

> From: Sathwik B P [mailto:sathwik.bp@gmail.com]

> Sent: Wednesday, October 07, 2015 12:25 AM

> To: user@ode.apache.org<mailto:user@ode.apache.org>

> Subject: Re: Receive activities inside a Flow activity

>

>

>

> Hi,

>

>

>

> I have packaged a process that has a flow with 2 sequences containing

> invoke(one-way)->assign->wait->receive->assign. This process has been

> verified on ODE 1.3.5 and embedded Derby database.

>

>

>

> I have highlighted the execution of the 2 sequences (yellow and brown)

> within the flow in a couple of excel sheets. One of the excel sheet

> demonstrates the execution of process instance to completion and the

> other excel sheet demonstrates the process instance waiting for

> external message to arrive.

>

>

>

> The execution of the flow activity looks perfectly fine in this scenario.

>

> You may run this process in your environment and see how it goes.

>

>

>

> Download the process artefact and excel sheet from this archive:

>

> https://dl.dropboxusercontent.com/u/92429475/FlowParallelInvoke.zip

>

>

>

>

>

> FlowParallelInvoke.bpel

>

>

>

> ---------------------------------

>

>

>

> <?xml version="1.0" encoding="UTF-8"?>

>

> <bpel:process exitOnStandardFault="yes" name="FlowParallelInvoke.bpel"

>

>     targetNamespace="http://www.example.org/FlowParallelInvoke/"

>

>     xmlns:bpel="http://docs.oasis-open.org/wsbpel/2.0/process/executable"

>

>     xmlns:ns="http://www.example.org/FlowParallelInvoke/Artifacts"

>

>     xmlns:ns0="http://www.example.org/FlowParallelInvoke/" xmlns:ns1="

>

> http://www.example.org/FirstAsync/"

>

>     xmlns:ns2="http://www.example.org/SecondAsync/" xmlns:ns3="

>

> http://www.w3.org/2001/XMLSchema"

>

>     xmlns:xs="http://www.w3.org/2001/XMLSchema"

>

>     queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0"

>

>

> expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0">

>

>     <bpel:import namespace="http://www.example.org/SecondAsync/"

>

>         location="SecondAsync.wsdl" importType="

>

> http://schemas.xmlsoap.org/wsdl/"></bpel:import<<http://schemas.xmlsoap.org/wsdl/%22%3e%3c/bpel:import%3c>

> http://schemas.xmlsoap.org/wsdl/%22%3e%3c/bpel:import>>

>

>     <bpel:import namespace="http://www.example.org/FirstAsync/"

>

>         location="FirstAsync.wsdl" importType="

>

> http://schemas.xmlsoap.org/wsdl/"></bpel:import<<http://schemas.xmlsoap.org/wsdl/%22%3e%3c/bpel:import%3c>

> http://schemas.xmlsoap.org/wsdl/%22%3e%3c/bpel:import>>

>

>     <bpel:import importType="http://schemas.xmlsoap.org/wsdl/"

>

>         location="FlowParallelInvoke.wsdl" namespace="

>

> http://www.example.org/FlowParallelInvoke/" />

>

>    <bpel:import importType="http://schemas.xmlsoap.org/wsdl/"

>

>         location="FlowParallelInvokeArtifacts.wsdl" namespace="

>

> http://www.example.org/FlowParallelInvoke/Artifacts" />

>

>     <bpel:partnerLinks>

>

>         <bpel:partnerLink myRole="FlowParallelInvokeRole"

>

>             name="bpelProcessPartner"

>

> partnerLinkType="ns:FlowParallelInvokePLT" />

>

>         <bpel:partnerLink name="firstAsyncPartner"

>

>             partnerLinkType="ns1:FirstAsyncLinkType"

>

> myRole="FirstCallbackRole"

>

>             partnerRole="FirstAsyncRole"

>

> initializePartnerRole="yes"></bpel:partnerLink>

>

>         <bpel:partnerLink name="secondAsyncPartner"

>

>             partnerLinkType="ns2:SecondAsyncLinkType"

>

> myRole="SecondCallbackRole"

>

>             partnerRole="SecondAsyncRole"

>

> initializePartnerRole="yes"></bpel:partnerLink>

>

>     </bpel:partnerLinks>

>

>     <bpel:variables>

>

>         <bpel:variable name="initiateProcessRequest"

>

>             messageType="ns0:initiateProcessRequest" />

>

>         <bpel:variable name="firstAsyncInvoke"

>

> messageType="ns1:initiateRequest">

>

>         </bpel:variable>

>

>         <bpel:variable name="firstAsyncCallback"

>

> messageType="ns1:callbackRequest"></bpel:variable>

>

>         <bpel:variable name="secondAsyncInvoke"

>

> messageType="ns2:initiateRequest"></bpel:variable>

>

>         <bpel:variable name="secondAsyncCallback"

>

> messageType="ns2:callbackRequest"></bpel:variable>

>

>         <bpel:variable name="correlationVar"

>

> type="xs:string"></bpel:variable>

>

>         <bpel:variable name="executionFlowVarSeq1"

>

> type="xs:string"></bpel:variable>

>

>         <bpel:variable name="executionFlowVarSeq2"

>

> type="xs:string"></bpel:variable>

>

>

>

>     </bpel:variables>

>

>     <bpel:correlationSets>

>

>         <bpel:correlationSet name="inCorrelation"

>

>             properties="ns:firstin"></bpel:correlationSet>

>

>

>

>     </bpel:correlationSets>

>

>     <bpel:sequence name="MainSequence">

>

>

>

>

>

>         <bpel:receive name="Receive" partnerLink="bpelProcessPartner"

>

>             operation="initiateProcess" portType="ns0:FlowParallelInvoke"

>

>             variable="initiateProcessRequest"

>

> createInstance="yes"></bpel:receive>

>

>         <bpel:assign validate="no" name="Assign">

>

>             <bpel:copy>

>

>                 <bpel:from>current-dateTime()</bpel:from>

>

>                 <bpel:to>$correlationVar</bpel:to>

>

>             </bpel:copy>

>

>             <bpel:copy>

>

>                 <bpel:from>

>

>                     <bpel:literal xml:space="preserve"><ns1:initiate>

>

>          <in>?</in>

>

>       </ns1:initiate></bpel:literal>

>

>                 </bpel:from>

>

>                 <bpel:to>

>

>                     <![CDATA[$firstAsyncInvoke.parameters]]>

>

>                 </bpel:to>

>

>             </bpel:copy>

>

>             <bpel:copy>

>

>                 <bpel:from>$correlationVar</bpel:from>

>

>

>

> <bpel:to><![CDATA[$firstAsyncInvoke.parameters/in]]></bpel:to>

>

>             </bpel:copy>

>

>             <bpel:copy>

>

>                 <bpel:from>

>

>                     <bpel:literal xml:space="preserve"><ns2:initiate>

>

>          <in>?</in>

>

>       </ns2:initiate></bpel:literal>

>

>                 </bpel:from>

>

>                 <bpel:to>

>

>                     <![CDATA[$secondAsyncInvoke.parameters]]>

>

>                 </bpel:to>

>

>             </bpel:copy>

>

>             <bpel:copy>

>

>                 <bpel:from>$correlationVar</bpel:from>

>

>

>

> <bpel:to><![CDATA[$secondAsyncInvoke.parameters/in]]></bpel:to>

>

>             </bpel:copy>

>

>         </bpel:assign>

>

>         <bpel:flow name="FlowParallelInvokeReceive">

>

>             <bpel:sequence name="Sequence1">

>

>

>

>                 <bpel:invoke name="Invoke1" partnerLink="firstAsyncPartner"

>

>                     operation="initiate" portType="ns1:FirstAsync"

>

> inputVariable="firstAsyncInvoke">

>

>                     <bpel:correlations>

>

>                         <bpel:correlation set="inCorrelation"

>

> initiate="join"></bpel:correlation>

>

>                     </bpel:correlations>

>

>                 </bpel:invoke>

>

>

>

>

>

>                 <bpel:assign validate="no"

>

> name="assignexecutionFlowVarSeq1-to1">

>

>                     <bpel:copy>

>

>                         <bpel:from>"1"</bpel:from>

>

>                         <bpel:to>$executionFlowVarSeq1</bpel:to>

>

>                     </bpel:copy>

>

>                 </bpel:assign>

>

>

>

>                 <bpel:wait name="Wait1">

>

>                     <bpel:for>'PT1S'</bpel:for>

>

>                 </bpel:wait>

>

>

>

>                 <bpel:receive name="Receive1"

>

> partnerLink="firstAsyncPartner"

>

>                     operation="callback" portType="ns1:FirstCallbackSOAP"

>

> variable="firstAsyncCallback">

>

>                     <bpel:correlations>

>

>                         <bpel:correlation set="inCorrelation"

>

> initiate="no"></bpel:correlation>

>

>                     </bpel:correlations>

>

>                 </bpel:receive>

>

>

>

>                 <bpel:assign validate="no"

>

> name="assignexecutionFlowVarSeq1-to2">

>

>                     <bpel:copy>

>

>                         <bpel:from>"2"</bpel:from>

>

>                         <bpel:to>$executionFlowVarSeq1</bpel:to>

>

>                     </bpel:copy>

>

>                 </bpel:assign>

>

>

>

>             </bpel:sequence>

>

>             <bpel:sequence name="Sequence2">

>

>                 <bpel:invoke name="Invoke2"

> partnerLink="secondAsyncPartner"

>

>                     operation="initiate" portType="ns2:SecondAsync"

>

> inputVariable="secondAsyncInvoke">

>

>                     <bpel:correlations>

>

>                         <bpel:correlation set="inCorrelation"

>

> initiate="join"></bpel:correlation>

>

>                     </bpel:correlations>

>

>                 </bpel:invoke>

>

>

>

>

>

>                 <bpel:assign validate="no"

>

> name="assignexecutionFlowVarSeq2-to1">

>

>                     <bpel:copy>

>

>                         <bpel:from>"1"</bpel:from>

>

>                         <bpel:to>$executionFlowVarSeq2</bpel:to>

>

>                     </bpel:copy>

>

>                 </bpel:assign>

>

>

>

>                 <bpel:wait name="Wait2">

>

>                     <bpel:for>'PT1S'</bpel:for>

>

>                 </bpel:wait>

>

>

>

>                 <bpel:receive name="Receive2"

>

> partnerLink="secondAsyncPartner"

>

>                     operation="callback" portType="ns2:SecondCallbackSOAP"

>

> variable="secondAsyncCallback">

>

>                     <bpel:correlations>

>

>                         <bpel:correlation set="inCorrelation"

>

> initiate="no"></bpel:correlation>

>

>                     </bpel:correlations>

>

>                 </bpel:receive>

>

>

>

>                 <bpel:assign validate="no"

>

> name="assignexecutionFlowVarSeq2-to2">

>

>                     <bpel:copy>

>

>                         <bpel:from>"2"</bpel:from>

>

>                         <bpel:to>$executionFlowVarSeq2</bpel:to>

>

>                     </bpel:copy>

>

>                 </bpel:assign>

>

>

>

>             </bpel:sequence>

>

>         </bpel:flow>

>

>     </bpel:sequence>

>

> </bpel:process>

>

>

>

> regards,

>

> sathwik

>

>

>

> On Tue, Oct 6, 2015 at 4:54 PM, Vinay Vijay <vinay.vijay@altair.com

> <mailto:vinay.vijay@altair.com>> wrote:

>

>

>

> > Hi Sathwik,

>

> >         Yes, process execution stalls in other branch also, till an

>

> > external message arrives for receive in the first branch.

>

> >

>

> > Regards,

>

> > Vinay

>

> >

>

> > -----Original Message-----

>

> > From: Sathwik B P [mailto:sathwik.bp@gmail.com]

>

> > Sent: Tuesday, October 06, 2015 4:25 PM

>

> > To: user@ode.apache.org<mailto:user@ode.apache.org<mailto:user@ode.apache.org%3cmailto:user@ode.apache.org>>

>

> > Subject: Re: Receive activities inside a Flow activity

>

> >

>

> > "the non-executed activities in other branch are not started till

> > the

>

> > receive activity of the first branch is completed"

>

> >

>

> > What do you mean by receive activity is completed? Does it mean the

>

> > process execution stalls till an external message arrives for this

> Receive?

>

> >

>

> >

>

> > On Mon, Oct 5, 2015 at 7:28 PM, Vinay Vijay <vinay.vijay@altair.com

> <mailto:vinay.vijay@altair.com>>

>

> > wrote:

>

> >

>

> > > Hi,

>

> > >                 I am having 2 parallel branches in a flow activity.

>

> > > Inside each branch I have a receive activity. When the process is

>

> > > executed, the activities in each branch are executed in parallel,

>

> > > but as soon as the receive activity is started in one branch, the

>

> > > non-executed activities in other branch are not started till the

>

> > > receive activity of the first branch is completed.

>

> > >                 Is this the intended behavior? If yes, can you

>

> > > please throw more light on why is it so? I am using ODE 1.3.5.

>

> > > Thanks in

>

> > advance.

>

> > > Regards,

>

> > > Vinay

>

> > >

>

> >

>
Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message