RE: [wsrp-coord] Events vs StateChanges

From
Tamari, Yossi <>
Date
2003-08-06T09:11:52+00:00
ID
Thread
RE: [wsrp-coord] Events vs StateChanges
Title: 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