ode-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Luca Clementi <l.cleme...@cineca.it>
Subject Fwd: problems with xpath selection
Date Wed, 30 May 2007 16:32:05 GMT

I just tried my process with the new ODE 1.0 and I have the same problem.


Sincerely,
Luca


-------- Original Message --------
Subject: problems with xpath selection
Date: Wed, 30 May 2007 16:07:38 +0200 (MEST)
From: Luca Clementi <l.clementi@cineca.it>
Reply-To: ode-user@incubator.apache.org
To: ode-user@incubator.apache.org

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