Аккаунты и задачи. Вычисление пользователей с активными задачами с помощью N3 (с учетом замещений)
Введение
В Comindware Platform можно вычислить аккаунты всех пользователей, у которых на данный момент есть активные задачи, с учетом всех замещений. Это может быть полезно, например, для запуска подпроцесса отправки уведомлений по задачам.
См. также «Периодические напоминания об открытых задачах».
Прикладная задача
Требуется настроить процесс для отправки уведомлений пользователям, у которых есть активные задачи по всем бизнес-процессам, с учетом всех замещений.
Задаче может быть назначен как один исполнитель, так список возможных исполнителей.
Список аккаунтов, у которых есть задачи, необходимо поместить в атрибут типа «Аккаунт».
Исходные данные
Имеется несколько шаблонов процессов с пользовательскими задачами, которым назначены различные исполнители.
Имеется шаблон записи «Уведомления о задачах».
Настройка вычисления
- В шаблоне «Уведомления о задачах» создайте атрибут «Исполнители» типа «Аккаунт».
- В свойствах атрибута установите флажки «Хранить несколько значений» и «Вычислять автоматически».
-
Введите следующее вычисляемое значение на языке N3:
# Импортируем основные функции для работы
# с логикой, контейнерами, аккаунтами и статусами задач
@prefix cmw: <http://comindware.com/logics#>.
@prefix container: <http://comindware.com/ontology/container#>.
@prefix account: <http://comindware.com/ontology/account#>.
@prefix taskStatus: <http://comindware.com/ontology/taskStatus#>.
{
# Получаем все задачи.
?tasks a cmw:UserTask.
# Получаем активные задачи.
?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.}.
}
-
Поместите атрибут «Исполнители» на форму шаблона «Уведомления о задачах».
Тестирование
- Запустите несколько процессов.
- Создайте или откройте запись в шаблоне «Уведомления о задачах».
- В поле «Исполнители» должен отображаться список пользователей с активными задачами по всем процессам.
Эта статья была полезна 1 чел.