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}uninitializedV
ariable,lineNo=30,faultExplanation=The variable StringVariable isn't
properly initialized.


Reply via email to