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


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


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