OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

wsbpel message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: Re: [wsbpel] Issue - 147 - Proposal For Vote



I just have submitted it formally under 147.4.

Regards,
Alex YIu


Yaron Y. Goland wrote:

> Alex, can you please submit this a proposal for vote for issue 147.4? 
> I'd like the group to vote on this issue in general before changing 
> any text or accepting any amendments.
>     Thanks,
>         Yaron
>
> Alex Yiu wrote:
>
>>
>> Hi Yaron and Danny,
>>
>> *Danny:*
>> Originally I also had a similar concern in my mind. However, XPath 
>> 1.0 is a very weak-typed language. The round() function application 
>> here is actually consistent with other XPath 1.0 situation.
>>
>> See: http://www.w3.org/TR/xpath#function-substring
>> See: substring("12345", 1.5, 2.6) returns "234"
>>
>> *Yaron:
>> *
>> +1 from me in general. :-)
>>
>> I hope my preference of having two activities on 147.4 would be 
>> accepted as a friendly amendent. Here are the changes related to this 
>> amendment.
>>
>> ============================
>> <forEach counterName="ncname" standard-attributes>
>>     standard-elements
>>     <iterator>
>>        <startCounterValue expressionLanguage="anyURI">
>>           ...
>>        </startCounterValue>?
>>        <finalCounterValue expressionLanguage="anyURI">
>>           ...
>>        </finalCounterValue>?
>>     </iterator>
>>     Scope
>> </foreach>
>>
>> <parallelForEach counterName="ncname" standard-attributes>
>>     standard-elements
>>     <iterator>
>>        <startCounterValue expressionLanguage="anyURI">
>>           ...
>>        </startCounterValue>?
>>        <finalCounterValue expressionLanguage="anyURI">
>>           ...
>>        </finalCounterValue>?
>>     </iterator>
>>     Scope
>> </parallelForEach>
>> ============================
>>
>> FROM:
>> -----------------------------------
>> If parallel="no" then this is a serial foreach where the enclosed 
>> scope activity will be repeated N+1 times. ...
>> -----------------------------------
>>
>> TO:
>> -----------------------------------
>> <forEach> is a serial version of iteration activity where the 
>> enclosed scope activity will be repeated N+1 times. ...
>> -----------------------------------
>>
>> FROM:
>> -----------------------------------
>> If parallel="yes" then this is a parallel foreach where the N+1 
>> instances of the enclosed scope activity will occur in parallel.
>> -----------------------------------
>>
>> TO:
>> -----------------------------------
>> <parallelForEach> is a parallel version of iteration activity where 
>> the N+1 instances of the enclosed scope activity will occur in parallel.
>> -----------------------------------
>>
>>
>> XSD Changes.
>> ================================
>> Add the following to the 'activity' group:
>>
>> <element name="forEach" type="bpws:tGenericForEach"/>
>> <element name="parallelForEach" type="bpws:tGenericForEach"/>
>>
>> Then add the following into the main body of the schema:
>>
>>     <complexType name="_tGenericForEach_">
>>         <complexContent>
>>             <extension base="bpws:tActivity">
>>                 <sequence>
>>                     <element name="iterator" type="bpws:tIterator"/>
>>                     <element name="scope" type="bpws:tScope"/>
>>                 </sequence>
>>                 <attribute name="counterName" type="NCName"
>>                            use="required"/>
>>             </extension>
>>         </complexContent>
>>     </complexType>
>>
>> [_Note:_ the parallel attribute is now dropped.]
>>
>>     <complexType name="tIterator">
>>         <complexContent>
>>             <extension base="bpws:tExtensibleElements">
>>                 <sequence _minOccurs="0"_>
>>                     <element name="startCounterValue"
>>                              type="bpws:tExpression"/>
>>                     <element name="finalCounterValue"
>>                              type="bpws:tExpression"/>
>>                 </sequence>
>>             </extension>
>>         </complexContent>
>>     </complexType>
>>
>> [_Note:_ I change the location of minOccurs to better reflect Yaron's 
>> intended syntactic requirement of these expressions.]
>>
>> ================================
>>
>>
>> Thanks!
>>
>>
>> Regards,
>> Alex Yiu
>>
>>
>>
>> Danny van der Rijn wrote:
>>
>>> Looks good.  One small nit/question:  Why do you require a call to 
>>> round() if it's XPath?  I would think that it would be more valuable 
>>> if a counter value of, say, 2.1, would be an error, rather than 2.
>>>
>>> Danny
>>>
>>> Yaron Y. Goland wrote:
>>>
>>>> 147 - Serial and Parallel Foreach
>>>>
>>>> Proposal: Introduce a foreach to BPEL with both serial and parallel 
>>>> semantics.
>>>>
>>>> Rationale: Just check the issue list for issue 147. There is a 
>>>> whole series of mails attesting to how important this activity is.
>>>>
>>>> Introduce a section 12.6
>>>>
>>>> 12.6 - foreach
>>>>
>>>> <forEach counterName="ncname" parallel="yes|no" standard-attributes>
>>>>     standard-elements
>>>>     <iterator>
>>>>        <startCounterValue expressionLanguage="anyURI">
>>>>           ...
>>>>        </startCounterValue>?
>>>>        <finalCounterValue expressionLanguage="anyURI">
>>>>           ...
>>>>        </finalCounterValue>?
>>>>     </iterator>
>>>>     Scope
>>>> </foreach>
>>>>
>>>> The foreach activity is an iterator that will repeat its contained 
>>>> scope activity exactly N+1 times where N equals the 
>>>> <finalCounterValue> minus the <startCounterValue>.
>>>>
>>>> When the foreach activity is started the expressions in 
>>>> <startCounterValue> and <finalCounterValue> are evaluated for the 
>>>> first and only time. That is, once the two values are returned they 
>>>> remain constant for the lifespan of the activity. Both expressions 
>>>> MUST each return a TII (meaning they contain at least one 
>>>> character) that can be validated as a xs:unsignedint and the 
>>>> startCounterValue MUST be less than or equal to the 
>>>> finalCounterValue, if any of these restrictions are violated then 
>>>> the bpws:forEachCounterError fault MUST be thrown. If the 
>>>> expression language used in either element happens to be 
>>>> urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0 then the expressions 
>>>> contained in the two elements MUST be wrapped in implicit calls to 
>>>> the round(number()) functions.
>>>>
>>>> The Scope activity MUST NOT have a variable explicitly declared in 
>>>> it with the same name as contained in the counterName attribute, a 
>>>> violation of this requirement MUST be statically enforced.
>>>>
>>>> If parallel="no" then this is a serial foreach where the enclosed 
>>>> scope activity will be repeated N+1 times. During each repetition a 
>>>> variable of type xs:unsignedint will be created on the enclosed 
>>>> scope activity with the name specified in the counterName 
>>>> attribute. The counter variable's creation and initialization MUST 
>>>> occur before any other variables on the enclosed scope activity are 
>>>> declared, therefore other variables declared on the enclosed scope 
>>>> activity MAY refer to the counter variable in their own 
>>>> initializations. The counter variable is local to the enclosed 
>>>> scope and although its value can be changed during an iteration 
>>>> that value will be lost when the enclosed scope exits and will not 
>>>> affect the value that the next iteration's counter will be set to.
>>>>
>>>> The first iteration of the scope will see the counter variable set 
>>>> to the startCounterValue. The next iteration will cause the counter 
>>>> variable to be set to the startCounterValue plus one. Each 
>>>> subsequent iteration will increment the previously initialized 
>>>> counter value by one until the final iteration where the counter 
>>>> will be set to the finalCounterValue.
>>>>
>>>> If parallel="yes" then this is a parallel foreach where the N+1 
>>>> instances of the enclosed scope activity will occur in parallel. In 
>>>> essence an implicit flow is dynamically created with N+1 copies of 
>>>> the foreach's enclosed scope activity as children. Each copy of the 
>>>> scope activity will have the same counter variable defined in the 
>>>> same manner as specified for serial foreach with the exception that 
>>>> each counter variable will be uniquely initialized to one of the 
>>>> integer values starting with startCounterValue and covering all 
>>>> integer values, incremented by one, up to and including 
>>>> finalCounterValue.
>>>>
>>>> Both the start and final counter values are optional in the schema 
>>>> but this is only to allow for future use of extension elements. A 
>>>> non-extended version of the forEach activity MUST include both the 
>>>> startcountervalue and the finalCounterValue.
>>>>
>>>> Add to Appendix A:
>>>>
>>>> forEachCounterError - Either the startCounterValue or 
>>>> finalCounterValue returned non-unsigned integer values or the start 
>>>> value was greater than the final value.
>>>>
>>>> Add to Schema:
>>>>
>>>> Add the following to the 'activity' type:
>>>>
>>>> <element name="forEach" type="bpws:tForEach"/>
>>>>
>>>> Then add the following into the main body of the schema:
>>>>
>>>>     <complexType name="tForEach">
>>>>         <complexContent>
>>>>             <extension base="bpws:tActivity">
>>>>                 <sequence>
>>>>                     <element name="iterator" type="bpws:tIterator"/>
>>>>                     <element name="scope" type="bpws:tScope"/>
>>>>                 </sequence>
>>>>                 <attribute name="counterName" type="NCName"
>>>>                            use="required"/>
>>>>                 <attribute name="parallel" type="bpws:tBoolean"
>>>>                            use="required"/>
>>>>             </extension>
>>>>         </complexContent>
>>>>     </complexType>
>>>>
>>>>     <complexType name="tIterator">
>>>>         <complexContent>
>>>>             <extension base="bpws:tExtensibleElements">
>>>>                 <sequence>
>>>>                     <element name="startCounterValue"
>>>>                              type="bpws:tExpression" minOccurs="0"/>
>>>>                     <element name="finalCounterValue"
>>>>                              type="bpws:tExpression" minOccurs="0"/>
>>>>                 </sequence>
>>>>             </extension>
>>>>         </complexContent>
>>>>     </complexType>
>>>>
>>>>
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe from this mail list, you must leave the OASIS TC that
>>>> generates this mail.  You may a link to this group and all your TCs 
>>>> in OASIS
>>>> at:
>>>> https://www.oasis-open.org/apps/org/workgroup/portal/my_workgroups.php
>>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe from this mail list, you must leave the OASIS TC that
>>> generates this mail.  You may a link to this group and all your TCs 
>>> in OASIS
>>> at:
>>> https://www.oasis-open.org/apps/org/workgroup/portal/my_workgroups.php
>>
>>
>>
>




[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]