[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]