Hello Alex Boisvert,
    Thanks for your answer!
    You are right when the XPath 1.0 (i.e. the default expression language) is 
used when "field1[position()=$_i1]" is OK but "field1[$_i1]" doesn't work.
        
    But when I use XPath 2.0 instead, the expression 
"<to>$output0.body/xsd0:field1[fn:position()=$_i1]</to>" doesn't work too (here 
xmlns:fn="http://www.w3.org/2005/xpath-functions";). ODE reports error as:

ERROR - GeronimoLog.error(104) | Assignment Fault: ERROR - 
GeronimoLog.error(104) | Assignment Fault: 
{http://docs.oasis-open.org/wsbpel/2.0/process/executable}subLanguageExecutionFault,lineNo=147,faultExplanation={http://docs.oasis-open.org/wsbpel/2.0/process/executable}subLanguageExecutionFault:
 null
11:23:45,046 ERROR [ASSIGN] Assignment Fault: 
{http://docs.oasis-open.org/wsbpel/2.0/process/executable}subLanguageExecutionFault,lineNo=147,faultExplanation={http://docs.oasis-open.org/wsbpel/2.0/process/executable}subLanguageExecutionFault:
 null
         
And when $_i1 is replaced with the number 2, it is OK!  

Now it seems to be a BUG, doesn't it?   

---------------
BPEL pieces in question FYR:

<process name="SolutionProcess_q21_sol1"
             ... ...
             xmlns:xsd0="http://example.com/request21.xsd"; 
             queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0"
             expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0"
             xmlns:fn="http://www.w3.org/2005/xpath-functions";
             >
    ... ...
    <variable name="_i1" type="xsd:positiveInteger" />
    ... ...
    <assign>
      <copy>
        <from><literal>
            <xsd0:ResultInfo>
              <xsd0:field1 >haha </xsd0:field1>
              <xsd0:field1 >hehe </xsd0:field1>
            </xsd0:ResultInfo>
        </literal></from>
        <to>$output0.body</to>
      </copy>

      <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[fn:position()=$_i1]</to>   <!-- It'll be 
OK if $_i1 here is replaced with number 2 -->
      </copy>
    </assign>

-------------------

Best Regards

Wenfeng

======= 2009-01-21 13:24:49 您在来信中写道:=======

>If I remember correctly, if you want to address the nth element of a
>node-set you need to use the built-in position() context function, e.g.,
>
>field[position() = $index]
>
>alex
>
>
>On Tue, Jan 20, 2009 at 8:02 PM, ZHAO Wenfeng <[email protected]> wrote:
>
>> 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<http://docs.oasis-open.org/wsbpel/2.0/process/executable%7DselectionFailure,lineNo=155,faultExplanation=%7Bhttp://docs.oasis-open.org/wsbpel/2.0/process/executable%7DselectionFailure>:
>> 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
>>
>>
>>

= = = = = = = = = = = = = = = = = = = =
                        

        致
礼!
 
                                 
        ZHAO Wenfeng
        [email protected]
          2009-01-21

Reply via email to