ActionItemExecutionTask – задача на исполнение поручения
<< Click to Display Table of Contents >> Объектная модель > Базовое решение Directum RX > RecordManagement – делопроизводственные документы > Поручение, продление срока, запрос отчета поручения ActionItemExecutionTask – задача на исполнение поручения |
Механизм поручений позволяет выдавать формализованные задания сотрудникам, контролировать ход исполнения и принимать сделанные работы. Наследник от Sungero.Workflow.Task.
Поручения в зависимости от исполнителей бывают:
•простые – один исполнитель с возможностью указать соисполнителей. Для исполнителя задание формируется в рамках задачи. Для соисполнителей – в рамках подзадач, где автором и контролером является исполнитель;
•составные – равноправные независимые исполнители. Задания на исполнение формируются в рамках подзадач для всех исполнителей.
Задача на исполнение поручения может быть создана:
•в процессе рассмотрения документов. Подробнее см. раздел «Подготовка и доработка проекта резолюции»;
•в процессе согласования по регламенту. Подробнее см. раздел «Создание поручений»;
•по протоколу совещания. Подробнее см. раздел «Создание поручений по протоколу»;
•от документа, который можно отправить на исполнение;
•без вложенного документа, как аналог устного поручения.
Для мониторинга хода выполнения работ используется:
•список «Поручения»;
•список «Поручения по совещаниям»;
•отчет «Контроль сроков исполнения поручений»;
•виджет «Поручения на контроле»;
•виджет «Исполнение поручений в срок»;
•закладка «Поручение» в карточке задачи;
•закладка «Поручения» в карточке совещания;
•закладка «Задачи» в карточке документа;
•поиск поручений по документу IncomingDocumentBase и InternalDocumentBase.
При прекращении задачи нужно указать причину прекращения, при этом прекращаются все подзадачи, высылаются уведомления для исполнителей по подзадачам. При программном вызове остановка подзадач не выполняется (событие «До прекращения»).
Корректировка поручения позволяет актуализировать участников исполнения работ – контролера, ответственного исполнителя, соисполнителей.
Алгоритм корректировки простого поручения или пункта составного поручения:
1.Проверка на возможность корректировки в текущий момент. Выполняется в серверной функции CheckActionItemEditInDialog() для простого поручения и CheckCompoundActionItemPartEditInDialog() для пункта составного поручения. Проверяется, что:
•при попытке изменить ответственного исполнителя или срок исполнения поручение не находится на приемке;
•поручение не было изменено с момента открытия диалога корректировки. Сравнивается дата открытия диалога и дата последнего изменения поручения на сервере;
•поручение находится в работе;
•поручение никем не корректируется. Проверяется по свойству OnEditGuid;
•по поручению созданы все актуальные задания;
•поручение никем не заблокировано.
2.Установка признака начала корректировки (свойство OnEditGuid).
3.Актуализация заданий. Выполняется в серверной функции ChangeSimpleActionItem(). При актуализации происходит:
•переадресация неактуальных заданий исполнителю и контролеру через метод assignment.Forward();
•актуализация срока в существующем задании на исполнение;
•прекращение неактуальных заданий исполнителю и контролеру, если они не были заблокированы, через метод assignment.Abort();
•прекращение неактуальных подзадач на запросы отчета и продления срока.
4.Обработка корректировки поручения, не связанная с ожиданием разблокировки текущих заданий пользователями. Выполняется в асинхронном обработчике ApplyActionItemLockIndependentChanges(). При обработке происходит:
•cинхронизация изменений по пункту в грид основного составного поручения;
•обработка смены контролера: рестарт запроса продления срока, выдача прав новому контролеру;
•обработка смены ответственного исполнителя: поручения соисполнителей переходят в задание нового исполнителя.
5.Обработка корректировки поручения, связанная с ожиданием разблокировки текущих заданий пользователями. Выполняется в асинхронном обработчике ApplyActionItemLockDependentChanges(). При обработке происходит:
•выдача прав на изменение задания на исполнение для возможности корректировки исполнителя контролером;
•актуализация срока в заданиях на исполнение и на приемку;
•прекращение заданий старого исполнителя и контролера;
•очистка идентификатора процесса корректировки (свойство OnEditGuid).
6.Прекращение подпоручений удаленных соисполнителей.
7.Рассылка уведомлений о корректировке поручения.
Алгоритм массовой корректировки составного поручения:
1.Проверка возможности корректировки в текущий момент. Выполняется в серверной функции CheckCompoundActionItemEditInDialog(). Проверяется, что:
•при попытке сменить срок хотя бы один из выбранных пунктов находится не на приемке;
•составное поручение не было изменено с момента открытия диалога корректировки. Сравнивается дата открытия диалога с датой последнего изменения поручения на сервере;
•составное поручение и хотя бы один из выбранных пунктов находятся в работе;
•составное поручение никем не заблокировано;
•выбранные пункты в работе:
•никем не заблокированы;
•не изменялись, пока был открыт диалог. Сравнивается дата открытия диалога и дата последнего изменения пункта на сервере;
•не имеют заданий, находящихся в процессе создания;
•никем не корректируются, и составное поручение также никем не корректируется. Проверяется по свойству OnEditGuid составного поручения и каждого пункта.
2.Установка признака начала корректировки (свойство OnEditGuid).
3.Актуализация изменений контролера и срока в выбранных пунктах. Выполняется в серверной функции ChangeCompoundActionItem(). При актуализации происходит:
•переадресация неактуального задания контролеру пункта через метод assignment.Forward();
•прекращение неактуального задания контролера пункта через метод assignment.Abort(), если оно не было заблокировано;
•актуализация срока в существующем задании на исполнение по пункту поручения.
Примечание. Новый срок соисполнителей вычисляется исходя из первоначальной разницей между сроком исполнителя и соисполнителей в пункте. Если срока соисполнителей до корректировки не было, то он вычисляется из срока приемки, указанного в справочнике Настройки делопроизводства.
•прекращение неактуальных подзадач на продление срока по пункту поручения;
•обработка корректировки пункта поручения, не связанная с ожиданием разблокировки текущих заданий пользователями. Выполняется в асинхронном обработчике ApplyActionItemLockIndependentChanges();
•обработка корректировки пункта поручения, связанная с ожиданием разблокировки текущих заданий пользователями. Выполняется в асинхронном обработчике ApplyActionItemLockDependentChanges();
•прекращение неактуальных подзадач на запросы отчета по пункту поручения.
Примечание. Для корректировки каждого пункта создается копия структуры ActionItemChanges с индивидуальными значениями старого срока (OldDeadline) и контролера (OldSupervisor). Создается копия структуры, т.к. данные значения могут быть уникальными для каждого пункта.
4.Рассылка уведомлений о корректировке поручения.
5.Обработка корректировки основного составного поручения, не связанная с ожиданием разблокировки текущих заданий пользователями. Выполняется в асинхронном обработчике ApplyActionItemLockIndependentChanges().
6.Обработка корректировки основного составного поручения, связанная с ожиданием разблокировки текущих заданий пользователями. Выполняется в асинхронном обработчике ApplyActionItemLockDependentChanges().
© Компания Directum, 2024 |