Can you try without the literal? So just:

     <copy>
       <from>2</from>
        <to variable="_i1"/>
     </copy>

By the way you shouldn't declare any xsi:type.

Thanks,
Matthieu


On Wed, Jan 21, 2009 at 3:37 AM, ZHAO Wenfeng <[email protected]> wrote:

> 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<http://docs.oasis-open.org/wsbpel/2.0/process/executable%7DsubLanguageExecutionFault,lineNo=147,faultExplanation=%7Bhttp://docs.oasis-open.org/wsbpel/2.0/process/executable%7DsubLanguageExecutionFault>:
> 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<http://docs.oasis-open.org/wsbpel/2.0/process/executable%7DsubLanguageExecutionFault,lineNo=147,faultExplanation=%7Bhttp://docs.oasis-open.org/wsbpel/2.0/process/executable%7DsubLanguageExecutionFault>:
> 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>
> <
> 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