Jordan,

I think I understand pretty well, what you are trying to do. However according to your configuration you should not be able to execute "/registration/2" before having executed "/registration/1".

Here are some examples:

/registration -> /registration/1 -> /registration/1->/registration/2 - this should work
/registration -> /registration/1 -> /registration/3 - this should fail with the last action
/registration -> /registration/1 -> /registration/2->/registration/1 - this should fail with the last action
/registration -> /registration/1 -> /someAction->/registration/2 - this should work, if "/someAction" is not part of the workflow

Maybe you can try these examples out and see if it works as expected.

Remark to the last example: The last example works, if "/someAction" is not part of the registration-workflow, because it does not change the state of this workflow.

--- Matthias




Jordan Thomas wrote:

Yes, I see what you are saying and if I define the next state, then if I
try to jump out of the workflow I get a an exception saying that it is
not allowed by the workflow.
What makes me think that it is disregarding the wrokflow is that I can
enter the workflow at an point (i.e /registration/2) without having
executed any of the other steps. Essentially, all I want to do is not
control where the user goes but where the user came from. This way, it
cascades backwards ensuring that the user enters in all of the data.
Is this clearer? Hopefully you have an idea on how to solve this one.

Cheers and thanks for the help

Jordan

-----Ursprüngliche Nachricht-----
Von: Matthias Bauer [mailto:[EMAIL PROTECTED]] Gesendet: Wednesday, 27 November 2002 1:22 PM
An: [EMAIL PROTECTED]
Cc: 'Struts Users Mailing List'
Betreff: Re: Workflow Extention


Jordan,

according to the configuration the user should not be able to execute "/registration/1" before having executed "/registration". Also "/registration/2" can not be executed before "/registration/1", and so
on.

What the configuration does NOT prohibit, is to execute "/registration" or any other action after "/registration/1" or "/registration/2", because you are not defining nextState values.

Do you see something else? What lets you think that "it seems to be disregarding the workflow"?

One remark: You can as well leave away the property endWorkflow if you want it to be false, because this is the default.

--- Matthias



Jordan Thomas wrote:


Matthias,

