Список задач всех пользователей со статусом и длительностью просрочки. Настройка с помощью N3
Введение
Comindware Platform предусмотрена стандартная страница «Мои задачи, которая показывает список задач для текущего пользователя с заранее заданными столбцами.
Чтобы вывести список задач определённых пользователей, с дополнительными бизнес-данными и т. п, можно настроить таблицу с требуемыми вычисляемыми атрибутами и особыми параметрами фильтрации, группировки и сортировки.
Здесь приведён пример вычисления с помощью языка N3 дополнительных атрибутов задач и настройки списка всех задач для всех пользователей с этими атрибутами (например, статуса и длительности просрочки).
Если вам требуется отфильтровать список задач, см. также «Фильтр списка по активным задачам текущего пользователя: по всем процессам, по конкретному процессу». .
Прикладная задача
Требуется настроить таблицу «Статус просрочки задач» со следующими параметрами:
- выводить задачи всех пользователей: как активные, так и завершённые;
-
выводить только задачи, у которых задан крайний срок (задачи без крайнего срока, не должны отображаться в таблице).
Настройка крайнего срока задачи
Крайний срок задачи вычисляется автоматически по заданной продолжительности выполнения задачи.
Продолжительность выполнения можно установить в свойствах пользовательской задачи на вкладке «Дополнительные».
См. «Пользовательская задача».
-
столбцы Название, Исполнитель, Дата создания, Крайний срок, Дата завершения;
- столбец «Просрочена» с логическим (булевым) значением в текстовом виде:
- Да — если задача активна и крайний срок уже наступил, либо задача завершена, но дата завершения позже крайнего срока;
- Нет — в остальных случаях.
- столбец «Длительность просрочки» (0, если задача не просрочена).
Пример настройки
Решим задачу следующим образом:
- Создадим служебный шаблон записей «Задачи».
- В шаблоне записей «Задачи» создадим вычисляемые атрибуты для контроля просрочки:
- атрибут «Длительность просрочки» типа «Дата и время» с выражением на N3 для определения длительности просрочки:
- для активных просроченных задач — разность между текущим временем и крайним сроком;
- для закрытых просроченных задач — разность между фактической датой завершения и крайним сроком;
- для задач без просрочки —
0;
- текстовый атрибут «Просрочена» с формулой для определения признака просрочки:
- Да — если длительность просрочки больше
0; - Нет — если длительность просрочки
0;
- Да — если длительность просрочки больше
- атрибут «Длительность просрочки» типа «Дата и время» с выражением на N3 для определения длительности просрочки:
-
В шаблоне «Задачи» создадим вычисляемые атрибуты с выражениями на N3 для вывода стандартных атрибутов задач:
Название Тип данных Название текст Исполнитель Аккаунт Крайний срок Дата и время Дата завершения Дата и время -
В шаблоне «Задачи» создадим таблицу «Статус просрочки задач» со специальным системным фильтром на N3 и поместим в неё требуемые атрибуты.
- Добавим таблицу «Статус просрочки задач» на информационную страницу.
Внимание!
Для корректного вычисления выражений указывайте в них те системные имена шаблонов и атрибутов, которые используются в вашем приложении. Они могут отличаться от указанных в примере.
Настройка атрибутов шаблона записи «Задачи»
Для формирования требуемых атрибутов задач создадим служебный шаблон записи.
- Создайте шаблон записи «Задачи».
- В шаблоне «Задачи» создайте атрибут для вычисления длительности просрочки:
- Название:
Длительность просрочки - Системное имя:
Длительностьпросрочки - Тип данных: длительность
- Описание: Длительность просрочки задачи
- Вычислять автоматически: флажок установлен
-
Вычисляемое значение: N3
# Импортируем функции для работы с объектами, статусами задач,# сеансами, временем и сравнения величин@prefix cmw: <http://comindware.com/logics#>.@prefix taskStatus: <http://comindware.com/ontology/taskStatus#>.@prefix session: <http://comindware.com/ontology/session#>.@prefix cmwtime: <http://comindware.com/logics/time#>.@prefix w3math: <http://www.w3.org/2000/10/swap/math#>.{# Получим текущее время (UTC) для сравнения со сроками# в переменную ?nowUTC.session:context session:requestTime ?nowUTC.# Получим крайние сроки всех задач в переменную ?dueDates# Предикат cmw:dueDate возвращает крайний срок задачи?item cmw:dueDate ?dueDates.if {# Активная задача с истёкшим сроком — просрочена.# Получим активные задачи?item cmw:taskStatus taskStatus:inProgress.# Получим задачи, у которых крайний срок# предшествует текущей дате.?dueDates w3math:lessThan ?nowUTC.# Вычисляем разность между текущим временем и крайним сроком.(?nowUTC ?dueDates) cmwtime:getSpan ?overdueDuration.}# Возвращаем длительность просрочкиthen {?overdueDuration -> ?value. }else {# Завершённая задача: просрочена,# если завершена после крайнего срока.if {# Получаем завершённые задачи.?item cmw:taskStatus taskStatus:completed.# Получим задачи, у которых дата завершения# cmw:completionDate больше крайнего срока.?item cmw:completionDate ?endDates.?dueDates w3math:lessThan ?endDates.# Вычисляем разность# между датой завершения временем и крайним сроком.(?endDates ?dueDates) cmwtime:getSpan ?overdueDuration.}# Возвращаем длительность просрочкиthen {?overdueDuration -> ?value. }# Возвращаем 0, если задача не просроченаelse {0 -> ?value. }.}.}
- Создайте атрибут для вычисления статуса просрочки:
- Название:
Просрочена - Системное имя:
Просрочена - Тип данных: текстовый
- Описание: Текстовый статус просрочки задачи
- Вычислять автоматически: флажок установлен
-
Вычисляемое значение: формула
IF(GREATER("Длительностьпросрочки", 0), "Да", "Нет")
- Создайте атрибут для вычисления названия задачи:
- Название:
Название - Системное имя:
Название - Тип данных: текст
- Описание: Заголовок задачи
- Вычислять автоматически: флажок установлен
-
Вычисляемое значение: N3
@prefix cmw: <http://comindware.com/logics#>.{?item cmw:title ?value.}
- Создайте атрибут для вычисления исполнителя:
- Название:
Исполнитель - Системное имя:
Исполнитель - Тип данных: аккаунт
- Описание: Аккаунт исполнителя задачи
- Хранить несколько значений: флажок установлен
- Вычислять автоматически: флажок установлен
-
Вычисляемое значение: N3
@prefix cmw: <http://comindware.com/logics#>.@prefix assert: <http://comindware.com/logics/assert#>.{# Собираем список всех исполнителей, назначенных задаче.?item a cmw:UserTask.({?item cmw:assignee ?.?item cmw:assignee ?users.}{?item cmw:possibleAssignee ?.?item cmw:possibleAssignee ?users})assert:union true.?users -> ?value.}
- Создайте атрибут для вычисления даты создания:
- Название:
Дата создания - Системное имя:
Датасоздания - Тип данных: дата и время
- Описание: Дата создания задачи
- Вычислять автоматически: флажок установлен
-
Вычисляемое значение: N3
@prefix cmw: <http://comindware.com/logics#>.{?item cmw:dueDate ?value.}
- Создайте атрибут для вычисления фактической даты завершения:
- Название:
Дата завершения - Системное имя:
Датазавершения - Тип данных: дата и время
- Описание: Фактическая дата завершения задачи
- Вычислять автоматически: флажок установлен
-
Вычисляемое значение: N3
@prefix cmw: <http://comindware.com/logics#>.{?item cmw:completionDate ?value.}
Настройка таблицы «Статус просрочки задач»
- В шаблоне «Задачи» создайте таблицу «Статус просрочки задач».
-
В конструкторе таблицы на вкладке «Основные» задайте системный фильтр на N3:
# Импортируем функции для работы с объектами@prefix cmw: <http://comindware.com/logics#>.# Получаем все пользовательские задачи,# у которых задан крайний срок cmw:dueDate{?item a cmw:UserTask.?item cmw:dueDate ?.}С таким фильтром в таблице будут отображаться задачи всех пользователей у которых задан крайний срок, с любым статусом: активные и завершённые.
Фильтрация задач без крайнего срока
Если крайний срок не задан, задачи попадать не будут попадать в таблицу.
-
Добавьте в столбцы таблицы атрибуты:
- ID
- Название
- Просрочена
- Длительность просрочки
- Исполнитель
- Дата создания
- Крайний срок
- Дата завершения
-
Добавьте таблицу «Статус просрочки задач» на требуемую информационную страницу приложения. Например, на страницу «Мои задачи».
- Откройте результирующую таблицу и проверьте её состав.
Эта статья была полезна 2 чел.