jBPM Human Task
Most of the business processes require human interaction. For example, a human may be needed for approvals, exception management and some other related actions. They are also responsible for performing activities required to enhance the business processes.
jBPM supports different types of human task nodes inside processes for modelling this interaction with human users. Human task node allows process designers to define the task properties which the human actors need to execute. jBPM also includes a back-end service that manages the life-cycle of tasks at runtime.
To use human tasks inside processes we need three components-
Human Task Life Cycle
From the process perspective, a human task is created only when a user task node is encountered during the execution of a process. Now the process will leave the user task node only when the associated human task has been completed or aborted.
The human task itself has a complete life cycle. The following diagram describes the Human task life cycle.
A new task starts creation in the “Created” stage. Then it will automatically go into the “Ready” stage. Here’ task shows the task list of all the actors that are allowed to execute the task. The task will stay in a Ready stage until one of these actors claim the task to inform that they are executing it.
Once the user has claimed a task, the status is changed to “Reserved” stage. After claiming the task, that user can decide to start executing the task. In that case, the task status is changed to be “InProgress” stage.
Finally, once the task has been performed, the status is changed to be “Completed”. If the task is not completed, the user can also indicate this using a fault response. In that case, the status is changed to “Failed”.
The Human task Service allows a lot of other life cycle method, like-
- Delegating or forwarding a task. In that case, it is assigned to another actor.
- Revoking a task, it is no longer claimed by any specific actor but reappears on the task list of all the potential actors
- Temporarily suspending or resuming a task
- Stopping a task in progress
- Skipping a task. In that case, the task will not be executed.