[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: RE: [wsbpel] Issue 36 - Multiple instances of event handler
Maciej,
I seem to have misunderstood what we agreed at the recent F2F. I
thought everyone present agreed including Assaf that we need the
*semantics* of the two syntactic variants I described below. We didn't
really discuss syntax in detail.
Assaf, if you disagree please let us know.
Satish
-----Original Message-----
From: Maciej Szefler [mailto:mbs@fivesight.com]
Sent: Thursday, September 25, 2003 3:01 PM
To: Satish Thatte
Cc: wsbpel@lists.oasis-open.org
Subject: RE: [wsbpel] Issue 36 - Multiple instances of event handler
Satish wrote:
> Hmm. This isn't how I was thinking of the alternatives.
> Specifically,
> what you are calling "copy" was not an alternative I had
> thought of. I
> was thinking of
The "copy" semantics were the original solution proposed by Arkin at the
last F2F.
>
> <catch faultName="qname"? faultVariable="ncname"? faultType="qname"?>
> activity
.
.
.
>
> As mere syntactic variants with absolutely identical semantics.
Yes, once you buy into the idea of not copying (this is the root of my
objection), this boils down to syntactic variation.
>
> I am uncomfortable with having to repeat the faultVariable name, check
> that it occurs, force every catch and event handler to have
> an outermost
> scope (yes I knopw that a catch handler might not have fault variable
> ..)....
Anywhere a variable is referenced we have to check that it occurs, it's
just a matter of where we are checking (which scope); as for the
repetition, the same repetition is present in the current version of the
spec: my proposal does not alter the current BPEL syntax one bit, it
merely changes the semantics. I do agree that the need (in most cases)
to declare the outermost scope explicitly in order to get the typically
desired result is awkward (here there is a revolutionary syntactical
solution: eliminate the <scope> activity).
>
> I don't see what all this syntactic addition is buying us except the
> statement that variables can only be declared *syntactically* within
> scopes.
Again, these are not syntactic additions: what I am proposing is the
syntactic status-quo with some changes to semantics. I really don't much
care whether we keep the present syntax and adopt my proposed semantics,
or modify the syntax so that event and fault variables are declared in
the <onMessage> and <catch>elements; what I really don't want is the
current syntax with the copy semantics.
-maciej
>
>
>
> -----Original Message-----
> From: Maciej Szefler [mailto:mbs@fivesight.com]
> Sent: Thursday, September 25, 2003 9:12 AM
> To: Satish Thatte
> Cc: wsbpel@lists.oasis-open.org
> Subject: RE: [wsbpel] Issue 36 - Multiple instances of event handler
>
> The differences in BPEL between copying and properly scoping the
> variable would be as follows:
>
> -- SCOPING METHOD --
> <scope name="S">
> <!-- no variables declared (none are used by this scope) -->
> <eventHandler>
> <onMessage variable="foo">
> <!-- "foo" refers into the scope instantiated by the onMessage
> (SE) -->
> <scope name="SE">
> <variable name="foo" />
> <!-- "foo" is local to the scope in which it used -->
> <activity-using-foo/>
> </scope>
> </onMessage>
> </eventHandler>
>
> <faultHandlers>
> <catch faultName="..." faultVariable="flt">
> <scope name="SF1">
> <variable name="flt" messageType="xx:fltType1" />
> </scope>
> </catch>
> <catch faultName="..." faultVariable="flt">
> <!-- the name "flt" can be reused, other "flt" was local to
> scope "SF1" -->
> <scope name="SF2">
> <variable name="flt" messageType="xx:fltType2" />
> </scope>
> </catch>
> </faultHandlers>
> </scope>
>
> -- COPY METHOD --
> <scope name="S">
> <!-- variables used by event and fault handlers defined in
> this scope
> even though they are never initialized/used in this scope. -->
> <variable name="foo" .... />
>
> <!-- different fault variable names need to be used for the
> different fault types. -->
>
> <variable name="flt1" messageType="xx:fltType1" />
> <variable name="flt2" messageType="xx:fltType2" />
>
> <eventHandler>
> <onMessage variable="foo">
> <scope name="SE">
> <!-- no variables declared, although silently scope "SE" is
> infused a new instance of variable "foo" from scope "S"
> which hides scope "S"'s version of the variable -->
>
> ....
> </scope>
> </onMessage>
> </eventHandler>
>
> <faultHandlers>
> <catch faultName="..." faultVariable="flt1">
> <scope name="SF1">
> ..
> </scope>
> </catch>
> <!-- again, second fault handler needs a different faultVariable
> name,
> to not clash with the first -->
> <catch faultName="..." faultVariable="flt2">
> <scope name="SF2">
> ..
> </scope>
> </catch>
> </faultHandlers>
> </scope>
>
> The big problem I see with the above "copy method" is that it requires
> that variables are declared in a scope in which they do not belong.
> Consider this similarl syntax for an analogy:
>
> method() {
>
> Exception1 ex1;
> Exception2 ex2;
> try {
> foo();
> } catch (ex1) {
> ..
> } catch (ex2) {
> ..
> }
> }
>
> .. similar thing, variables defined in the wrong scope. The other
> problem is the necessity of introducing "reproduce variable
> from scope X
> in scope Y (a child of X)" type language to the operational semantics;
> this may not be that difficult but it just adds unnecessary
> clutter. If
> the forward reference thing scares people then I think the
> suggestion of
> adding a variable type attribute to the <onMessage> and
> <catch> elements
> is, despite its faults, far superior to the copy method.
> -maciej
>
>
>
> > -----Original Message-----
> > From: Satish Thatte [mailto:satisht@microsoft.com]
> > Sent: Monday, September 22, 2003 5:41 PM
> > To: Maciej Szefler; edwink@collaxa.com; Francisco Curbera
> > Cc: wsbpel@lists.oasis-open.org
> > Subject: RE: [wsbpel] Issue 36 - Multiple instances of event handler
> >
> >
> > Maciej,
> >
> > Fault handlers can also be thought of as onFault event handlers in a
> > sense (though they obviously have other consequences like failed
> > completion of scope). We should at least be consistent
> between fault
> > handler and event handler syntax. Especially because fault
> > names MAY be
> > going away in WSDL 1.2 and if that happens they will become
> even more
> > similar.
> >
> > I don't have a strong preference for a specific syntax yet --
> > could you
> > post a couple of examples illustrating why the forward
> > reference variant
> > is better or simpler to understand?
> >
> > Satish
> >
> > -----Original Message-----
> > From: Maciej Szefler [mailto:mbs@fivesight.com]
> > Sent: Monday, September 22, 2003 7:12 AM
> > To: edwink@collaxa.com; Francisco Curbera
> > Cc: wsbpel@lists.oasis-open.org
> > Subject: RE: [wsbpel] Issue 36 - Multiple instances of event handler
> >
> > I think you guys are trying to hard to map this into functional
> > programming style. In the pass-by-value world, a functional argument
> > merely exposes a variable declared inside the function scope to the
> > calling scope (so it can be initialized by the caller); typing the
> > argument in the function decleration is a notiational
> convenience for
> > the programmer so that he does not have to declare the
> variables twice
> > (ala old K&R style C declerations). From an operational
> point of view
> > there is no doubt that these variables are scoped within
> the function
> > (again, we're not talking about pass-by-reference aliases
> here). Since
> > we are not dealing with a functional language, it seems completely
> > wrong-headed to me to be adding constructs that resemble functional
> > notation simply because they are familiar. Lets not make this more
> > complicated than it needs to be: we have everything we need to make
> > onMessage behave like it should simply by specifying (in the
> > operational
> > semantics) which scope the name is resolved in. There is no
> > reason to be
> > afraid of a "forward reference" to a variable declared in the child
> > scope: this is a rather antiquated and inappropriately applied
> > prejudice. There is nothing that could be simpler or more natural in
> > this context. The proposed alternatives, "copying" the variable, or
> > "typing" the variable in the onMessage element are
> round-about ways of
> > getting the same result (that the variable name is resolved in the
> > onMessage activity's scope). The "copying" option is bad because it
> > makes us declare a variable in a scope in which it is completely
> > unnecessary, and then adds complexity by forcing the
> implementation to
> > duplicate the variable in the correct scope. The "typing"
> > option is bad
> > because it attempts to introduce functional syntax in a
> non-functional
> > language, it needlessly adds more attribute elements to the
> > syntax, and
> > most importantly it further complicates implementation by
> providing an
> > alternative way of declaring variables within a scope.
> >
> > I would also disagree with the suggestion that parallel
> event handling
> > is unnecessary; I find this to be one of the most important
> > features of
> > the event handling mechanism, without it there is no way to do
> > long-running request processing against a single BPEL
> process instance
> > like "request notification when process is half filled" or
> > "handle bids
> > from many suppliers". Granted there may be problems in implementing
> > these uses cases in any case, but eleminating parallel
> event handling
> > will certainly make them impossible.
> >
> > -maciej
> >
> > -----Original Message-----
> > From: Edwin Khodabakchian [mailto:edwink@collaxa.com]
> > Sent: Sun 9/21/2003 3:27 PM
> > To: 'Francisco Curbera'
> > Cc: Maciej Szefler; wsbpel@lists.oasis-open.org
> > Subject: RE: [wsbpel] Issue 36 - Multiple instances of event handler
> >
> >
> >
> > +1. adding messageType to onMessage would be enough. But there
> > is a side
> > effect. We need to differentiate pick/onMessage and
> > eventHandlers/onMessage.
> > Meaning we need a new name for eventHandlers/onMessage
> > Edwin
> >
> > > -----Original Message-----
> > > From: Francisco Curbera [mailto:curbera@us.ibm.com]
> > > Sent: Sunday, September 21, 2003 10:00 AM
> > > To: edwink@collaxa.com
> > > Cc: 'Maciej Szefler'; wsbpel@lists.oasis-open.org
> > > Subject: RE: [wsbpel] Issue 36 - Multiple instances of event
> > handler
> > >
> > >
> > >
> > >
> > >
> > > It seems that the intended semantics we want to attach to the
> > > variable attribute in onMessage corresponds to that of an
> > > argument in a funcion/method declaration. That is, the
> > > variable is declared by its appearing in the onMessage
> > > statement itself; we are only missing the "type"
> > > statement.
> > >
> > > I guess this is also consistent with the catch model Edwin
> > mentions.
> > >
> > > Paco
> > >
> > >
> > > This is consistent with the
> > >
> > >
> > >
> > >
> >
> > > "Edwin
> > >
> >
> > > Khodabakchian" To:
> > > "'Maciej Szefler'" <mbs@fivesight.com>,
> > > <wsbpel@lists.oasis-open.org>
> > > <edwink@collaxa.c cc:
> > >
> >
> > > om> Subject: RE:
> > > [wsbpel] Issue 36 - Multiple instances of event handler
> >
> > >
> > >
> >
> > > 09/19/2003 03:25
> > >
> >
> > > PM
> > >
> >
> > > Please respond to
> > >
> >
> > > edwink
> > >
> >
> > >
> > >
> >
> > >
> > >
> > >
> > >
> > > This reverse scope resolution seems a little bit black magic
> > > to me. It we decide not to go down the path of serialization
> > > because of sync performance issue, I think that we should
> > > look at the syntax of catch. This will create the need to
> > > have a separate syntax for onMessage in eventHandlers and
> > > onMessage in pick. But it could be a good thing.
> > > Edwin
> > >
> > > > -----Original Message-----
> > > > From: Maciej Szefler [mailto:mbs@fivesight.com]
> > > > Sent: Friday, September 19, 2003 10:24 AM
> > > > To: wsbpel@lists.oasis-open.org
> > > > Subject: [wsbpel] Issue 36 - Multiple instances of event
> > handler
> > > >
> > > > Per the discussion at the face-to-face. My original though
> > here was
> > > > the the implicit scoping present in the BPEL syntax was
> > responsible
> > > > for this problem because it did not allow us to declare the
> > message
> > > > variable in the "most local" scope of the onMessage
> > > handler. I won't
> > > > go into too much detail because as Satish pointed it out
> > > this premise
> > > > is valid only if onMessage were an activity, and it is not.
> > > >
> > > > So, although I still think the syntax is still a bit
> > > confusing as to
> > > > scopes and activities (a <scope> is an activity without an
> > implicit
> > > > scope, and all other activity have an implicit scope,
> > > except that in
> > > > the implicit scope you cannot define variables, and
> > > correlation sets,
> > > > etc...), it is not responsible for this problem.
> > > >
> > > > Which brings me to the proposed solution; I still don't like
> > it.
> > > > Saying that a "copy" of the input variable in the onMessage
> > > handler is
> > > > made for each instance of the handler sounds like a hack,
> > > and confuses
> > > > the operational semantics. I think what we are trying to
> > > say here is
> > > > that the /name/ of the input message variable is /resolved/
> > > not in the
> > > > scope that contains the event handler, but in the scope of
> > the
> > > > activity started by the onMessage event. For example:
> > > >
> > > > <scope name="S">
> > > > <!-- no variables declared -->
> > > > <eventHandler>
> > > > <onMessage variable="foo">
> > > > <scope name="SE">
> > > > <variable name="foo" />
> > > > ....
> > > > </scope>
> > > > </onMessage>
> > > > </eventHandler>
> > > > </scope>
> > > >
> > > > In the above case because the name "foo" is evaluated in
> > > the scope of
> > > > the activity specified for the onMessage event, multiple
> > > instances of
> > > > the event will not use the same variable instance. In the
> > following
> > > > case:
> > > >
> > > > <scope name="S" >
> > > > <variable name="foo" />
> > > > <eventHandler>
> > > > <onMessage variable="foo">
> > > > <activityX>
> > > > </onMessage>
> > > > </eventHandler>
> > > > </scope>
> > > >
> > > > the variable "foo" will be shared by all instances of the
> > onMessage
> > > > event handler, as the implicit scope of "activityX"
> > > > does not define the "foo" variable and so we'll go to the
> > > parent scope
> > > > to resolve it, leading to resolution in scope "S" which is
> > shared.
> > > >
> > > > I believe adopting the above language is cleaner in terms of
> > > > operational semantics: fundamentally if the variable is used
> > in the
> > > > event handler it should not be declared in an enclosing
> > scope, its
> > > > like using a global variable to pass an argument to a
> > function. the
> > > > price is having to declare a scope as the activity for the
> > > onMessage
> > > > event (although if we could define a <variable> in the
> > > implicit scope
> > > > of an activity this would not be necessary).
> > > >
> > > > -maciej
> > > >
> > > >
> > > > > -----Original Message-----
> > > > > From: jevdemon@microsoft.com
> > [mailto:jevdemon@microsoft.com]
> > > > > Sent: Friday, September 19, 2003 10:23 AM
> > > > > To: wsbpel@lists.oasis-open.org
> > > > > Subject: [wsbpel] Groups - f2f-notes-9-18.doc uploaded
> > > > >
> > > > >
> > > > > The document f2f-notes-9-18.doc has been submitted by John
> > Evdemon
> > > > > (jevdemon@microsoft.com) to the OASIS Web Services
> > > Business Process
> > > > > Execution Language TC document repository.
> > > > >
> > > > > Document Description:
> > > > > Sid's notes from yesterday morning. Consider these to be
> > "draft"
> > > > > minutes...
> > > > >
> > > > > Download Document:
> > > > >
> > http://www.oasis-open.org/apps/org/workgroup/wsbpel/download.p
> > > > hp/3565/f2f-notes-9-18.doc
> > > > >
> > > > > View Document Details:
> > > > >
> > http://www.oasis-open.org/apps/org/workgroup/wsbpel/document.p
> > > > > hp?document_id=3565
> > > > >
> > > > >
> > > > > PLEASE NOTE: If the above links do not work for you, your
> > email
> > > > > application may be breaking the link into two pieces. You
> > > > may be able
> > > > > to copy and paste the entire link address into the
> > > address field of
> > > > > your web browser.
> > > > >
> > > > > -OASIS Open Administration
> > > > >
> > > > >
> > > > > 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/le
> > > > ave_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/le
> > > > ave_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/le
> > > ave_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/le
> > ave_workgr
> > oup.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/le
> ave_workgr
> oup.php.
>
>
>
>
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]