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


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
>


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