коллеги, подскажите, как в камунде можно динамически вытащить 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.
Система выдает ошибку
WBR, Dmitry
Добрый день, Дмитрий!
У вас несколько выходов в таблице, поэтому вы правы, нужно использовать:
singleResult(Map<String, Object).
Результат будет помещен в переменную result в виде объекта ключ-значение.
Вам нужно разобрать его в отдельные переменные. Например, для отбора согласующего лица поместите в Output:
Имя переменной: approver
Тип: String / Expression
Выражение:
${ result.getSingleResult().approver }
где - result = имя переменной процесса, содержащей Map, approver - нужное выходное значение вашей таблицы
пасиб) нашел уже в документации, не совсем было ясно, как использовать