Wow, one of my favorite areas. My current project has a workflow engine and we use it when a task has to span time or multiple users. We use it in an ad-hoc manner ... when I have a task I can't complete I queue it up for someone else to work on or set it to come back to me in some amount of time. We sometimes specify the next TWO people to work on something.
More formal workflow systems let you define complex work plans ... who works on it first, given various state changes or events it routes to other people who do other steps, including escalation strategies if something isn't done by the due date-time. Brochures for commercial tools always show a graphical editor for defining plans with cool branching and looping. When you launch an instance of a plan the engine makes routing decisions and notifies people or programs when they have work.
We're using a vendor product that split workflow into four parts: Queuing, Routing, Sequencing and Timing. Q is putting work where somebody can pull it or where the system can push it to their desktop. R is deciding who should get the work next by matching user or queue criteria to the work properties. S is running the plan for a sequence of steps. T is setting timers that go off and trigger escalation. This worked out great in the software design - the four components are highly independent.
The vendor framework can use the workflow engine to direct screen flow from one field or panel to the next, task flow for one user moving from one step to the next, or work flow for moving work between people.
There are many workflow engines out there. Look for standards like Business Process Excution Language BPEL for more information. Lemme know if that helped!
A good question is never answered. It is not a bolt to be tightened into place but a seed to be planted and to bear more seed toward the hope of greening the landscape of the idea. John Ciardi
Originally posted by John Todd: seems like rocket science ! I understand ....... nothing
Some of the vendors try to make it look like magic. Let's back up and talk about an example workflow that might help. Say new ads on our web site go through this process: Marketing has an idea, copywriter writes an ad, editor reviews it, legal dept reviews it again, the ad goes to a test web server, manager approves it, it goes to public web site. It's easy to imagine people passing paper around to do most of this. In a nifty automated system the marketing guy would sketch out the idea and hit "Send to copywriter". The work might appear in the copywriter's in-bin like e-mail, or it might pop up like an instant message. The copywriter makes up some good stuff and hits "Send to Editor". As each person finishes their bit, the work goes to the next person or to the next server.
A slick system would make some decisions, too. It might say "This idea relates to kitchen appliances and should go to copywriter Steve, but this other idea is auto parts and should go to copywriter Mary." It might say "if the editor hasn't reviewed new copy in 2 hours send mail to the CEO."
Real life is of course much messier. What if the editor rejects the first draft of the copy and sends it back? What if legal says You can't promise our website will make you lose weight!
I mentioned Q,R,S,T above. This was a very clever separation of different parts of the problem. And notice it's all flow oriented and says nothing about the work to be done. I like to think of the workflow engine passing along a 3x5 card that tells the next person what task they should do with enough keys to look up the information they need. "Review the copy for the new fertilizer ad which you can find (link) HERE"
Some of the top workflow products mix work and flow. For example: System scans inbound mail to image, clerk reviews image and sets "keywords" like "this letter is about toasters", system routes the image to the toaster guy, toaster guy reviews image and sends reply to customer. The product might handle all this, soup to nuts. Great stuff if that's exactly what you want to do, but we don't work with images.
May I suggest that you do some research before you implement or try to implement a workflow engine. There are may option available in the open source an commercial world, if they did not work they would all die. The work flow engine and the notation are used to document and execute a business process, and if you are lucky you get the business to buy into (own) the business process. This was a big issue many years ago when it was IT vs. the Business. Well... The Business won. Business always wins... so shared responsibility is the key. The documentation allows for the business to explain their business process, while IT has the opportunity to put the technology behind the business services.
BUt I want to be real, there is a learning curve as with all tools. Best wishes.
I am currently using a production BPMN Product from Tibco.
Tony McClay<br />Architect / Developer, SOA and Jave Enterprise Edition 1-5<br />---------------------------------------------------------------------- <br />Sun Certified Enterprise Architect, Enterprise Edition 5 (Step 1 of 3)<br />Sun Certified Web Component Developer, Enterprise Edition 4<br />Sun Certified Business Component Developer Enterprise Edition 5<br />Sun Certified Programmer , Standard Edition 5.0