Hello everybody,

 I have a proposal for a presentation workflow that I'd like to submit as a
plug-in to Maverick.  I've already started working on it so some of the
functionality is already complete, but I'd like to run it by the list to see
what functions people want / need in a presentation workflow framework.  I'm
sure there are situations that I have not considered that others have run
into.  Here is a rundown of what I'm starting with.

* Functions *

- A workflow is a set of commands (or states) that complete some "unit of
work", i.e. registering for a site, completing a purchase, etc.  Workflows
can
consist of any number of nested workflows.

- Each workflow has a scope, and attributes added to that scope are only
visible within that workflow.  These are "workflow attributes".

- Workflows can be written modularly.  This means that one workflow can
"call" another workflow to get something done.  The caller can pass
parameters to the callee, and the callee can return values to the caller.
When the callee is complete it simply returns to the state specified by the
caller.  Calls are put on a stack to keep track of workflow attributes.

- Workflows can have an entry point, meaning that if a user tries to enter
that workflow s/he will be redirected to the entry point.

- Workflows can be modal - the user cannot leave the workflow until the
"unit of work" is complete.  If they try to go to another page, they will be
redirected back.  The user *is* allowed to jump around within that workflow.

- For workflows that must be completed step by step, states can be numbered
within a workflow.  A user will be able to go backwards in a workflow but
not jump forward.

* How it works (basically) *

- Workflows are specified within the maverick.xml file.

- Each Command class must subclass WorkflowCommand (which subclasses
throwawaybean2.  if you don't want to use throwawaybean2 you can create your
own WorkflowCommand class.)  The WorkflowCommand class processes each
request to let the Workflow Manager know where the user is, if the user
should be bounced somewhere else, etc.

- When a workflow wants to call another workflow, it calls a GenerateCall()
method which pushes the stack and redirects the client to the called
workflow.  The called workflow returns by calling generateReturn(), which
pops the stack and redirects to the page specified.

* Simple Example *

A user wants to register for your website, but his company can't be found in
your pulldown menu.  You write a workflow of about 3 steps that lets a user
type in a company, makes sure that the company is not in there (as an
acronym or whatever) and lets the user create a company if it's not.  This
workflow returns a company_id to the registration workflow, and now that
workflow can continue.  That same "add company" workflow can then be used
anywhere else in the application where a company needs to be added to your
database.

Thanks for any input, and thanks for reading this far.  :)
Roy



-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Gadgets, caffeine, t-shirts, fun stuff.
http://thinkgeek.com/sf
_______________________________________________
Mav-user mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/mav-user
Archives are available at http://www.mail-archive.com/

Reply via email to