Динамически вытягивать кандидатов

коллеги, подскажите, как в камунде можно динамически вытащить candidate user?
например, задача “Согласовать отчет”
если запрос на согласование поступил от Васи - согласует начальник Васи, если от Тани - начальник Тани и т,д.
думал насчет DMN, но пока непонятно, как это встроить в процесс

Добрый день!

В поле Candidate Users (также, как и в Assignee, Candidate Groups) можно вписать выражение JUEL, которое может содержать в себе:

а) переменную процесса, например ${candidates}. В переменную процесса можно поместить результат вычисления DMN.

б) если используете Spring, вызвать нужный метод/бин (возвращать он должен либо строку, либо лист строк), типа ${ approvementService.getResponsibles( taskId ) }

Метод, соответственно, выглядит так:

List<String> getResponsibles(String taskId) {
    // omitted
}

Успехов!

Мстислав, остановились на 1м варианте (dmn). Не понятно, как результат вычисления подставить в переменную. Например у нас результат -2 переменных approver (согл. лицо), term (срок согласования):

в моделере указываем имя переменной и согласно документации хотим поместить согласующее лицо в переменную result.

image

Система выдает ошибку

WBR, Dmitry

Добрый день, Дмитрий!

У вас несколько выходов в таблице, поэтому вы правы, нужно использовать:

singleResult(Map<String, Object).

Результат будет помещен в переменную result в виде объекта ключ-значение.

Вам нужно разобрать его в отдельные переменные. Например, для отбора согласующего лица поместите в Output:

Имя переменной: approver
Тип: String / Expression
Выражение:
${ result.getSingleResult().approver }
где - result = имя переменной процесса, содержащей Map, approver - нужное выходное значение вашей таблицы

пасиб) нашел уже в документации, не совсем было ясно, как использовать