В отличие от jBPM в нотации BPMN отсутствует возможность указать несколько выходов из одной задачи. Чтобы направить процесс
по нужной ветке в зависимости от результата используется узел Exclusive Gateway, переходы из которого имеют условия, оперирующие результатом выполнения задачи, расположенной перед этим Gateway. При завершении
пользователем задачи, результат его действия записывается в процессную переменную с именем [taskId]_result
. Тип этой переменной - ProcTaskResult
.
Методы класса ProcTaskResult
:
int count(String outcomeName)
- возвращает количество пользователей, завершивших задачу с данным выходомboolean exists(String outcomeName)
- возвращаетtrue
, если есть хотя бы один пользователь, завершивший задачу с указанным выходом.
Далее объект с результатом используется в выражении Flow condition для переходов, выходящих из Gateway.
Пример:

Предположим, что задача approval
была параллельно назначена нескольким пользователям. Для задачи были определены 2 возможных выхода: approve
и reject
. После того, как все пользователи завершат задачу процесс перейдет к exclusive gateway. Нам нужно следующее поведение: если
хоть кто-либо выбрал вариант reject
, то переходим по переходу Rejected
, если все согласились (approve
), то по Approved
.