Hi Bill. I remember reading that at some point in the past. I thought
that inline initialization was a new feature in Ode 1.3 but maybe it
wasn't added after all.
The compliance page needs to be updated in either case. I guess the
question now is whether inline initialization is supposed to work in
1.3.2.
Thanks.
-Jon
-----Original Message-----
From: Bill McCusker [mailto:[email protected]]
Sent: Thursday, July 09, 2009 6:22 AM
To: [email protected]
Subject: Re: Inline variable initialization in Ode 1.3.2
Hi Jonathan,
An interesting bit was pointed out to me on the specification
compliance page
(http://ode.apache.org/ws-bpel-20-specification-compliance.html). It may
just be old information but under <assign> activity there is a line
stating "Inline assignment as part of the variable declaration isn't
currently supported." I recall that at some point in time it was not
supported but it would be nice to get this clarified: should inline
initialization work?
Bill McCusker
Jonathan Coogan wrote:
Hi Bill. Good suggestion. Even when I echo the inline initialized
variable back to the response it does not work. I created a simpler
example that uses an initialized variable of type string. When I
assign to to the response I get an AssignmentFault saying that the
variable is uninitialized.
---------- Begin TestInlineInitialization2.wsdl ---------- <?xml
version="1.0"?> <definitions name="TestInlineInitialization2"
targetNamespace="mynamespace"
xmlns:tns="mynamespace"
xmlns:plnk="http://docs.oasis-open.org/wsbpel/2.0/plnktype"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns="http://schemas.xmlsoap.org/wsdl/"
>
<types>
<schema attributeFormDefault="unqualified"
elementFormDefault="qualified"
targetNamespace="mynamespace"
xmlns="http://www.w3.org/2001/XMLSchema">
<element name="Input" type="string" />
<element name="Output" type="string" />
</schema>
</types>
<message name="InputMessage">
<part name="payload" element="tns:Input"/>
</message>
<message name="OutputMessage">
<part name="payload" element="tns:Output"/>
</message>
<portType name="ServicePortType">
<operation name="process">
<input message="tns:InputMessage" />
<output message="tns:OutputMessage"/>
</operation>
</portType>
<plnk:partnerLinkType name="ServicePartnerLinkType">
<plnk:role name="ServiceProvider"
portType="tns:ServicePortType"/>
</plnk:partnerLinkType>
<binding name="ServiceBinding" type="tns:ServicePortType">
<soap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http" />
<operation name="process">
<soap:operation soapAction="mynamespace/process" />
<input>
<soap:body use="literal" />
</input>
<output>
<soap:body use="literal" />
</output>
</operation>
</binding>
<service name="TestInlineInitialization2Service">
<port name="TestInlineInitialization2Port"
binding="tns:ServiceBinding">
<soap:address
location="http://[server]:[port]/processes/TestInlineInitialization2"
/>
</port>
</service>
</definitions>
---------- End TestInlineInitialization2.wsdl ----------
---------- Begin TestInlineInitialization2.bpel ---------- <?xml
version="1.0" encoding="UTF-8"?> <bpel:process
exitOnStandardFault="yes"
expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0"
name="TestInlineInitialization2"
queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0"
suppressJoinFailure="yes" targetNamespace="mynamespace"
xmlns:bpel="http://docs.oasis-open.org/wsbpel/2.0/process/executable"
xmlns:bpws="http://docs.oasis-open.org/wsbpel/2.0/process/executable"
xmlns:ode="http://www.apache.org/ode/type/extension"
xmlns:tns="mynamespace"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<bpel:import importType="http://schemas.xmlsoap.org/wsdl/"
location="TestInlineInitialization2.wsdl"
namespace="mynamespace"/>
<bpel:partnerLinks>
<bpel:partnerLink myRole="ServiceProvider" name="client"
partnerLinkType="tns:ServicePartnerLinkType"/>
</bpel:partnerLinks>
<bpel:variables>
<bpel:variable messageType="tns:InputMessage" name="input"/>
<bpel:variable messageType="tns:OutputMessage" name="output"/>
<bpel:variable name="StringVariable" type="xs:string">
<bpel:from>
<bpel:literal>Value</bpel:literal>
</bpel:from>
</bpel:variable>
</bpel:variables>
<bpel:sequence name="process">
<bpel:receive createInstance="yes" name="ReceiveInput"
operation="process" partnerLink="client"
portType="tns:ServicePortType" variable="input"/>
<bpel:assign name="Assign" validate="no">
<bpel:copy>
<bpel:from variable="StringVariable"/>
<bpel:to part="payload" variable="output"/>
</bpel:copy>
</bpel:assign>
<bpel:reply name="ReplyWithOutput" operation="process"
partnerLink="client" portType="tns:ServicePortType"
variable="output"/>
</bpel:sequence>
</bpel:process>
---------- Begin TestInlineInitialization2.bpel ----------
Here is the fault I get:
INFO [ASSIGN]: Assignment Fault:
{http://docs.oasis-open.org/wsbpel/2.0/process/executable}uninitialize
dV ariable,lineNo=30,faultExplanation=The variable StringVariable
isn't properly initialized.