Hi Luca,
Indeed this looks like a bug in the BPEL 1.1. compatibility area.... for
now I'd recommend using the BPEL 2.0 syntax ($variable.part/...)
Can you file a Jira issue? That way, it will get on our TODO list.
thanks for reporting,
alex
On 5/31/07, Luca Clementi <[EMAIL PROTECTED]> wrote:
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) <
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
>
>
>
>
>
>
>