I'm still stuck on this.  Does anyone have any suggestions?  Should I write
a bug report?

Thank you.
-Jon


On 4/7/09 10:30 AM, "Jon Coogan" <[email protected]> wrote:

> Here is a similar scenario that doesn't work in either 1.2 or 1.X.  In
> this example I iterate over record set and copy each record to an
> intermediate temp variable.  Then I assign from the temp variable to the
> output variable.  The process should return the value from the last
> record.
> 
> The problem occurs when copying from the dataset to the temporary
> variable. If I use a query on the "to" side it won't work.  Expressions
> do work. (Look for inline comments below.)
> 
> 
> <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:sequence name="Sequence">
>       <bpws:assign name="AssignToTempVariable" validate="no">
>         <bpws:copy>
>            <bpws:from>
>              <!-- Initialize temp variable. -->
>              <bpws:literal>
>                <tns:Record xmlns:tns="recordsnamespace"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
> xsi:schemaLocation="recordsnamespace records.xsd ">
>                  <tns:SomeValue/>
>                  <tns:AnotherValue/>
>                </tns:Record>
>              </bpws:literal>
>            </bpws:from>
>            <bpws:to variable="TempRecord"/>
>          </bpws:copy>
> 
> 
> <!-- ********** This does not work. ********** -->
> 
>          <bpws:copy>
>            <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>
>            <bpws:to variable="TempRecord">
>              <bpws:query
> queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0"><![CDATA[
> ns0:SomeValue]]></bpws:query>
>            </bpws:to>
>          </bpws:copy>
>          <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 variable="TempRecord">
>              <bpws:query
> queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0"><![CDATA[
> ns0:AnotherValue]]></bpws:query>
>            </bpws:to>
>          </bpws:copy>
> 
> <!-- ********** This does work. ********** -->
> 
>          <bpws:copy>
>            <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>
>            <bpws:to
> expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0"><![C
> DATA[$TempRecord/ns0:SomeValue]]></bpws:to>
>          </bpws:copy>
>          <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
> expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0"><![C
> DATA[$TempRecord/ns0:AnotherValue]]></bpws:to>
>          </bpws:copy>
> 
> 
>        </bpws:assign>
>        <bpws:assign name="AssignToOutput" validate="no">
>          <bpws:copy>
>            <bpws:from variable="TempRecord">
>              <bpws:query
> queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0"><![CDATA[
> ns0:AnotherValue]]></bpws:query>
>            </bpws:from>
>            <bpws:to part="payload" variable="output"/>
>          </bpws:copy>
>        </bpws:assign>
>      </bpws:sequence>
>   </bpws:scope>
> </bpws:forEach> 
> 
> -----Original Message-----
> From: Jonathan Coogan [mailto:[email protected]]
> Sent: Tuesday, April 07, 2009 9:56 AM
> To: [email protected]; [email protected]
> Subject: RE: Problem with query expressions
> 
> 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