Ok, I tried that and it now seems to be disregarding the workflow. Can you seen anything wrong with my struts-config.xml tags? (Sorry for the big code chunk >:O) Essentially what (am trying to do is allow a user to go to the next step or stay on the same step. I am using struts 1.1b

Thanks

Jordan

----------action class------------

...
public final class NewRegistrationAction extends GenericAction { ....
public ActionForward performAction( ActionMapping mapping, ActionForm
form,
HttpServletRequest request, HttpServletResponse response )
throws IOException, ServletException {
...

----------struts-config.xml------------

<action path="/registration"
type="scoop.web.struts.registration.NewRegistrationAction"

className="com.livinglogic.struts.workflow.ApplicationMapping"
scope="request"
input="/tiles/registrationDetails"
validate="true">
<set-property property="primaryWorkflow" value="registration-workflow"/>
<set-property property="newState" value="0"/>
<set-property property="endWorkflow" value="false"/>
<forward name="success" path="/tiles/registrationDetails"/>
</action>
<action path="/registration/1"
type="scoop.web.struts.registration.NewRegistrationAction"

className="com.livinglogic.struts.workflow.ApplicationMapping"
name="registrationForm"
scope="session"
input="/tiles/registerCompany_step1"
validate="true">
<set-property property="primaryWorkflow" value="registration-workflow"/>
<set-property property="newState" value="1"/>
<set-property property="prevState" value="0"/>
<set-property property="prevState" value="1"/>
<set-property property="endWorkflow" value="false"/>
<forward name="success" path="/tiles/registerCompany_step1"/>
</action>
<action path="/registration/2"
type="scoop.web.struts.registration.NewRegistrationAction"

className="com.livinglogic.struts.workflow.ApplicationMapping"
name="registrationForm"
scope="session"
input="/tiles/registerCompany_step2"
validate="true">
<set-property property="primaryWorkflow" value="registration-workflow"/>
<set-property property="newState" value="2"/>
<set-property property="prevState" value="1"/>
<set-property property="prevState" value="2"/>
<set-property property="endWorkflow" value="false"/>
<forward name="success" path="/tiles/registerCompany_step2"/>
</action>
<action path="/registration/3"
type="scoop.web.struts.registration.NewRegistrationAction"

className="com.livinglogic.struts.workflow.ApplicationMapping"
name="registrationForm"
scope="session"
input="/tiles/registerCompany_step3"
validate="true">
<set-property property="primaryWorkflow" value="registration-workflow"/>
<set-property property="newState" value="3"/>
<set-property property="prevState" value="2"/>
<set-property property="prevState" value="3"/>
<set-property property="endWorkflow" value="false"/>
<forward name="success" path="/tiles/registerCompany_step3"/>
</action>
<action path="/registration/4"
type="scoop.web.struts.registration.NewRegistrationAction"

className="com.livinglogic.struts.workflow.ApplicationMapping"
name="registrationForm"
scope="session"
input="/tiles/registerCompany_step4"
validate="true">
<set-property property="primaryWorkflow" value="registration-workflow"/>
<set-property property="newState" value="4"/>
<set-property property="prevState" value="3"/>
<set-property property="prevState" value="4"/>
<set-property property="endWorkflow" value="false"/>
<forward name="success" path="/tiles/registerCompany_step4"/>
</action>
<action path="/registration/5"
type="scoop.web.struts.registration.NewRegistrationAction"

className="com.livinglogic.struts.workflow.ApplicationMapping"
name="registrationForm"
scope="session"
input="/tiles/registerCompany_step5"
validate="true">
<set-property property="primaryWorkflow" value="registration-workflow"/>
<set-property property="newState" value="5"/>
<set-property property="prevState" value="4"/>
<set-property property="prevState" value="5"/>
<set-property property="endWorkflow" value="true"/>
<forward name="success" path="/tiles/registerCompany_step5"/>
</action>



-----Original Message-----
From: Matthias Bauer [mailto:[EMAIL PROTECTED]]
Sent: Tuesday, 26 November 2002 8:36 AM
To: Struts Users Mailing List
Subject: Re: Workflow Extention


Hi Jordan,

sorry for the late response...

You can not specify a wildcard like * for nextPath - the framework does
not support that up to now. I would be happy to integrate it, if you

can

explain a valid use case for it.

Right now I do not see a necessity for a wildcard, because you can
always leave away the "nextPath" and the "nextState" parameters, which has basically the same result: The action that follows next can be any action.

To refer to you concrete problem: Preventing people from entering your
workflow in the middle can be achieved by using the prevState
parameters:

If you have actions A, B, C and you want the user to execute B only if A

has been executed before and C only if B has already been executed you
can do the following:

- equip action A with the state 1, action B with state 2
- set prevState=1 for action B and prevState=2 for action C

This way action B can only be executed, if the workflow is in state 1
(i. e. action A has been executed) and action C can only be executed,

if

the workflow is in state 2 (i. e. action B has been executed).

Pls. let me know, if this helps.

--- Matthias


Jordan Thomas wrote:




Hi All,

I am using the workflow extention to create my workflows. It seems that




when I am in the middle of a workflow, there is no way to allow the
user to jump out of the workflow into another area of the application.


I have tried specifying a * and a *.do as a nextPath parameter but

that





doesn't seem to work. Does anyone know how to gain a little more
flexibility with this framework? All I want to do is stop people from jumping steps/entering into the middle of a workflow. At the moment,

it





seems that a user needs to enter a workflow and then complete that
workflow before a he/she can leave it. Does anyone have any

suggestions





how I can work around this?

Thanks

Jordan


--
To unsubscribe, e-mail:


<mailto:[EMAIL PROTECTED]>



For additional commands, e-mail:
<mailto:[EMAIL PROTECTED]>






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








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

Reply via email to