I've been watching this conversation from the sidelines.  I see in the email 
description below the purpose of the new "Dialog" object:

1.
>> To me, the lifetime of the state information is the key
>> distinguishing feature to this gadget -- so if we don't like
>> "dialog" then maybe some name around that idea would be more
>> appropriate.

Are there any other things that make this object unique?  Are there current 
examples of how it would be set up or used?  I was thinking about how this idea 
would be implemented if #1 was the only requirement and came up with the 
following.  I hope it adds value to the discussion.  

I took a look at the DialogController Shale source and it seems that the 
methods are defined via "code" but the goal is essentially to replicate session 
at a smaller level.  If this is the only case (and I may be way off base here) 
why not introduce a mock "session" object so that the actions/etc are none the 
wiser.  The end of a dialog would be defined by some "final" action that would 
clean up the session so the Cancel/Complete wouldn't matter.  Here's some 
pseudo-code to show what I was thinking:

        // I have no clue on Shale config so this is basically a struts example 
that would need to be modified for the equivalents in Shale
        <action    
            path="/action/rates/GetAutoRateQuote"
            type="com.xxx.xxx.StartAutoRateQuote"
            name="formName"
            dialogName="dialogName"  /* THIS WOULD BE HOW MULTIPLE ACTIONS CAN 
BE GROUPED AS A DIALOG" */
            validate="false">
            <forward name="success" path="/jsp/path/thejsp.jsp"/>
        </action>

At the server you check if a dialogName exists, if so then it's a dialog.  If 
that dialog is not currently in existence, then create a session space for it:

        if(session.getActiveDialogs().get(dialogName)==null){ //no session with 
that name exists
                webSession = session; // Just to illustrate that this is the 
"REAL" session
                dialogSession = new dialogSession(session); // session is 
passed so the user can use the same session life-cycle methods on a mini scale 
and it has a reference to the "real" session object as needed to look up 
objects.  If it is not found in dialog session it can then check "real" session
                webSession.set(DIALOGSESSION+"_"+dialogName, dialogSession);   
//Give the dialog session a spot in the real session             
        }
        //The call to the action/dialog in this case would pass the 
dialogSession instead of the real session in this case.  So a call to 
session.invalidate() would just remove the dialog from the real session.  

Maybe there are other goals for dialog that I am not aware of that this would 
not work for.  I think the above would essentially make a struts app a series 
of dialogs for the most part except probably the login/logout and other 
universal functions.  Of course the naming above would be confusing as hell so 
you'd probably want to use better names in the "execute" type method so the 
user doesn't think they're working with a session.  Maybe a name like "Scope", 
so you're passed a scope as part of the execute method to make it clear that 
any of the work you do is limited to whatever the configuration scope is 
(handled as part of config).

Please advise how this may or may not suit your needs.  I hope I'm not 100% 
off-base here.

Regards...djsuarez

-----Original Message-----
From: Ted Husted [mailto:[EMAIL PROTECTED] 
Sent: Thursday, January 20, 2005 5:04 AM
To: Struts Developers List
Subject: Re: [shale] Re: Struts Shale

It would be a good idea to name both the set and the member at the same time. 

Some suggestions

* Activity and Task
* Circuit and Gate
* Track and Step 
* Process and Node

which leads to conjugations like 

* ActivityState
* CircuitState
* TrackState
* ProcessState

If this were Friday, I might add 

* Ripple and Domino :)

-Ted.

On Thu, 20 Jan 2005 05:07:03 +0000, Duncan Mills wrote:
> In the past I've been around this merry-go-round on another
> Controller implementation, the end result of that painful exercise
> in semantics was the following:
> 1) An activity - a single node on the flow - display a page, send
> an email, execute this code etc.
> 2) A Process - a group of activities,  logically of course this
> process itself can be nested as an activity in a flow.
>
> So this is why I tend to use process, it's also neutral enough to
> (I think) co-exist with the scope's we're used to.  Another factor
> here is that using an overloaded term (like dialog) is acceptable
> to a native English speaker but can be confusing if English is not
> your primary language, this would also rule out a term like Wizard.
>
> Duncan
>
>
> Craig McClanahan wrote:
>
>> The only problem I have with "wizard" is that it implies a serial
>> forwards-backwards flow.  I can see cases for dialogs :-) with
>> branches in them.  (It's the same reason I took standard "next"
>> and "previous" methods back out of the API ... the concept
>> doesn't always apply.
>>
>> To me, the lifetime of the state information is the key
>> distinguishing feature to this gadget -- so if we don't like
>> "dialog" then maybe some name around that idea would be more
>> appropriate.
>>
>> Craig
>>
>>
>> On Tue, 18 Jan 2005 15:16:16 -0500, Sean Schofield
>> <[EMAIL PROTECTED]> wrote:
>>
>>
>>>> I almost suggested the same thing: "conversation".  Its
>>>> length, though, could be unfriendly.  ConversationController.
>>>> What about "dialogue" with the "ue" at the end?
>>>>
>>>>
>>> What about "wizard?"  This is what we call our own custom
>>> solution that we're using now.  Wizard generally implies a
>>> guided series of steps where you can go forwards and backwards
>>> (at least to me it does.)
>>>
>>> sean
>>>
>>> ----------------------------------------------------------------
>>> ----- To unsubscribe, e-mail: [EMAIL PROTECTED]
>>> For additional commands, e-mail: [EMAIL PROTECTED]
>>>
>>
>> ------------------------------------------------------------------
>> --- To unsubscribe, e-mail: [EMAIL PROTECTED] For
>> additional commands, e-mail: [EMAIL PROTECTED]






---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to