OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

wsrp-wsia message

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


Subject: Re: [wsrp-wsia] [I#179] requestParameter semantics unclear



Mike - I think that this is a very comprehensive writeup of the different
types of state.
A brief comment to your a) and b) questions:

a) I agree that in principal the navigational state that currently flows to
the blocking action could be modeled in the interaction parameters. But you
could also see a (minor?) distinction if you view the navigationalState as
the intrinsic state of the (logical instance of the) portlet object - so
state of the model - and the interaction parameters as modificators - so
state of the controller. The interaction parameters can be used to apply a
controller to the portlet. The result is a modifed (not a new) navigational
state.
So I would vote for leaving navigational state a part of the input
parameters of blocking actions
b) I would say that this is a leftover from a time when we did not have
nonblocking actions.

Best regards
Carsten Leue

-------
Dr. Carsten Leue
Dept.8288, IBM Laboratory Böblingen , Germany
Tel.: +49-7031-16-4603, Fax: +49-7031-16-4401



                                                                           
             Michael Freedman                                              
             <Michael.Freedman                                             
             @oracle.com>                                               To 
                                       wsrp-wsia@lists.oasis-open.org      
             01/06/2003 11:11                                           cc 
             PM                                                            
                                                                   Subject 
                                       Re: [wsrp-wsia] [I#179]             
                                       requestParameter semantics unclear  
                                                                           
                                                                           
                                                                           
                                                                           
                                                                           
                                                                           




Yes, it looks like we have lost some clarity when we added the ability for
actions to return markup.  However, I don't think this requires we separate
query string and form (post) parameters into separate fields.  As a review,
here
is my understanding of what we have been trying to model:

We distinguish between 2 types of state parameters passed to a portlet.
One
type is called navigational state.  The other is interaction state.
Navigational state is the state passed by the consumer to the producer that
allows it to render [over and over again].  I.e. its the "bookmarkable"
state
carried by the consumer [and possibly the client].  Interaction state is
the
"transient" state utilized in actions to affect change.  I.e. in a
simplified
view:
      A blocking action receives interaction parameters and returns
navigational
state.  This navigational state is passed to the subsequent getMarkup (and
follow-on rerenders), but the interaction parameters are not.
      A non-blocking action receives interaction parameters but isn't
allowed to
alter navigational state.  The navigational state passed to the subsequent
getMarkup is the one encoded in the non-blocking action request.  Like the
blocking action, the interaction parameters aren't passed along to the
Getmarkup.
      GetMarkup should only receive navigational state.  Like a
non-blocking
action it can't alter/return new navigational state.

Currently, URLs written by the portlet into its markup contain 2 types of
parameters.  Navigational state is encoded by placing such state in the
value of
the special parameter "wsrp-navigationalState".  Interaction state is
encoded as
extra query string parameters -- i.e. any query string parameters not
reserved
by wsrp.  In addition if the URL is the action of a form, the form
parameters
are also considered interaction state.

Though I know the bulk of this discussion thread has concerned itself with
[whether or not] to distinguish between interaction state encoded in the
query
string vs. as form parameters I think we should really be focusing on
properly
distinguishing between navigational state and interaction state.  For
example:
    a) Why do we allow a blocking action URL to explicitly carry the
navigational state since a blocking action is now required to return new
navigational state if it wants any?
    b) Why do we allow a render URL to carry extra parameters not in its
navigational state?

A "pure" model based on my descriptions above might work something like
this:

A blocking action only encodes interaction parameters -- any previous
navigational state that needs to be passed to the action is represented in
predefined interaction parameters.  If we keep to the current model, these
interaction parameters are signified in the rendered URL as query string
parameters whose names aren't from the reserved list.  Alternatively we
could
simplify things and use a interactionState token [ala navigationalState].
The
benefit of doing this alternative is that any portlet specific parameters
in the
URLs query string MUST be namespaced while this can be avoided if we hold
these
parameters using a reserved name.

When the blocking action is called it receives the parameters in its
InteractionParams data structure.  I.e. though it receives a MarkupParms
structure [so it can render if it wants to], the navigational state in this
structure is NIL [pending the return from the blocking action].  Likewise,
as
getMarkup only receives navigational state the current field
requestParameters
is removed.  To hold this information in InteractionParams I propose we
expand
the structure to hold both binary data and form data.  A field would be
added to
distinguish the type of interaction parameters are passed.  When form data,
I
would propose all parameters be collapsed into a single parameter array
though
we can continue discussing the merits of differentiating between those in
the
query string and those in the posted form.

The blocking action processes the action based on the passed parameters and
returns new navigational state [if needed] and if optimized the actual
markup.
We leave it up to the portlet/action to properly encode/model this new
navigational state to its optimized getMarkup call.

A non-blocking action encodes both interaction parameters and navigational
state.  The interaction parameters are used during the non-blocking action.
The
navigational state is the predefined state used for the subsequent
getMarkups
[as no new navigational state can be returned].  When the non-blocking
action is
called it receives the interaction parameters in the InteractionParams data
structure as described above.  In addition it receives the navigational
state in
the MarkupParams structure.

Finally, the render [getMarkup] only deals with navigational state.  Thus
only
navigational state can be represented in generated render URLs.  Likewise
getMarkup only receives the MarkupParams structure.

        -Mike-



----------------------------------------------------------------
To subscribe or unsubscribe from this elist use the subscription
manager: <http://lists.oasis-open.org/ob/adm.pl>





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


Powered by eList eXpress LLC