I wrote this pattern as an exercise in a recent workshop. Our group had finished working on LarryBest's Delinquency Collection problem (http://www.c2.com:80/doc/design95/) and had gone on to try writing patterns for a generalized workflow infrastructure. -- WardCunningham
WorkFlow systems often assign work to operators on a next-available basis or some variation using rules or priorities. However, an operator can often select work more effectively than any mechanical system. Operators are aware of their own efficiency and become frustrated when given inappropriate assignments.
Therefore: Present operators a choice of work. Consider work characteristics (urgency, difficulty, etc.) and operator characteristics (seniority, proficiency, etc.) when selecting and prioritizing work for a given operator. Make highest-priority-first the default selection.
Operators might race for desirable work so don't show new work until current work is completed. Operators might ignore difficult work so show fewer alternatives when hard cases are ignored.
Nice attention to the life of the worker. "...so don't show new work until current work is completed." I think depends on the work context. I like to have two jobs going, one hard and one fun or easy. That way I can take a break from the hard one. So I wouldn't care for that rule. In other contexts, it may be the case that a work item really must be worked to completion. ... but I should like to question that business rule wherever possible.
"... show fewer alternatives when hard cases are ignored" is interesting and I wouldn't have thought of it. -- AlistairCockburn
Bill Clancy at IRL (http://www.irl.org) has some good papers on defining work processes. It's a much richer approach than traditional WorkFlow, but it doesn't have the broad base of support that "Nazi-ware" has. -- KenMeltsner
A factory automation system at Caterpillar does something similar. (My guess is it is not unusual). Machine operators are given a list of things to make for the day. They decide the order, and tell the computer, which brings the parts to them. This gives the workers a chance to order the jobs to minimize setup time on their machines. The guy giving me the tour said that an important reason to design a system this way was that it kept the workers happier. People like to be in control of their lives, and don't like to feel like cogs in a machine. The workers would only spend 10 or 15 minutes a day planning the order of the jobs, so this didn't cost much time, and they probably did a little better than an automatic scheduler would have done. But even if it had been less efficient, happy workers would have been worth the cost. -- RalphJohnson
My company uses TASKER, a Brazilian software to control tasks. Managers can assign various tasks to groups or to individuals. They can execute many tasks at the same time. Users select their tasks from a similar window.
Tasker implements SpeechActs as the model for the conversation among users. This was inspired by Understanding Computers and Cognition: A New Foundation for Design, TerryWinograd FernandoFlores? ISBN 0201112973
If you understand Portuguese, check it on http://www.tasker.com.br/