ode-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Luca Clementi <l.cleme...@cineca.it>
Subject Re: problems with xpath selection
Date Thu, 31 May 2007 09:55:05 GMT
Hi all,
I have been doing some more testing on this issue, and I 
discovered that simply changing the notation of the assign 
modify the behavior of the engine.

Using a:
      <assign name="d0_InputData">
         <copy> 
            <from><literal>
               <xsd:PAAM_in xmlns:xsd="http://www.a-ware.org/airbus/xsd">
                  <xsd:frequency>4</xsd:frequency>
                  <xsd:templateFile>string</xsd:templateFile>
                  <xsd:parameters>
                     <xsd:name>string</xsd:name>
                     <xsd:value>string</xsd:value>
                  </xsd:parameters>
               </xsd:PAAM_in>
            </literal></from>
            <to variable="n0_PAAM_data_in" part="body"><query>/</query></to>
          </copy>
          <copy>
            <from variable="ProcessInstantiation_data_out" part="body"><query>/xsd:templateFile</query></from>
            <to variable="n0_PAAM_data_in" part="body"><query>/xsd:templateFile</query></to>
          </copy>
        </assign>

output this weird message

The message received by paam is 
<xsd:PAAM_in xmlns:wsdl="http://www.a-ware.org/bpel/airbusTest/wsdl" xmlns:xsd="http://www.a-ware.org/airbus/xsd">
  <xsd:templateFile>pluto</xsd:templateFile>
  <wsdl:frequencies>
    <xsd:frequency>7.1</xsd:frequency>
    <xsd:frequency>3.2</xsd:frequency>
  </wsdl:frequencies>
  <wsdl:parameters>
    <wsdl:parameter>
      <xsd:name>prova</xsd:name>
      <xsd:value>bene</xsd:value>
    </wsdl:parameter>
  </wsdl:parameters>
</xsd:PAAM_in>

While if I use the other notation for the assign 

    <from>$ProcessInstantiation_data_out.body/xsd:templateFile</from>
    <to>$n0_PAAM_data_in.body/xsd:templateFile</to>

I get the right message:
The message received by paam is 
<xsd:PAAM_in xmlns:xsd="http://www.a-ware.org/airbus/xsd">
  <xsd:frequency>4</xsd:frequency>
  <xsd:templateFile>pluto</xsd:templateFile>
  <xsd:parameters>
    <xsd:name>string</xsd:name>
    <xsd:value>string</xsd:value>
  </xsd:parameters>
</xsd:PAAM_in>



I thought that the two format of the assign were equivalent...

1>    <from variable="ProcessInstantiation_data_out" part="body"><query>/xsd:templateFile</query></from>
1>    <to variable="n0_PAAM_data_in" part="body"><query>/xsd:templateFile</query></to>

2>    <from>$ProcessInstantiation_data_out.body/xsd:templateFile</from>
2>    <to>$n0_PAAM_data_in.body/xsd:templateFile</to>


And why if I use the first format it outputs such a weird message?


Thank you,
Luca


Luca Clementi wrote:
> Hi all,
> 
> we are trying to make some variable manipulation in a bpel 
> file with xpath but I can not find what I do wrong...
> 
> 
> This is the wsdl of the service I invoke (airbus.wsdl):
> <?xml version="1.0" encoding="UTF-8"?>
> <wsdl:definitions xmlns:ns0="http://www.a-ware.org/airbus/xsd" xmlns:tns="http://www.a-ware.org/airbus/xsd"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
name="airbus" targetNamespace="http://www.a-ware.org/airbus/xsd">
>   <wsdl:types>
>     <xsd:schema elementFormDefault="qualified" targetNamespace="http://www.a-ware.org/airbus/xsd"

