[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: Re: [wsbpel] Issue - 168 - Proposal To Vote
why does that matter? the elephant in the room that we call the
"dispatcher" has to deal with this stuff, but as far as the process is
concerned, it shouldn't care, should it? we have avoided talking about
the dispatcher at all, and i would think that this question falls into
that domain. danny Ugo Corda wrote: Maciej, Thank you for the rewrite. I think you should also spell out what happens with respect to correlation set initialization. In other words, is it done at the time the new process is created, or at the time the normal execution flow reaches the instantiating activity? Ugo-----Original Message----- From: Maciej Szefler [mailto:mbs@fivesight.com] Sent: Wednesday, October 20, 2004 7:56 AM To: Ugo Corda Cc: wsbpel@lists.oasis-open.org Subject: RE: [wsbpel] Issue - 168 - Proposal To Vote Ugo, Sorry for the confusion, I've adjusted my proposal (basically in my previous narrative "createInstance=rendezvous" should be read as "createInstance=yes and containing initiate=rendezvous correlation set"). Adjusted text: I propose we adopt the "less magic" approach described in the issue description. This means that the semantics of process instantiation would be as follows: 1. The arrival of message that matches an activity marked with createInstance=yes (and not matching an existing process instance) causes a new process instance to be created. This message is termed the "instantiating message" for that process instance. The createInstance=yes activity that was used to justify the instantiation is termed the "instantiating activity" for that process instance. 2. Once a process instance is created, all its activities are executed in the order dictated by the structure of the process. 3. When a <receive> or <pick> activity with createInstance=yes containing a initiate=yes correlation is executed, the message "received" will be the "instantiating message" of the process instance. 4. When a <receive> and <pick> activity with createInstance=yes containing a initiate=rendezvous correlation is executed, the message "received" will be either: a ) the "instantiating message" if said activity is the "instantiating activity" b ) some other message matching the correlation key from the "instantiating message" if said activity is not the "instantiating activity" Key changes to text: 6.4: OLD: This is done by setting the createInstance attribute of such an activity to "yes". When a message is received by such an activity, an instance of the business process is created if it does not already exist (see Providing Web Service Operations and Pick). NEW: This is done by setting the createInstance attribute of such an activity to "yes". When a message that matches such an activity is received, an instance of the business process is created if it does not already exist (see Providing Web Service Operations and Pick). OLD: To be instantiated, each business process must contain at least one such "start activity." This must be an initial activity in the sense that there is no basic activity that logically precedes it in the behavior of the process. NEW: To be instantiated, each business process must contain at least one such "start activity." ----strike--- 11.4: OLD: A receive activity annotated in this way MUST be an initial activity in the process, that is, the only other basic activities may potentially be performed prior to or simultaneously with such a receive activity MUST be similarly annotated receive activities. NEW: -----strike---- 13.5.3: OLD: If the event handler is associated with the global process scope, the event handler is enabled as soon as the process instance is created. The process instance is created when the first receive activity that provides for the creation of a process instance (indicated via the createInstance attribute set to "yes") has received and processed the corresponding message. This allows the alarm time for a global alarm event to be specified using the data provided within the message that creates a process instance, as shown in the following example: NEW: If the event handler is associated with the global process scope, the event handler is enabled as soon as the process instance is created. Note: alarm time for a global alarm event /cannot/ be specified using the data provided within the message that creates a process instance! On Tue, 2004-10-19 at 19:53, Ugo Corda wrote:Maciej, I suggest you rewrite your initial proposal keeping"createInstance"and "initiate" separate. Right now, you are conflating the two (you are, for instance, talking about"createInstance=rendezvous"), whichmakes the proposed language confusing. Ugo P.S. Talking about rendezvous, shouldn't the two initialreceive's inthe Multiple Start Activities example (sec. 16.3.2) have initiate="rendezvous" instead of initiate="yes"?-----Original Message----- From: Maciej Szefler [mailto:mbs@fivesight.com] Sent: Tuesday, October 19, 2004 5:08 PM To: Ugo Corda Cc: wsbpel@lists.oasis-open.org Subject: RE: [wsbpel] Issue - 168 - Proposal To Vote Ugo, My understanding is that if in a process we find an activity with createInstance=yes / initiate=yes, then that must be the /sole/ createInstance activity in that process. (11.4 suggests that only in the case of rendezvous are multiple createInstance activities permitted). With createInstance="yes" / initiate="rendezvous" we can have multiple createInstance activities, but for that case we have (rendezvous) semantics (section 11.4 + Issue 37): 1. all activities will synchronize on the same correlation set 2. there will be exactly one "winner" activity that sets the correlation, 3. all the other activities will "lose", and respect thecorrelation.How the winner is chosen is out of scope, but we know exactly one winner will be chosen. -maciej On Tue, 2004-10-19 at 12:21, Ugo Corda wrote:Maciej,I think the rendezvous issue made such cases technically illegal (i.e. you can only have one createInstance=yes activity).I am not sure what you are referring to. Could youplease clarify?Thank you, Ugo-----Original Message----- From: Maciej Szefler [mailto:mbs@fivesight.com] Sent: Tuesday, October 19, 2004 7:16 AM To: Ugo Corda Cc: wsbpel@lists.oasis-open.org Subject: RE: [wsbpel] Issue - 168 - Proposal To Vote Ugo, You are correct. Although, I think the rendezvous issue made such cases technically illegal (i.e. you can only have one createInstance=yes activity). In the case of "createInstance=rendezvous", my first instinct wouldbe to saythat processes with this ambiguity are illegal and should be detected by static analysis. -maciej On Mon, 2004-10-18 at 18:49, Ugo Corda wrote:Maciej, What about the case where the "instantiating message"matches morethan one activity marked with createInstance=yes? Your proposed wording does not explicitly rule that out, but in sucha case theconcept of "instantiating activity" would becomeambiguous, in thesense that it would not be clear which one of thoseactivities couldbe labeled that way. Ugo-----Original Message----- From: Maciej Szefler [mailto:mbs@fivesight.com] Sent: Monday, October 18, 2004 11:22 AM To: wsbpel@lists.oasis-open.org Subject: [wsbpel] Issue - 168 - Proposal To Vote I propose we adopt the "less magic" approach described in the issue description. This means that the semanticsof processinstantiation would be as follows: 1. Thearrival of messagethat matches an activity marked with createInstance=yes/rendezvous (and not matching anexisting processinstance) causes a new process instance to becreated. Thismessage is termed the "instantiating message" for that process instance. ThecreateInstance=yes/rendezvous activitythat was used to justify the instantiation is termed the "instantiating activity" for that processinstance. 2. Oncea process instance is created, all its activities are executed in the order dictated by the structure ofthe process.3. When a <receive> or <pick> activity with createInstance=yes is executed, the message"received" willbe the "instantiating message" of the processinstance. 4.When a <receive> and <pick> activity with createInstance=rendezvous is executed, the message "received" will be either: a ) the "instantiating message" if saidactivity is the"instantiating activity" b ) some other message matching thecorrelation key fromthe "instantiating message" if said activity is not the "instantiating activity" Key changes to text: 6.4: OLD: This is done by setting the createInstanceattribute ofsuch an activity to "yes". When a message is received by such an activity, an instance of the business process is created if it does not already exist (see Providing Web Service Operations and Pick). NEW: This is done by setting the createInstanceattribute ofsuch an activity to "yes". When a message thatmatches suchan activity is received, an instance of thebusiness processis created if it does not already exist (seeProviding WebService Operations and Pick). OLD: To be instantiated, each business process mustcontain atleast one such "start activity." This must be an initial activity in the sense that there is no basicactivity thatlogically precedes it in the behavior of the process. NEW: To be instantiated, each business processmust containat least one such "start activity." ----strike--- 11.4: OLD: A receive activity annotated in this way MUST bean initialactivity in the process, that is, the only other basic activities may potentially be performed prior to or simultaneously with such a receive activity MUSTbe similarlyannotated receive activities. NEW: -----strike---- 13.5.3: OLD: If the event handler is associated with theglobal processscope, the event handler is enabled as soon as the process instance is created. The process instance iscreated when thefirst receive activity that provides for thecreation of aprocess instance (indicated via the createInstanceattribute setto "yes") has received and processed thecorresponding message.This allows the alarm time for a global alarm event to be specified using the data provided within the message that creates a process instance, as shown in thefollowing example:NEW: If the event handler is associated with theglobal processscope, the event handler is enabled as soon as the process instance is created. Note: alarm time for a global alarm event /cannot/ be specified using the data provided within the message that creates a process instance! On Mon, 2004-10-04 at 17:14, ws-bpel issues list editor wrote:This issue has been added to the wsbpel issue list witha statusof "received". The status will be changed to"open" if the TCaccepts itas identifying a bug in the spec or decides it shouldbe acceptedspecially. Otherwise it will be closed without furtherconsideration(but will be marked as "Revisitable") The issues list is posted as a Technical Committeedocument to theOASIS WSBPEL TC pages on a regular basis. The currentedition, as a TCdocument, is the most recent version of the documententitled in the"Issues" folder of the WSBPEL TC document list- the nextposting as aTC document will include this issue. The list editor'sworking copy,which will normally include an issue when it isannounced, isavailable at this constant URL. Issue - 168 - Semanticsof instancecreation Status: received Date added: 4 Oct 2004 Categories: State management Date submitted: 30 September 2004 Submitter: Maciej Szefler Description: Discussions of issue 81 : Are startactivities thataren't createInstance activities legal? have broughtto light acertain deficiency of clarity in the currentspecificationwith respect to issue of instance creation. The present specmakes variousvague and somewhat contradictory statements as to howcreateInstanceactivities should be handled. On the one hand, the spec suggests that processcreationis"implicit"and that the createInstance flag is merely an annotationthat defineswhich message events cause an instance to be createdand that oncecreated the process instance processes all activitiesin the samemanner largely oblivious to the value of thatannotation.On the other hand, the spec restricts the set of activitiesthat are"initial" activities, and establishes exceptional semantics (for process-level event handlers) that couldbe construedto imply thatcreateInstance activities are actually activated beforeany otheractivities, irrespective of their actual location inthe process.I posit that the former interpretation provides aconcise andmanageable view of the instance creation process. By makingthe specconsistent with it we can define executionsemantics of asingle process instance without reference to instance creation. Wecan handleinstance creation simply and separately by stipulating thata processinstance is created when a message event thatwould matchone of thecreateInstance activities is received. This messageevent is"allocated" to that activity, so that when thatactivityisactuallyactivated (in the normal course of process instanceevaluation) itwill receive the said event. The major implication of this model on executionsemantics is theelimination of the notion of "initiate" activities.This conceptbecomes unnecessary. One might object on the basis thatwithout theinitiate activity restrictions the followingprocess would beperfectly legal: <sequence> <invoke .../> <receive createInstance="yes" .../> </sequence> Such a process certainly seems objectionable.However, thedetails ofnormal execution semantics would make such a processunlikely. That isto say, the <invoke> would need to use a messagevariable (for therequest), and that variable could not have beeninitialized unlesssome activity preceded the <invoke>. One might thenobject with thefollowing: <sequence> <receive createInstance="no" .. var="foo"/> <invoke ... inVar="foo"/> <receive createInstance="yes" ..> </sequence> However, in this process the first receive isinvalid unless acorrelation set is used. But in order to use thecorrelation set, itfirst needs to be initialized, and the only wayto do thatis with aninvoke or a receive/pick that precedes it, soyou're backto needing a<receive> to precede the <invoke>. This receive wouldhave to havecreateInstance="yes" lest it run into the same problem.But if thisreceive had createInstance="yes" then the sameannotation on thesecond <receive> would be invalid. Now, one might get cleverer still and objectbased on thefollowing somewhat convoluted process: <sequence> <assign> <copy> <to variable="foo"/> <from> literal </from> </copy> </assign> <invoke ... inVar="foo"> <correlation name="cset1" initiate="yes"pattern="in"/></invoke> <receive createInstance="no" ..> <correlation name="cset1" initiate="no" /> </receive> <receive createInstance="yes" ..> </sequence> However the above construct would result in ALL processinstanceshaving the same correlation set value, whichdoes not makeany sense.But one could still object by changing the pattern to"out" on theinvoke, and asserting that the partner generatesunique outputmessages for each invocation thereby yielding uniquecorrelation keys.But even this very brink of the edge case forces us tochange nothingin the semantics. The only significantimplication is thatin certainunlikely circumstances, the implementation might have to handle <invoke>s and non-createInstance<receive> before ithas achance tooffload the createInstance message to thecreateInstance <receive>(i.e. it needs to provide a "memory" for themessage thatcreated theinstance). The only plausible use case for this kind ofbehavioris for initialization of static content. Finally, adopting uniform execution semantics wouldlead us toelimination of the exceptional language in the spec thatrequires thatprocess-level alarm handlers can use data that wouldnormally only bevalid after a receive activity completes. This is not soonerous, asit is possible to move a process-level event handlerinto a scopefollowing the initial receives. Changes: 4 Oct 2004 - new issue______________________________________________________________________To comment on this issue (including whether itshould beaccepted), please follow-up to this announcement on the wsbpel@lists.oasis-open.org list (replying to thismessage shouldautomatically send your message to that list), or ensurethe subjectline as you send it starts "Issue - 168 -[anything]" orisa reply tosuch a message. If you want to formally propose aresolution to anopen issue, please start the subject line "Issue - 168- Proposedresolution", without any Re: or similar. To add a new issue, see the issues procedures document (but the address for new issue submission is thesender of thisannouncement).Choreology Anti virus scan completedTo unsubscribe from this mailing list (and be removed fromthe rosterof the OASIS TC), go tohttp://www.oasis-open.org/apps/org/workgroup/wsbpel/members/leave_workgroup.php.To unsubscribe from this mailing list (and be removed fromthe rosterof the OASIS TC), go tohttp://www.oasis-open.org/apps/org/workgroup/wsbpel/members/leave_workgroup.php.To unsubscribe from this mailing list (and be removed from the roster of the OASIS TC), go to http://www.oasis-open.org/apps/org/workgroup/wsbpel/members/leave_workgroup.php. |
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]