Hello.  I have confirmed that using a relative query fixes the problem
in my Ode 1.X build, but this still does not work for me in Ode 1.2.
After switching to a relative query I am no longer getting a selection
failure, but the process is returning erroneous output.  It returns the
entire dataset instead of just the element I was trying to query.

<bpws:forEach counterName="Counter" name="ForEach" parallel="no">
  <bpws:startCounterValue
expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0"><![C
DATA[1]]></bpws:startCounterValue>
  <bpws:finalCounterValue
expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0"><![C
DATA[count($Data/ns0:Record)]]></bpws:finalCounterValue>
  <bpws:scope>
    <bpws:assign validate="no">

      <!-- This does not work in Ode 1.2 but it does work in Ode 1.X -->
      <bpws:copy>
        <bpws:from variable="Data">
          <bpws:query
queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0"><![CDATA[
ns0:Record[$Counter]/ns0:AnotherValue]]></bpws:query>
        </bpws:from>
        <bpws:to part="payload" variable="output"/>
      </bpws:copy>

      <!-- This works.. -->
      <bpws:copy>
        <bpws:from
expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0"><![C
DATA[$Data/ns0:Record[$Counter]/ns0:AnotherValue]]></bpws:from>
        <bpws:to part="payload" variable="output"/>
      </bpws:copy>

    </bpws:assign>
  </bpws:scope>
</bpws:forEach>

Is there something else I could be missing?

Thanks.
-Jon

-----Original Message-----
From: Matthieu Riou [mailto:[email protected]] 
Sent: Friday, April 03, 2009 8:07 AM
To: [email protected]
Subject: Re: Problem with query expressions

On Thu, Apr 2, 2009 at 2:46 PM, Jonathan Coogan <
[email protected]> wrote:

>  Hi.  I'm having a problem when copying data from one variable to 
> another within a forEach loop.  When I use a query to copy data out of

> a variable I get a selection failure fault at runtime.  This works 
> correctly when I copy from an expression instead of a query.
>
> I have attached an example that demonstrates the problem.  The 
> expected output of the attached BPEL process is the string "five".  It

> works correctly when using an expression, but fails when using a 
> query.  Here is the relevant snippet:
>

BPEL assignment doesn't provide any context node to the XPath engine,
everything is always relative to a variable. Which means that your query
should be relative and not absolute.

Matthieu


>
> <bpws:forEach counterName="Counter" name="ForEach" parallel="no">
>   <bpws:startCounterValue
>
expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0"><![C
DATA[1]]></bpws:startCounterValue>
>   <bpws:finalCounterValue
>
expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0"><![C
DATA[count($Data/ns0:Record)]]></bpws:finalCounterValue>
>   <bpws:scope>
>     <bpws:assign validate="no">
>       <bpws:copy>
>         <!--
> ----------------------------------------------------------------------
> ------
> -->
>         <!-- This generates a selection failure at runtime. -->
>         <bpws:from variable="Data">
>             <bpws:query
>
queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0"><![CDATA[
/ns0:Record[$Counter]/ns0:SomeValue]]></bpws:query>
>         </bpws:from>
>
>         <!-- This works. -->
>         <!-- <bpws:from
> expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0"><!
> [CDATA[$Data/ns0:Record[$Counter]/ns0:SomeValue]]></bpws:from>
> -->
>         <!--
> ----------------------------------------------------------------------
> ------
> -->
>
>         <bpws:to part="payload" variable="output"/>
>       </bpws:copy>
>      </bpws:assign>
>   </bpws:scope>
> </bpws:forEach>
>
> I have tested this with Ode 1.2 and a recent build of Ode 1.X and both

> behave the same.  Can someone tell me if I am doing something wrong?  
> Or should I write a bug report for this?
>
> Thanks for your time.
> -Jon
>

Reply via email to