>                 xmlns:tns="http://www.a-ware.org/airbus/xsd" 
>                 xmlns:xsd="http://www.w3.org/2001/XMLSchema">
> 
>   <!-- return type =============================================-->
>   <xsd:complexType name="return_type">
>     <xsd:sequence>
>       <xsd:element name="exitValue" type="xsd:integer"/>
>       <xsd:element name="stdout" type="xsd:string"/>
>       <xsd:element name="stdin" type="xsd:string"/>
>     </xsd:sequence>
>   </xsd:complexType>
>   <!-- =================================================== -->
> 
>   <!-- PAAM  ============================================= -->
>   <xsd:element name="PAAM_in" type="tns:PAAM_in_type"/>
>   <xsd:complexType name="PAAM_in_type">
>     <xsd:sequence>
>       <xsd:element ref="tns:frequency"/>  
>       <xsd:element ref="tns:templateFile"/>  
>       <xsd:element name="parameters" type="tns:parameters_type"/>
>     </xsd:sequence>
>   </xsd:complexType>
> 
>   <xsd:element name="templateFile" type="xsd:string"/>
> 
>   <xsd:element name="frequency" type="xsd:float"/>
> 
>   <xsd:complexType name="parameters_type">
>     <xsd:sequence maxOccurs="unbounded">
>       <xsd:element name="name" type="xsd:string"/>
>       <xsd:element name="value" type="xsd:string"/>
>     </xsd:sequence>
>   </xsd:complexType>
> 
>   <xsd:element name="PAAM_out" type="tns:PAAM_out_type"/>
>   <xsd:complexType name="PAAM_out_type">
>         <xsd:sequence>
>       <xsd:element name="modelFileName" type="xsd:string"/>
>       <xsd:element name="tclscriptFileName" type="xsd:string"/>
>       <xsd:element name="return" type="tns:return_type"/>
>         </xsd:sequence>
>   </xsd:complexType>
>    [some other types]
>   </xsd:schema>
> 
>   </wsdl:types>
>   <wsdl:message name="paamInput">
>     <wsdl:part element="tns:PAAM_in" name="body">
>     </wsdl:part>
>   </wsdl:message>
>   <wsdl:message name="paamOutput">
>     <wsdl:part element="tns:PAAM_out" name="body">
>     </wsdl:part>
>   </wsdl:message>
>    [some other messages]
>   <wsdl:portType name="airbusPortType">
>     <wsdl:operation name="paam">
>       <wsdl:input message="tns:paamInput">
>     </wsdl:input>
>       <wsdl:output message="tns:paamOutput">
>     </wsdl:output>
>     </wsdl:operation>
>     
>     [some other operations]
> 
>   </wsdl:portType>
> </wsdl:definitions>
> 
> 
> 
> The wsdl of the process I try to execute is (airbusTest.wsdl):
> <?xml version="1.0" encoding="UTF-8"?>
> <definitions targetNamespace="http://www.a-ware.org/bpel/airbusTest/wsdl"
>     xmlns="http://schemas.xmlsoap.org/wsdl/"
>     xmlns:pln="http://schemas.xmlsoap.org/ws/2004/03/partner-link/"
>     xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
>     xmlns:wsdl="http://www.a-ware.org/bpel/airbusTest/wsdl"
>     xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsd="http://www.a-ware.org/airbus/xsd">
>     <import location="airbus.wsdl" namespace="http://www.a-ware.org/airbus/xsd"/>
>     <types>
> <schema targetNamespace="http://www.a-ware.org/bpel/airbusTest/wsdl" xmlns="http://www.w3.org/2001/XMLSchema"
>         xmlns:xsd="http://www.a-ware.org/airbus/xsd" elementFormDefault="qualified">
>         <import namespace="http://www.a-ware.org/airbus/xsd" schemaLocation="airbus.xsd"
/>    
>         <!-- airbus.xsd contains exactly the schema of the previous wsdl -->
>         <element name="ProcessInstantiation_data_outElement">
>                 <complexType>
>                         <sequence>
>                                 <element ref="xsd:templateFile"  />
>                                 <element name="frequencies">
>                                         <complexType>
>                                                 <sequence>
>                                                         <element ref="xsd:frequency"
minOccurs="1" maxOccurs="unbounded" />
>                                                 </sequence>
>                                         </complexType>
>                                 </element>
>                                 <element name="parameters">
>                                         <complexType>
>                                                 <sequence>
>                                                         <element name="parameter"
type="xsd:parameters_type" minOccurs="1" maxOccurs="unbounded" />
>                                                 </sequence>
>                                         </complexType>
>                                 </element>
>                         </sequence>
>                 </complexType>
>         </element>
>         <element name="e5_EndMessage_data_inElement">
>                 <complexType>
>                         <sequence>
>                                 <element name="PAAM_out" type="xsd:PAAM_out_type"
/>
>                                 <element name="IcemCFD_out" type="xsd:IcemCFD_out_type"
/>
>                                 <element name="ANADEL_out" type="xsd:ANADEL_out_type"
/>
>                                 <element name="MOVE_D01_out"
>                                         type="xsd:MOVE_D01_out_type" />
>                         </sequence>
>                 </complexType>
>         </element>
> </schema>
>     </types>
>     <message name="ProcessInstantiation_data_out">
>         <part element="wsdl:ProcessInstantiation_data_outElement" name="body"/>
>     </message>
>     <message name="e5_EndMessage_data_in">
>         <part element="wsdl:e5_EndMessage_data_inElement" name="body"/>
>     </message>
> 
> 	[portType and partnerLinks]
> 
> </definitions>
> 
> 
> While the process is (airbusTest.bpel):
> <?xml version="1.0" encoding="UTF-8"?>
> <process name="airbusTest"
>     targetNamespace="http://www.a-ware.org/bpel/airbusTest/bpel"
>     xmlns="http://schemas.xmlsoap.org/ws/2004/03/business-process/"
>     xmlns:bpws="http://schemas.xmlsoap.org/ws/2004/03/business-process/"
>     xmlns:wsdl="http://www.a-ware.org/bpel/airbusTest/wsdl"
>     xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsd="http://www.a-ware.org/airbus/xsd">
>     <!--bpmn2bpel Version 1.0-->
>     <import importType="http://schemas.xmlsoap.org/wsdl/"
>         location="airbusTest.wsdl" namespace="http://www.a-ware.org/bpel/airbusTest/wsdl"/>
>     <import importType="http://schemas.xmlsoap.org/wsdl/"
>         location="airbus.wsdl" namespace="http://www.a-ware.org/airbus/xsd"/>
>     <partnerLinks>
> 	[partner links]
>     </partnerLinks>
>     <variables>
>         <!--List variables used in this BPEL process-->
>         <variable messageType="xsd:paamOutput" name="n0_PAAM_data_out"/>
>         <variable messageType="xsd:paamInput" name="n0_PAAM_data_in"/>
>         [some other variable]
>         <variable messageType="wsdl:ProcessInstantiation_data_out" name="ProcessInstantiation_data_out"/>
>         <variable messageType="wsdl:e5_EndMessage_data_in" name="e5_EndMessage_data_in"/>
>         <variable name="counter" type="xs:integer"/>
>     </variables>
>     <sequence name="sequenceComponent_3">
>         <receive createInstance="yes" name="ProcessInstantiation" operation="localPT"
partnerLink="client"
>             portType="wsdl:airbusTestPT" variable="ProcessInstantiation_data_out"/>
>         <assign name="MyAssign">
>             <copy>
>                 <from>1</from>
>                 <to variable="counter"/>
>             </copy>
>         </assign>
>         <sequence>
>             <while >
>                 <condition> ( ($counter - 1) &lt; count($ProcessInstantiation_data_out.body/wsdl:frequencies/xsd:frequency)
) </condition>
>                 <sequence name="sequenceComponent_0">
>                     <assign name="d0_InputData">
>                         <copy> 
>                                 <from><literal>
>                                         <xsd:PAAM_in xmlns:xsd="http://www.a-ware.org/airbus/xsd">
>                                                <xsd:frequency>4</xsd:frequency>
>                                                <xsd:templateFile>string</xsd:templateFile>
>                                                <xsd:parameters>
>                                                      <xsd:name>string</xsd:name>
>                                                      <xsd:value>string</xsd:value>
>                                                </xsd:parameters>
>                                         </xsd:PAAM_in>
>                                 </literal></from>
>                                 <to variable="n0_PAAM_data_in" part="body"><query>/</query></to>
>                         </copy>
>                         <copy>  <!--  the frequencies -->
>                             <from variable="ProcessInstantiation_data_out" part="body"><query>/wsdl:frequencies/xsd:frequency[1]</query></from>
>                             <to variable="n0_PAAM_data_in" part="body"><query>/</query></to>
>                         </copy>
>                         <copy>
>                                 <from variable="ProcessInstantiation_data_out" part="body"><query>/xsd:templateFile</query></from>
>                                 <to variable="n0_PAAM_data_in" part="body"><query>/</query></to>
>                         </copy>
>                     </assign>
> 
>                     <invoke inputVariable="n0_PAAM_data_in" name="n0_PAAM" operation="paam"
>                         outputVariable="n0_PAAM_data_out" partnerLink="xsd_airbusPortTypePL"
portType="xsd:airbusPortType"/>
> 
> 		    [other invokes and assigns]
>                     <assign name="Increment_Assign">
>                         <copy>
>                             <from>  ( $counter + 1 )  </from>
>                             <to variable="counter"/>
>                         </copy>
>                     </assign>
>                 </sequence>
>             </while>
>         </sequence>
>         <assign name="d26_ANADEL_out">
>             <copy>
> 		[I prepare the output variable]
>             </copy>
>         </assign>
>         <reply name="e5_EndMessage" operation="localPT" partnerLink="client" 
> 	portType="wsdl:airbusTestPT" variable="e5_EndMessage_data_in"/>
>     </sequence>
> </process>
> 
> the input message I send to the process is:
> <?xml version="1.0" encoding="UTF-8"?>
> <wsdl:ProcessInstantiation_data_outElement xmlns:wsdl="http://www.a-ware.org/bpel/airbusTest/wsdl"

