Hi Alex,
Thanks. But I had checked the issues you mentioned. The problem must
be in elsewhere. Notice that when I simply replace $i with a normal unsignedInt
variable $_i1, turning the piece above into:
<forEach counterName="i" parallel="no">
<startCounterValue>1</startCounterValue>
<finalCounterValue>2</finalCounterValue>
<scope>
<assign>
<copy>
<from variable="i" />
<to variable="_i1"/>
</copy>
<copy>
<from>$i</from>
<to>$output0.body/xsd0:field1[position()=$_i1]</to> <!-- note
this line -->
</copy>
</assign>
</scope>
</forEach>
it works fine!
The attachements is the process files and you can try it. My environment is:
ODE 2.0 Build #87 (2009-1-8 2:25:04).
Thanks&Regards.
Wenfeng
======= 2009-01-21 23:36:47 您在来信中写道:=======
>"No result for expression ... " does not mean "$i does not work in XPath
>predicate expression".
>
>http://ode.apache.org/faq.html
>
>*Q.* *My process fails with a selectionFailure; What can I do?*
>*A.* BPEL expects a *single* element to be selected when evaluating <to> and
><from> expressions, and a selectionFailure fault is thrown if zero or more
>than one element are selected.
>
>If you get zero element, double-check your namespace prefix and bindings.
>Also, remember that you must initialize your variables (most often with
><literal>'s) before assigning into them, unless your are reassigning the
>whole variable (e.g. directly into $variable, or $variable.part). To debug
>assignments, you can set the "org.apache.ode" logging category to DEBUG in
>order to see the content of variables as the process executes.
>
>
>2009/1/21 ZHAO Wenfeng <[email protected]>
>
>> Hi all,
>> I found another BUG-like problem in ODE 2.0 Build #87 (2009-1-8 2:25:04).
>> That is: the counterName variable can't be used in the position expression
>> of XPath as normal variables are. For example, the following BPEL piece
>> <forEach counterName="i" parallel="no">
>> <startCounterValue>1</startCounterValue>
>> <finalCounterValue>2</finalCounterValue>
>> <scope>
>> <assign>
>> <copy>
>> <from>$i</from>
>> <to>$output0.body/xsd0:field1[position()=$i]</to>
>> <!-- note this line -->
>> </copy>
>> </assign>
>> </scope>
>> </forEach>
>> will incur such ERROR in ODE:
>>
>> ERROR - GeronimoLog.error(104) | Assignment Fault: {
>> http://docs.oasis-open.org/wsbpel/2.0/process/executable}selectionFailure,lineNo=149,faultExplanation={http://docs.oasis-open.org/wsbpel/2.0/process/executable}selectionFailure<http://docs.oasis-open.org/wsbpel/2.0/process/executable%7DselectionFailure,lineNo=149,faultExplanation=%7Bhttp://docs.oasis-open.org/wsbpel/2.0/process/executable%7DselectionFailure>:
>> No results for expression: {OXPath10Expression
>> $output0.body/xsd0:field1[position()=$i]}
>> 12:39:37,781 ERROR [ASSIGN] Assignment Fault: {
>> http://docs.oasis-open.org/wsbpel/2.0/process/executable}selectionFailure,lineNo=149,faultExplanation={http://docs.oasis-open.org/wsbpel/2.0/process/executable}selectionFailure<http://docs.oasis-open.org/wsbpel/2.0/process/executable%7DselectionFailure,lineNo=149,faultExplanation=%7Bhttp://docs.oasis-open.org/wsbpel/2.0/process/executable%7DselectionFailure>:
>> No results for expression: {OXPath10Expression
>> $output0.body/xsd0:field1[position()=$i]}
>>
>>
>> But when I simply replace $i with a normal unsignedInt variable $_i1,
>> turning the piece above into:
>> <forEach counterName="i" parallel="no">
>> <startCounterValue>1</startCounterValue>
>> <finalCounterValue>2</finalCounterValue>
>> <scope>
>> <assign>
>> <copy>
>> <from variable="i" />
>> <to variable="_i1"/>
>> </copy>
>> <copy>
>> <from>$i</from>
>> <to>$output0.body/xsd0:field1[position()=$_i1]</to>
>> <!-- note this line -->
>> </copy>
>> </assign>
>> </scope>
>> </forEach>
>> it works fine! How strange! The expression language and query language used
>> are both the default one, i.e. XPath 1.0.
>>
>> Need I commit a bug report to the developers of ODE? :-)
>>
>> Thanks & Regards.
>> Wenfeng
>>
>>
>>
>> ZHAO Wenfeng
>> [email protected]
>> 2009-01-21
>>
= = = = = = = = = = = = = = = = = = = =
致
礼!
ZHAO Wenfeng
[email protected]
2009-01-22