Hello,
I need fill a reply message which contains an array. But my BPEL process
doesn't work in ODE 2.0 when the index of the array in <to> section of the
assign activity takes a variable of type xsd:unsignedInt which has been
correctly intialized.
The BPEL piece in question is:
<assign>
<copy>
<from><literal
xsi:type="xsd:unsignedInt">2</literal></from>
<to variable="_i1"/>
</copy>
<copy>
<from><literal
xsi:type="xsd:string">hello</literal></from>
<to>$output0.body/xsd0:field1[$_i1]</to> <!-- It'll be
OK if $_i1 here is replaced with number 2 -->
</copy>
</assign>
ODE 2.0 Build #87 (2009-1-8 2:25:04) reports an error for it as:
03:32:00,062 ERROR [ASSIGN] Assignment Fault:
{http://docs.oasis-open.org/wsbpel/2.0/process/executable}selectionFailure,lineNo=155,faultExplanation={http://docs.oasis-open.org/wsbpel/2.0/process/executable}selectionFailure:
Multiple results for expression: {OXPath10Expression
$output0.body/xsd0:field1[$_i1]}
When I simply replace the variable with a number as the comments above says,
ODE works well.
What's the problem? The WS-BPEL 2.0 specification says that "... expressions
that conform to the XPath 1.0 Expr production" in the section "8.3.5. General
Expressions". And in XPath recommendation, "Expr" production allows
"VariableReference" as the element position of a predicate. So is it a BUG of
ODE ?
--------------
FYR, the schema of the $output0.body is as follows:
<types>
<schema targetNamespace="http://example.com/request21.xsd"
xmlns="http://www.w3.org/2000/10/XMLSchema"
elementFormDefault="qualified" >
<element name="RequestInfo" type="string"/>
<element name="ResultInfo">
<complexType>
<sequence>
<element name="field1" type="string"
maxOccurs="unbounded"/>
</sequence>
</complexType>
</element>
</schema>
</types>
<message name="Request21OpOutput">
<part name="body" element="xsd1:ResultInfo"/>
</message>
In the BPEL file:
<variable name="output0" messageType="ws0:Request21OpOutput" />
--------------
Best Regards
Wenfeng