Функциональные роли заданий¶
Общие понятия¶
Функциональная роль задания (ФРЗ) - роль, связанная с заданием, например, Автор, Исполнитель. С заданием может быть связано сколько угодно участников: несколько Авторов, несколько Исполнителей, а также могут существовать другие Функциональные роли (ФР) с отличающимися возможностями (например, Контролёр).
В задании содержится список связанных с ним ФРЗ в таблице TaskAssignedRoles
. В истории заданий допускается использование поля Settings
таблицы TaskHistory
для хранения служебных данных (например, некоторые данные из TaskAssignedRoles
завершённого задания).
Функциональная роль - это отдельный справочник, который описывает возможности сотрудника, если он входит в состав ФРЗ и имеет конкретную ФР.
Справочник Функциональных ролей¶
Справочник функциональных ролей расположен в представлении Администратор → Служебные → Функциональные роли.
По умолчанию для поддержки исторической функциональности в системе присутствуют ФР “Автор” и “Исполнитель”. Так же, для расширения функциональности типового процесса отправки задач, существует ФР “Отправитель”.
Данные карточки имеют следующие настройки:
- Название - название функциональной роли.
- Уникальное имя - уникальное имя функциональной роли.
- Библиотека схемы - библиотека схемы, где будет храниться запись об этой ФР в базе данных.
- Идентификатор - идентификатор функциональной роли.
- Не скрывать от заместителей в назначенной роли задания - если этот флаг не установлен, то пользователи, входящие в роль, на которую ссылается ФРЗ, как заместители - не видят такое задание. Если флаг установлен - видят.
- Требует взятия “В работу” - означает, что задание нужно брать в работу для доступа к вариантам завершения и к откладыванию задания. Если этот флаг установлен, то флаг Скрывать задание по умолчанию очищается и не может быть установлен.
- Отображать в задании по умолчанию - влияет на отображение для пользователей в форме задания записей с данной ФР. Если установлено, система будет по умолчанию устанавливать флаг Отображать в задании для всех записей с этой функциональной ролью. Если только при добавлении записи с этой функциональной ролью флаг Отображать в задании не был определён принудительно (например, через расширение).
- Скрывать задание по умолчанию - если флаг установлен, то система загружает только основную информацию о задании, и само задание не отображается в карточке при её открытии. Для доступа к нему нужно выбрать опцию Показать скрытые задания под списком заданий.
- Разрешает изменять дайджест и плановую дату задания - если установлен этот флаг, то обладатель такой ФР в списке ФРЗ сможет вносить соответствующие изменения в задание, если для типа задания установлен флаг Разрешить редактирование параметров задания, см. Основные настройки типа задания.
- Разрешает изменять список ролей своего задания - если установлен этот флаг, то обладатель такой ФР в списке ФРЗ сможет менять список ФРЗ данного задания. Аналогичное право, а так же право на редактирование списка ФРЗ в любом задании, можно задать через типовые правила доступа, см. Редактирование списка ФРЗ.
Настройки Библиотека схемы и Идентификатор продиктованы тем, что данный справочник не является карточкой, а показывает записи из таблицы FunctionRoles
в схеме, которая является Enum
секцией.
Note
Если были внесены изменения в состав функциональных ролей, или в настройки отдельных функциональных ролей, то выгруженная через SchemeEditor схема будет иметь изменения.
Important
Рекомендуется добавлять новые ФРЗ в собственную библиотеку, чтобы не пришлось мерджить библиотеку типовой поставки с проектной при обновлении на новую версию.
Important
Система не подразумевает создания функциональных ролей “на лету”, т.к. список функциональных ролей кэшируется в метаданных. Все созданные функциональные роли будут доступны для выбора в интерфейсе и начнут корректно отображаться только после перезапуска клиента, во время которого произойдёт обновление кэша метаданных.
Видимость заданий в карточке¶
Для каждого варианта завершения задания в типе задания указывается список ФР, которым доступен данный вариант завершения.
Пользователь видит те задания, для которых он входит в состав ФРЗ и имеет доступные варианты завершения, согласно указанным ФР в вариантах завершения типа этого задания. Доступные варианты завершения определяются соответственно.
Если пользователь входит в состав ФРЗ и имеет доступные варианты завершения, но задание уже взято в работу другим сотрудником, то такое задание пользователь увидит, как скрытое по умолчанию с доступным вариантом завершения Перевести на себя.
В представлении Мои задания можно установить параметр фильтрации Показывать задания, взятые в работу не мной. Данный параметр позволяет отобразить все активные задания, в которых текущий сотрудник добавлен в список связанных с заданием ролей, включая те задания, которые уже взяты в работу другими сотрудниками.
Взятие задания в работу¶
Если сотрудник, берущий задание в работу, не входит своей персональной ролью в список связанных с заданием ролей, его персональная роль будет добавлена как дочерняя по отношению к первой из связанных с заданием ролей, к которым он относится по каждой из имеющихся у него функциональных ролей в данном задании. Таким образом, сотрудник не сможет потерять доступ к уже взятому в работу заданию, если он замещает одного из исполнителей и закончится действие его замещения.
Note
Для случаев с автоматически берущимся в работу заданием и вариантами завершения, не требующими взятия задания в работу (когда пользователь, взявший задание в работу, записывается пользователем, выполнившим данный вариант завершения задания), персональная роль сотрудника может быть добавлена дочерней по отношению к первой из связанных с заданием ролей, к которым он относится по каждой из имеющихся у него функциональных ролей в данном задании. Это происходит по логике аналогичной обычному взятию задания в работу.
При добавлении такой записи в список связанных с заданием ролей она помечается флагом CardTaskAssignedRoleFlags.Hidden
в CardTaskAssignedRole.Flags
.
Редактирование списка ФРЗ¶
Список ФРЗ можно просматривать и редактировать через специальный диалог, который вызывается кликом по автору или исполнителю в области задания:
Так же редактировать список ФРЗ возможно через меню системы. Для этого необходимо открыть карточку документа, затем выбрать пункт Меню системы → Изменить роли заданий.
Note
Если карточка открыта на чтение, то кнопка изменения ролей заданий появится только после нажатия на кнопку Редактировать, которая выполнит расчет прав и если соответствующие права есть - появится кнопка Изменить роли заданий.
При её нажатии открывается диалог с выбором задания в виде представления:
После выбора задания открывается диалог с редактированием ФРЗ:
В этом окне доступен просмотр списка ФРЗ задания, а также есть возможность добавить новые, удалить старые и перевесить признак Основная на другого сотрудника.
Important
Признак Основная определяет на основе какой записи берутся данные для расчета календаря и временной зоны при отправке задания. При перемещении данного признака на другую роль, перерасчет календаря и временной зоны в отправленном ранее задании производиться не будет.
Note
При отправке одного задания на несколько исполнителей система автоматически определит срок исполнения по временной зоне и календарю первого в списке исполнителя, для его ФРЗ и будет выставлен флаг Основная. Логику определения Основной ФРЗ можно изменить скриптом (при настройке маршрута или процесса).
Так же здесь можно изменить признак Отображать в задании для конкретной записи ФРЗ. По умолчанию система проставляет этот признак для записей с ФР “Автор”.
Если установить признак Отображать в задании нажатием на соответствующую кнопку или при помощи пункта контекстного меню у конкретной ФРЗ, то данная ФРЗ будет отображаться в задании.
Для внесения изменений в список ФРЗ необходимо быть в списке ФРЗ этого задания с ФР, у которой установлен флаг Разрешает изменять список ролей своего задания, либо отмечено одно из разрешений, указанное в карточке правила доступа:
-
Редактировать ФРЗ своих заданий - пользователь может редактировать ФРЗ только тех заданий, к которым он имеет непосредственное отношение (входит с список ролей ФРЗ).
-
Редактировать ФРЗ всех заданий - пользователь может редактировать ФРЗ всех заданий карточки вне зависимости от того, включён он в задание или нет.
Редактирование ФРЗ через API¶
Для удобного добавления участников в TaskAssignedRoles
в CardTask
добавлены методы расширения AddRole
, AddPerformer
и AddAuthor
.
Эти методы призваны упростить добавление участников задания. Методы AddPerformer
и AddAuthor
добавляют участников с функциональными ролями “Исполнитель” и “Автор” соответственно. Они призваны использоваться для поддержки функциональности, когда у задания всё ещё два типа участника (исполнитель и автор).
Метод AddRole
- универсальный, и он подойдёт для добавления участников с любыми функциональными ролями, в том числе с теми, которые могут быть созданы в будущем. Один из его параметров showInTaskDetails
по умолчанию равен null
. Он отвечает за указание свойства ShowInTaskDetails
создаваемой записи в списке связанных с заданием ролей. Если оставить его равным null
, то видимость записи в информации о задании будет определена на основании настройки Отображать в задании по умолчанию из соответствующей записи функциональной роли.
Роли в заданиях и истории заданий¶
Для определения признака авторства, который необходим в интерфейсе задания и некоторых отчётах (например, представление Завершённые задания → Завершённые мной) в Tasks
и TaskHistory
имеется комплексная колонка Author
. Если при сохранении задания поле CardTask.AuthorID
будет пустым, то будет взят первый по GUID сотрудник из всех, кто входит в задание с ФР “Автор”. Если таковых записей не найдено, то текущая сессия будет указана в качестве значения для поля Author
. Поле Author
в TaskHistory
- заполняется переносом аналогичного значения из Tasks
, в случае автоматического создания записи, либо тем значением, что было установлено в CardTaskHistoryItem.AuthorID
и CardTaskHistoryItem.AuthorName
.
Для определения списка ролей, к которым относился сотрудник, завершивший задание, в TaskHistory
есть поле CompletedByRole
в составе комплексной колонки CompletedBy
. Так же, в таблице TaskHistory
есть колонка AssignedOnRole
, которая используется для определения списка “Назначено на роль”.
Если, для каких-то целей необходимо сохранять список ФРЗ задания или его часть, можно воспользоваться полем Settings
в TaskHistory
. Это JSON
поле, в которое можно записать необходимую для ваших расширений информацию.