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 36 - Multiple instances of event handler


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

<catch faultName="qname"? faultVariable="ncname"? faultType="qname"?>
      activity
</catch>

As opposed to

<catch faultName="qname"? faultVariable="ncname"?>
  <scope>
    <variables>
       <variable name="ncname" messageType="qname"/>
    </variables>
      Activity
  </scope>
</catch>

As mere syntactic variants with absolutely identical semantics.

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
..)....

I don't see what all this syntactic addition is buying us except the
statement that variables can only be declared *syntactically* within
scopes.

I am deliberately going beyond today's catch syntax because I have a
feeling we will need to catch faults by type eventually, esp relative to
WSDL 1.2.

And by the way the current catch syntax is broken because we make 

A.  The faultName optional, and
B.  the faultVariable ".. deemed to be declared by virtue of being used
as the value of this attribute and is local to the fault handler .."

Thus when the faultName is missing, the type of the faultVariable is
unknown.

Satish



-----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/leave_workgr
oup.php.





[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]