I've now created a bug to track this:
https://issues.apache.org/jira/browse/ODE-498

alex


On Thu, Jan 22, 2009 at 12:34 AM, ZHAO Wenfeng <[email protected]>wrote:

> Hello Alexey,
>
>    "[number(string($signer))]"    :-)
>
>        And in your case, it seems this problem doesn't occur in from-spec,
> and only occurs in to-spec, isn't it?
>
>        So, there must be a bug here, I think.
>
>
> Regards.
> Wenfeng
>
>
> ======= 2009-01-22 13:56:07 您在来信中写道:=======
>
> >Hello!
> >I also encountered this bug. This is very strange and unexpected bug.
> >After some debugging time I found a workaround, and I think this worth
> >reporting in JIRA. Here is piece of my process:
> >
> ><?xml version="1.0" encoding="UTF-8"?>
> ><bpws:forEach counterName="signer" name="ForEachSignerUserName"
> >    parallel="no">
> >    <bpws:startCounterValue><![CDATA[1]]></bpws:startCounterValue>
> >
>
> ><bpws:finalCounterValue><![CDATA[count($processingData/pdata:signer)]]></bpws:finalCounterValue>
> >    <bpws:scope name="CheckSignerRolesScope">
> >        <bpws:sequence name="CheckSignerRoles">
> >            <bpws:assign name="prepareGetSignerDbId" validate="no">
> >                <bpws:copy>
> ><!-- *this works fine!* -->
> >
>
> ><bpws:from><![CDATA[$processingData/pdata:signer[$signer]/@name]]></bpws:from>
> >
> ><bpws:to><![CDATA[$getUsers.parameters/ps:nameFilter]]></bpws:to>
> >                </bpws:copy>
> >            </bpws:assign>
> >            <bpws:assign name="ExtractSignerInfo" validate="no">
> >                <bpws:copy>
> >
> ><bpws:from><![CDATA[$getUserMembershipsResponse.parameters]]></bpws:from>
> ><!-- *this don't work!* -->
> >
>
> ><bpws:to><![CDATA[$processingData/pdata:signer[$signer]/pdata:memberships/*[1]]]></bpws:to>
> >                </bpws:copy>
> >            </bpws:assign>
> >        </bpws:sequence>
> >    </bpws:scope>
> ></bpws:forEach>
> >
> >As I said after some tricks, I made it work without temporary variable
> >as Wenfeng mentioned.
> ><?xml version="1.0" encoding="UTF-8"?>
> ><bpws:forEach counterName="signer" name="ForEachSignerUserName"
> >    parallel="no">
> >    <bpws:startCounterValue><![CDATA[1]]></bpws:startCounterValue>
> >
>
> ><bpws:finalCounterValue><![CDATA[count($processingData/pdata:signer)]]></bpws:finalCounterValue>
> >    <bpws:scope name="CheckSignerRolesScope">
> >        <bpws:sequence name="CheckSignerRoles">
> >            <bpws:assign name="prepareGetSignerDbId" validate="no">
> >                <bpws:copy>
> ><!-- *this works fine!* -->
> >
>
> ><bpws:from><![CDATA[$processingData/pdata:signer[$signer]/@name]]></bpws:from>
> >
> ><bpws:to><![CDATA[$getUsers.parameters/ps:nameFilter]]></bpws:to>
> >                </bpws:copy>
> >            </bpws:assign>
> >            <bpws:assign name="ExtractSignerInfo" validate="no">
> >                <bpws:copy>
> >
> ><bpws:from><![CDATA[$getUserMembershipsResponse.parameters]]></bpws:from>
> ><!-- *this works also* -->
> >
>
> ><bpws:to><![CDATA[$processingData/pdata:signer[number(string($signer))]/pdata:memberships/*[1]]]></bpws:to>
> >                </bpws:copy>
> >            </bpws:assign>
> >        </bpws:sequence>
> >    </bpws:scope>
> ></bpws:forEach>
> >
> >Regards,
> >Alexey Ousov
> >
> >> 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>
> <
> 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>
> <
> 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
> >>
> >>
> >
> >
>
> = = = = = = = = = = = = = = = = = = = =
>
>
> 致
> 礼!
>
>
> ZHAO Wenfeng
> [email protected]
> 2009-01-22
>
>

Reply via email to