Вычисление исполнителя текущей активной задачи
Введение
В Comindware Platform можно вычислить исполнителя активной задачи по записи, связанной с экземпляром бизнес-процесса. Это может быть полезно для отображения информации об ответственном за задачу или в иных вычислениях.
Прикладная задача
Имеется бизнес-процесс с пользовательскими задачами.
Задаче может быть назначен как один исполнитель, так список возможных исполнителей.
С бизнес-процессом связана запись.
Для этой записи требуется:
- получить список исполнителей активных задач и поместить его в атрибут типа «Аккаунт»;
- определить, имеются ли задачи у текущего пользователя, и записать соответственно значение
TrueилиFalseв логический атрибут.
Исходные данные
Имеется шаблон процесса «Оформление заявок», связанный с шаблоном записи «Заявки».
В шаблоне «Оформление заявок» имеются пользовательские задачи, которым назначены различные исполнители.
Настройка вычислений
- На диаграмме процесса «Оформление заявок» назначьте себя исполнителем любой из задач.
-
В шаблоне «Заявки» создайте атрибут со следующими свойствами:
- Название: Ответственные
- Тип данных: аккаунт
- Хранить несколько значений: флажок установлен
- Вычислять автоматически: флажок установлен
- Вычисляемое значение: N3
# Импортируем функции для работы# с логикой, задачами и статусами задач.@prefix cmw: <http://comindware.com/logics#>.@prefix task: <http://comindware.com/ontology/task#>.@prefix taskStatus: <http://comindware.com/ontology/taskStatus#>.@prefix account: <http://comindware.com/ontology/account#>.@prefix role: <http://comindware.com/ontology/role#>.{# Получаем задачи, связанные с текущей записью.?tasks task:objectId ?item.# Получаем активные задачи.?tasks cmw:taskStatus taskStatus:inProgress.# Получаем фактических и возможных исполнителей задач.# Проверяем различные варианты назначения задач.or{# Возвращаем фактического исполнителя,# если он назначен через группы и роли.?tasks cmw:assignee ?assigneeRoles.?assigneeRoles role:roleMembers ?groupMembers.?groupMembers account:groupUsers ?value.}or {# Возвращаем фактического исполнителя,# если он назначен через роли.?tasks cmw:assignee ?assigneeRoles.?assigneeRoles role:roleMembers ?value.}or {# Возвращаем фактического исполнителя,# если он назначен через аккаунт.?tasks cmw:assignee ?value.}or{# Возвращаем список возможных исполнителей,# если они назначены через группы и роли.?tasks cmw:possibleAssignee ?possibleRoles.?assigneeRoles role:roleMembers ?groupMembers.?groupMembers account:groupUsers ?value.}or {# Возвращаем список возможных исполнителей,# если они назначены через роли.?tasks cmw:possibleAssignee ?possibleRoles.?assigneeRoles role:roleMembers ?value.}or {# Возвращаем список возможных исполнителей,# если они назначены через аккаунты.?tasks cmw:possibleAssignee ?value.}.# Оставляем только активные аккаунты.?value account:active true.# Исключаем отключенные аккаунты.not {?value cmw:isDisabled true.}.} -
Создайте атрибут со следующими свойствами:
- Название: У вас имеются задачи
- Тип данных: логический
- Вычислять автоматически: флажок установлен
- Вычисляемое значение: N3
# Импортируем функции для работы# с логикой, задачами и статусами задач.@prefix cmw: <http://comindware.com/logics#>.@prefix task: <http://comindware.com/ontology/task#>.@prefix taskStatus: <http://comindware.com/ontology/taskStatus#>.@prefix account: <http://comindware.com/ontology/account#>.@prefix role: <http://comindware.com/ontology/role#>.{# Получаем аккаунт текущего пользователя из контекста безопасности.cmw:securityContext cmw:currentUser ?currentUser.# Получаем роли текущего пользователя.?roles role:roleMembers ?currentUser.# Получаем группы, в которые входит пользователь.?userGroups account:groupUsers ?currentUser.?groupRoles role:roleMembers ?userGroups.# Получаем задачи, связанные с текущей записью.?tasks task:objectId ?item.# Получаем активные задачи.?tasks cmw:taskStatus taskStatus:inProgress.# Проверяем различные варианты назначения задачи.once {or {# Проверяем, назначена ли задача на текущего пользователя.?tasks cmw:assignee ?currentUser.}or {# Проверяем, является ли пользователь возможным исполнителем.?tasks cmw:possibleAssignee ?currentUser.}or {# Проверяем, назначена ли задача на роль пользователя.?tasks cmw:assignee ?roles.}or {# Проверяем, является ли роль пользователя возможным исполнителем.?tasks cmw:possibleAssignee ?roles.}or {# Проверяем, назначена ли задача на группу пользователя.?tasks cmw:assignee ?groupRoles.}or {# Проверяем, является ли группа пользователя возможным исполнителем.?tasks cmw:possibleAssignee ?groupRoles.}.}.# Возвращаем True, если у текущего пользователя есть задачи.?true -> ?value} -
Поместите атрибуты «Ответственные» и «У вас имеются задачи» на форму шаблона «Заявки».
- Установите для поля «У вас имеются задачи» на форме отображение в качестве переключателя.
Тестирование
- Запустите процесс «Оформление заявок».
- Откройте заявку, созданную при запуске процесса.
- В поле «Ответственные» должен отображаться список исполнителей текущей задачи по заявке.
- В поле «У вас имеются задачи» должно отобразиться значение «Да»
Эта статья была полезна 2 чел.