[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: Re: [wsrp] spec-2.0-draft-05: events and blocking actions
Some more comments below.
Subbu
> From the Producer point of view, handling the user interactions and the
> events are very similar tasks. The spec describes an interaction as an
> “encodable event” (6.4.2), which points out that interactions and events
> are just two different ways to invoke the same Portlet logic.
> This idea however is not expressed strongly in the spec, which causes
> some confusion. Below is a list of questions:
>
> 1. HandleEventResponse and BlockingInteractionResponse are
> identical, but defined as two distinct types, why is this?
>
> <rdt>Opened issue #43</rdt>
I thought we discussed this during last F2F, but I don't recollect what
the resolution was.
> 2. According to paragraph 6.4.2.1 Event Handling, the Consumer
> may invoke handleEvent() on different Portlets simultaneously. But if
> the event handling has the same Producer-side semantics as processing
> user interaction, all the restrictions described in paragraph 6.4.1 must
> be applicable as well. Which means that all the operations on the page
> must be blocked until handleEvent() either returns or fails.
>
> <rdt>My understanding from the discussion to-date is that handleEvent
> invocations may happen in parallel, but that other processing is blocked
> until the Consumer decides it has no more events for a particular
> portlet. The Consumer may then start a getMarkup on that portlet. I'm
> sure we need to be more explicit about this ... do people think that the
> Consumer must wait for all portlets to exit the event distribution step
> before starting to collect markup? </rdt>
I agree that we need to be explicit. Semantically, it would be
consistent to specify that event distribution is blocking.
> 3. What if HandleEventResponse contains events? Must they be
> processed by the Consumer?
> Let’s consider a Consumer processing a page which contains two portlets:
> P1 and P2.
> a. Consumer calls P1.performBlockingInteraction(), and gets event E1
> b. Consumer propagates the event to the Portlets:
> i.
> Question: should the consumer invoke P1.handleEvent(E1)? I guess no…
> <rdt>The Consumer is not bound to send the event to any portlets and I
> expect most will explicitly exclude the source portlet. Should we make
> this explicit in the spec so that portlets design for it?</rdt>
It is perfectly valid for P1 to subcribe for E1. I don't see any reason
to exclude this possibility.
ii.
> Consumer calls P2.handleEvent(E1) and gets another event E2 in the
> response.
> iii.
> Must the Consumer call P1.handleEvent(E2)? If yes, there could be an
> endless loop; if no, the HandleEventResponse should not contain events…
> <rdt>The Consumer is free to exit the event distribution step whenever
> it wants to. As part of loop prevention, Consumers should have a limit
> on the number of generations of events they distribute ...</rdt>
>
> Regards,
> Artem
> *Artem Spector* | Portal Platform Infrastructure | NetWeaver Application
> Platform | SAP Labs Israel| (+972-9) 7779567
>
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]