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
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.
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.
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
FernandoFlores? ISBN 0201112973
If you understand Portuguese, check it on http://www.tasker.com.br/