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