Thank you.  I'd be very interested in looking at your description.

-Jon


On 4/13/09 9:30 AM, "hale" <[email protected]> wrote:

> Hi,
> 
> I came across with the same problem and found out that if there is no "part"
> in a variable, the xpath expression is ignored by ode while initializing the
> assign activity. Tommorrow I can send you a detailed description . By the
> way I did the same work out to make the flows work sucessfully, using
> expressions insted of query.
> 
> I did not have the time to open a bug, I hope you will..
> 
> 
> 
> 
> 
> On Mon, Apr 13, 2009 at 7:02 PM, Ford, Mark <[email protected]> wrote:
> 
>> You're saying that there is a difference in behavior between an expression
>> to-spec and a query to-spec. The example you provided looks the same
>> semantically and only differs in syntax. My suggestion is to produce a
>> simpler test case that shows this behavior and submit it as a bug if it
>> still fails.
>> 
>> The use of the forEach below (and the expressionLanguage attributes and
>> CDATA nodes) is overly complicated. You may also be running into a subtle
>> issue (possibly still an open bug) with the use of the forEach counter
>> variable within a predicate. I believe you need to wrap the variable usage
>> within a number() function.
>> 
>> I'm also assuming that the forEach below was only a portion of your actual
>> process and that you're doing something more than iterating over assigns
>> with a forEach. For example, you probably have an invoke somewhere in the
>> real code. While the snippet below is valid BPEL (at least at a quick
>> glance) it's not a good use case for the forEach. The code below would be
>> better accomplished in an Xquery FLWOR expression. Again - apologies if it's
>> just to illustrate the bug - just mentioning it in case it was the real
>> thing.
>> 
>> 
>> 
>> On 4/13/09 11:33 AM, "Jonathan Coogan" <[email protected]>
>> wrote:
>> 
>> 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