It has occurred to me in the past that workflow is really just a specialized case of a finite state engine.

Each state has a set of exits (transitions) to a next state.

Those sets of exits are defined by a set of conditions. If all the conditions are met, then the object transitions to the next state.

In the real world, it has to be a bit more complicated because defining the state transitions can result in the possibility that an object at a given state may satisfy the conditions to go to two or more 'next states'. Human error on data entry - garbage in/garbage out, that sort of thing. The real world workaround on that is to provide a sort order on the exit transitions to force them to be checked in a specific order. Immensely helpful for debugging.

The cool thing about thinking about it is a finite state engine is that the technical stuff is so thoroughly documented. Plus, visualizing it is easier. A bunch of circles on a piece of paper with arrows coming in from other circles and arrows going out to other circles. Kind of helps keep the design clean instead of cluttering the design up with the specifics of the type of work to be done.

Other conditions can be like "If object has been stuck in this state for more than 24 hours, then move to state 'needs user review'", etc.

Thinking about it terms of queues an actions...

All objects in a given state, would be in a 'queue' - waiting to transition to the next state.

Transitioning from one state to another, would be an 'action', or perhaps a condition that was satisfied by some 3rd party (human?) action.


Anyway, my 2-cents on one to approach the problem.

- Mike




Josh Paul wrote:
I think it would be a very valuable framework for everyone. I'm curious about your approach.

On Nov 22, 2008, at 9:27 AM, Mark Morris wrote:

I wrote one a few years ago. From time to time I've thought about updating it as well as another framework and contributing them, if people might find them useful.

There are a few ways to approach workflow. Email me and we can see if what I have might be a good fit for your project. I put a lot of time and thought into it. It is generic, and it was used very successfully in a project a while back.

Regards,
Mark

On Nov 17, 2008, at 3:28 PM, Timothy Reaves wrote:

I can't seem to locate a framework for handling workflow. Does one exist?
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      ([email protected])
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/webobjects-dev/markm%40onpointsoftware.com

This email sent to [EMAIL PROTECTED]


_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      ([email protected])
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/webobjects-dev/joshpaul%40gmail.com

This email sent to [EMAIL PROTECTED]

_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      ([email protected])
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/webobjects-dev/webobjects%40deman.com

This email sent to [EMAIL PROTECTED]


_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      ([email protected])
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to [EMAIL PROTECTED]

Reply via email to