Wednesday, July 19, 2006

Referrals in JBoss jBPM

JBoss' jBPM doesn't really have any notion of "referring" a Task (TaskInstance). Referring a Task is analagous to an "assist". For example, a worker is assigned a Task, but the details of the Task reveal that the worker needs additional assistance or an "expert opinion" on some aspect of the Task before being able to complete the work.

Typically in this case, both the original worker and the worker rendering assistance would see the Task in the "inbox" or task list. In jBPM, however, a Task is assigned to only one worker at a time, so how can a referral be handled? One way is to use the jBPM client APIs to create a new Task on-the-fly. Typically Tasks are created when process execution enters a task-node, but jBPM also allows you to create a new Task at run-time.

For a referral, it may be that the worker rendering assistance doesn't absolutely have to complete the task for process execution to continue, so it might be a good idea to create the new Task with isBlocking set to false. Likewise, for a referral, typically the original worker is still "in control" of the Task, so isSignalling should be false. This means that when the assisting worker completes the Task (TaskInstance.end()), the current Token will not be signalled.

No comments: