RE: [wsrp-coord] Events vs StateChanges

From
Tamari, Yossi <>
Date
2003-08-06T10:08:43+00:00
ID
Thread
RE: [wsrp-coord] Events vs StateChanges
Title: RE: [wsrp-coord] Events vs StateChanges

Hi 
Andre,

 

I am 
also less comfortable with the exposed state model, but the "justification" from 
its proponents is that the portlet chooses which property it wants to expose for 
reading or writing, so in effect it is equivalent to the event model. (each 
inbound/outbound event can be modeled as a readOnly/writeOnly property, and 
vice-versa.)

 

Event 
transformation example: Say the race car telecast portlet from my previous 
examples exposes an event CarSelected, and passes as parameters all its 
information regarding this car (driver info, car model, etc.), in addition to 
the car number. On the other hand I have a portlet that displays driver history, 
but it does so based on getting the driver name (through an event). It does not 
expect all the extra info that the telecast portlet exposes. Event Mapping 
enables the consumer (with the help of the page designer) to extract the driver 
name from the published event, and send it to the the driver history 
details.

Another more rudimentary example: An SAP R/3 sales orders portlet 
contains an event CustomerSelected [outbound, CustomerIdType], which is 
fired when the displayed sales order changes, so that another SAP R/3 customer details portlet 
can synchronize with the displayed sales order. However, a specific customer 
uses Siebel to hold its customer details, and has a Siebel portlet that 
subscribes to the event DisplayCustomer [inbound, CustomerIdType]. Because the 
names of the events are different, without some kind of consumer mapping, the 
two portlets cannot coordinate. With a simple event name mapping the problem is 
solved.

 

We 
should remember that we cannot prevent event mapping, even if the spec will says 
it is disallowed, since any one can create an invisible portlet that subscribes 
to event A and sends event B. This portlet could then always send event B when 
it receives event A with some parameter manipulation. So event mapping will 
happen. Now we should try to make it work well.

 

I 
think we all agree on having the consumer as event broker for in-band events. It 
is not as clear for OOB events, which is another reason to leave it out of 
scope.

 

    Yossi.

  
-----Original Message-----
From: Andre Kramer 
  [mailto:]
Sent: Wednesday, August 06, 2003 
  12:48 PM
To: 
Subject: RE: 
  [wsrp-coord] Events vs StateChanges

  
Yossi,

  
 

  
Thanks for explaining the shared data model.

  
 

  
Still seems to break encapsulation, as the consumer is directly 
  involved in all interactions.

  
 

  
On 
  event transformations - I'm not uncomfortable, just less comfortable 
  (would like to see examples). 

  
 

  
Both 
  seem to model the consumer as a broker (mediating events or performing direct 
  writes) so maybe that's our core pattern?

  
 

  
regards,

  
Andre

  
    
-----Original Message-----
From: Tamari, Yossi 
    [mailto:]
Sent: 06 August 2003 
    10:30
To: 
Subject: RE: 
    [wsrp-coord] Events vs StateChanges

    
Hi 
    Andre,

    
 

    
What Mike is proposing is not that one portlet can 
    change the state of another, or send an event to another, but that it can 
    declare its own state has changed, and that enables consumers to change the 
    state of another portlet when the state of the first portlet is changed. 
    

    
(In other words, each portlet exposes a set of 
    properties, that can be readOnly\writeOnly\both, and the consumer reads 
    state changes from one portlet and writes them to 
    another).

    
Of 
    course, this requires mapping, since there is absolutely no way for two 
    portlets to communicate without the consumer knowing which 
    of their properties need to be mapped. This is another huge advantage 
    of the events model, since if two portlets agree on the signature of an 
    event, no mapping is needed.

    
 

    
I 
    do not see why you are uncomfortable with event mapping. What is wrong in a 
    situation where a consumer decides that that portlet A exposes an event that 
    is logically the same as an event that portlet B subscribes to, and decides 
    to do some match-making? This would need tailoring at the page level by the 
    page designer at the consumer, and certainly not every portal would support 
    this, and the spec does not need to specify how it should be done. The model 
    should simply allow events to have enough metadata to enable 
    this.

    
 

    
    Yossi.

    
      
-----Original Message-----
From: Andre Kramer 
      [mailto:]
Sent: Wednesday, August 06, 
      2003 11:10 AM
To: 
      
Subject: RE: [wsrp-coord] Events 
      vs StateChanges

      
I've got some background in CCS & CSP so am used to 
      pure signals and very 
comfortable with extending 
      such a (message based) model to carry data 
