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


Although Alex makes a good point about normal XPATH behavior I must say 
that I think Danny makes an equally good point about potentially making 
legal what should probably be illegal, especially given that XPATH 
natively supports floating point numbers. We should discuss this at the F2F.

	Yaron

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]