>                                            xmlns:xsd="http://www.a-ware.org/airbus/xsd">
>    <xsd:templateFile>pluto</xsd:templateFile>
>    <wsdl:frequencies>
>            <xsd:frequency>7.1</xsd:frequency>
>            <xsd:frequency>3.2</xsd:frequency>
>    </wsdl:frequencies>
>    <wsdl:parameters>
>                 <wsdl:parameter>
>                         <xsd:name>string</xsd:name>
>                         <xsd:value>string</xsd:value>
>                 </wsdl:parameter>
>    </wsdl:parameters>
> </wsdl:ProcessInstantiation_data_outElement>
> 
> But the message I receive when I invoke paam is:
> 
> The message received by paam is <xsd:PAAM_in xmlns:wsdl="http://www.a-ware.org/bpel/airbusTest/wsdl"
xmlns:xsd="http://www.a-ware.org/airbus/xsd">
>   <xsd:templateFile>pluto</xsd:templateFile>
>   <wsdl:frequencies>
>     <xsd:frequency>7.1</xsd:frequency>
>     <xsd:frequency>3.2</xsd:frequency>
>   </wsdl:frequencies>
>   <wsdl:parameters>
>     <wsdl:parameter>
>       <xsd:name>prova</xsd:name>
>       <xsd:value>bene</xsd:value>
>     </wsdl:parameter>
>   </wsdl:parameters>
> </xsd:PAAM_in>
> 
> So the problem is  at the second assign (<assign name="d0_InputData">) 
> with the frequencies where I try to select only one of the frequency
> /wsdl:frequencies/xsd:frequency[1]
> but it seams that ODE selects the entire branch and copy it into the 
> destination variable. My final goal is to use counter as an index: 
> /wsdl:frequencies/xsd:frequency[$counter]
> But this obviously doesn't work either.
> 
> What am I doing wrong?
> 
> 
> I have tried every think but it seems that the notation "[]" gets 
> always ignored by ode.
> 
> I am using apache-ode-jbi-1.0-RC4-incubating-SNAPSHOT.zip which I 
> built from the SVN trunk at 2007-05-24, in service mix 
> 3.2-incubating-SNAPSHOT.
> 
> 
> Thank you for your help,
> Luca
> 
> 
> 
> 
> 
> 
> 

Mime
View raw message