(events 
      (c) in Mike's email). Another common extension is to add a broker 
      
or event mediation layer (brokered events - i.e. 
      the consumer routes events). 

      
I'm less comfortable with arbitrary consumer 
      transformations of events 
and would like to see a 
      proposal. Maybe supporting event sub-typing 
to 
      allow a portlet to register for generic sets of events would cover 
      
most use cases? 

      
I'm very uncomfortable with any direct state based 
      approach (Portlet A 
can update a shared variable 
      on Portlet B) as this seems to break 
encapsulation 
      even more than consumer event transformation. Allowing 
portlet A to force a state transition on another portlet has 
      similar 
encapsulation problems. 

      
Mike - for (d,e) are you proposing that portletA can do 
      
portletB.write("variableName", "value") 
      
or 
portletB.goto("stateName", 
      "withData") 
or ...? 

      
regards, 
Andre 

      
-----Original Message----- 
From: 
      Michael Freedman [mailto:] 
      
Sent: 06 August 2003 00:58 
To: 
       
Subject: 
      [wsrp-coord] Events vs StateChanges 

      
Last week we discussed the value of defining an in-band 
      event model vs. 
a state changed model.  Here 
      are some further thoughts: 
      I see the following types of events 
      that could be dealt with: 
       a) WSRP events -- these are 
      well known events that WSRP defines 
-- currently 
      these "events" are implicit in our protocol being 
explicitly represented as lifecycle calls [and their 
      
parameters/returns]:  i.e. perform 
      action,  render.  Examples of such 
events we might consider adding are Begin/EndTransaction.  
      I.e. placing 
a series of calls between portlets 
      within a consistent transaction. 
[Important once 
      we start propagating state changes/data across portlets?] 
       b) Mappable events -- these 
      are events typically defined by the 
producer 
      [though also can be done by the consumer] that the receiving 
      
portlet is not aware of.  Consumers provide a 
      facility to declare 
mappings from one portlets 
      event namespace to anothers.  Yossi indicated 
he will provide some examples of this. 
       c) Known events -- these are 
      events typically defined by the 
producer [though 
      also can be done by the consumer] that the receiving 
portlet is aware of.  No mapping is necessary, consumer merely 
      route the 
events to interested parties.  
      Commonly used within a producer to build 
cooperation within a known set or portlets or by producers building 
      
building-block portlets that it hopes other 
      producers will include in a 
cooperating 
      set. 
       d) 
      Mappable state changes -- probably the most common form of 
      
mappable event where the consumer acts as a 
      mediator for data exchange 
between two 
      portlets.  I.e. an action results in state changes, a 
      
portion of which a portlet wishes to publish [e.g. 
      bug report number]. 
 The consumer understands 
      that the portlet "publishes" this data and 
supports mapping it to similarly published state in another 
      portlet. 
      e) Known 
      state changes -- like known events, the consumer doesn't 
provide any mapping -- the sending/receiving portlets 
      understand/agree 
on the data being exchanged via 
      prior knowledge/agreement. 

      
I agree with Yossi that Mappable events are a 
      generalization of mappable 
state changes.  
      However, I am not yet convinced that our in-band 
mechansim needs this generalization.  For me there is a 
      developer and 
user cost/complexity to introducing 
      MappableEvents here.  As I don't yet 
have an 
      example of a pure event -- one that indicates no state 
change/has no associated state -- A mappable event leaves the 
      developer 
in the quandry of whether to define a 
      new event for every state change 
or whether to 
      expose the state changes via a common event [e.g. 
UpdateModel].  The later has the benefit of having a single 
      form 
allowing the consumer to present a simplified 
      user interaction -- map 
from this portlets 
      published data to the other ones.  When individually 
named events are involved the user must first choose the event they 
      want 
to map and then map the data between the 
      events.  For me, this is an 
unnecessary 
      complication to the user interaction. Until I see/understand 
      
the use cases for in-band mappable events that 
      aren't satisfied by 
mappable state changes my 
      preference is to limit our in-band mechanism 
just 
      to mappable state changes.  

      
As for (c) and (e) -- known events/state changes -- should 
      we care and 
if so what is its priority?  
      Mappable events/state changes is a superset 
of the 
      known case -- should we care and if so is it a priority to 
      
support Consumers who merely want to deal with 
      distpaching/managing 
known events/state changes 
      but not mappable ones?  
    
      -Mike- 

      
You may leave a Technical Committee at any time by 
      visiting http://www.oasis-open.org/apps/org/workgroup/wsrp-coord/members/leave_workgroup.php