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


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]