Формулировка проблемы: необходима возможность массовых действий над записями реестров из конфигуратора.
Используется: Конфигуратор -> Реестры, Основное приложение -> Реестры.
Решение: текущая постановка заключает в себе две логические части:
Необходимо добавить новый интерфейс по управлению всеми записями каждого отдельного реестра. Он будет доступен из кнопки "Управление записями реестра", которая располагается в верхней панели карточки реестра (Конфигуратор -> Процессы -> Реестры -> Редактирование реестра). Данная кнопка будет доступна методологу только для тех реестров, на которые ему даны все следующие права:
"Изменение" самого реестра в Конфигураторе;
Изменение записей реестра;
Удаление записей реестра.
По нажатию на кнопку будет открываться отдельный экран. Он содержит следующие элементы:
Список массовых действий
Статусы записей реестра
Скорость обработки записей
Кнопки управления массовыми действиями
Лог последних выполненных действий
Если реестр не содержит ни одной записи, то по нажатию на кнопку "Управление записями реестра" отобразится ошибка с текстом:
Реестр не содержит записей
Переход на экран управления записями не происходит.
Список массовых действий представлен в виде группы переключателей:
Активация (выбран по умолчанию)
Возврат к статусу "Подготовка"
Прерывание маршрутов
Запуск маршрута изменения
Удаление
Переключатель пункта "Запуск маршрута изменения" может быть недоступен. В данном случае для него отображается кнопка "?", по нажатию на которую раскрывается всплывающая подсказка с текстом-причиной:
Для выполнения данного массового действия реестр должен иметь маршрут события "Изменение элемента"
Статусы записей реестра отображаются в виде группы флагов:
Подготовка
В процессе
Активная
Неуспешная
Состояние флагов определяется выбранным массовым действием. Их значения по умолчанию представлены в следующих таблицах:
Действие "Активация"
Статус записи реестра | Активен | Выбран |
---|---|---|
Подготовка |
Да |
Да |
В процессе |
Нет |
Нет |
Активная |
Нет |
Нет |
Неуспешная |
Да |
Да |
Действие "Возврат к статусу "Подготовка""
Статус записи реестра | Активен | Выбран |
---|---|---|
Подготовка |
Нет |
Нет |
В процессе |
Нет |
Нет |
Активная |
Да |
Да |
Неуспешная |
Да |
Да |
Действие "Прерывание маршрутов"
Статус записи реестра | Активен | Выбран |
---|---|---|
Подготовка |
Нет |
Нет |
В процессе |
Да |
Да |
Активная |
Нет |
Нет |
Неуспешная |
Нет |
Нет |
Действие "Запуск маршрута изменения"
Статус записи реестра | Активен | Выбран |
---|---|---|
Подготовка |
Нет |
Нет |
В процессе |
Нет |
Нет |
Активная |
Да |
Да |
Неуспешная |
Нет |
Нет |
Действие "Удаление"
Статус записи реестра | Активен | Выбран |
---|---|---|
Подготовка |
Да |
Да |
В процессе |
Нет |
Нет |
Активная |
Да |
Да |
Неуспешная |
Да |
Да |
Группа переключателей Скорость обработки записей содержит пункты:
Медленная (выбран по умолчанию)
Быстрая
Пункт "Быстрая" также содержит кнопку "?", по нажатию на которую откроется всплывающая подсказка с текстом сообщения:
При выборе данного типа обработки возможно сильное замедление работы системы
Кнопками управления массовыми действиями являются кнопки "Запустить" и "Прервать". Их доступность определяется следующим образом:
Условие | Кнопка "Запустить" | Кнопка "Прервать" |
---|---|---|
Массовое действие завершено либо не было запущено |
Активна |
Неактивна |
Массовое действие в процессе обработки |
Неактивна |
Активна |
Ни один флаг статуса записи реестра не был выбран |
Неактивна |
Неактивна |
Лог последних выполненных действий отображает прогресс выполнения массового действия. Сообщения представлены в формате:
YYYY-MM-DD hh:mm %Текст_сообщения%
Сообщения о ходе выполнения массового действия окрашены в черный цвет, а сообщения о завершении, прерывании действия, а также ошибки - в красный.
При запуске нового массового действия область лога очищается. Если массовое действие еще выполняется, то новые записи о ходе выполнения процесса добавляются в режиме реального времени. Некоторые записи хода выполнения действия могут не быть добавлены лог, но сообщения о завершении, прерывании действия, а также ошибки отображаются в нем всегда.
Если количество записей лога такое, что не отображается полностью, в его области отображается вертикальный скролл. Горизонтальный скролл в этой области никогда не отображается.
Запуск массового действия осуществляется путем нажатия на кнопку "Запустить". При этом отобразится модальное браузерное окно с текстом сообщения:
Процесс обработки может занять продолжительное время. Все принятые изменения невозможно будет отменить. Вы действительно хотите продолжить?
После подтверждения экран переходит в состояние "Действие запущено":
Вычисляется количество записей реестра согласно выбранным статусам. Массовое действие будет применено только к ним, причем с заданной скоростью обработки.
Все переключатели и флаги становятся неактивными.
Кнопка "Запустить" становится неактивной, а "Прервать" - активной.
В лог начинают добавляться сообщения о ходе выполнения массового действия в режиме реального времени.
Если другой методолог переходит в "Управление записями реестра" такого реестра, действие в котором уже запущено, он увидит экран в вышеописанном состоянии.
Примечание
Возможно возникновение следующей ситуации:
Никаких массовый действий в реестре не выполняется. Один из методологов переходит в экран управления массовыми действиями этого реестра, но пока ничего не запускает. В этот момент другой методолог также переходит в "Управление записями реестра" этого же реестра и запускает действие. Первый методолог тоже пытается запустить какое-либо действие, но так как в одном реестре может одновременно выполняться только одно массовое действие, то экран переходит в вышеописанное состояние, а также отображается ошибка со следующим текстом:
Массовое действие уже запущено
Далее в лог будут добавляться записи согласно типу применяемого действия:
Для "Активации":
Активировано %X% из %Y% записей
Для "Возврата к статусу "Подготовка"":
К статусу "Подготовка" возвращено %X% из %Y% записей
Для "Прерывания маршрутов":
Маршрут прерван для %X% из %Y% записей
Для "Запуска маршрута изменения":
Изменение элемента выполнено для %X% из %Y% записей
Для "Удаления":
Удаление элемента выполнено для %X% из %Y% записей
Если при обработке записи возникла системная ошибка
(exeption
), в лог будет добавлена
соответствующая запись. Процесс обработки при этом
продолжится. Текст сообщения в логе:
Системная ошибка при обработке записи. Идентификатор документа: %uuid_документа%, значащее содержимое: %значащее_содержимое%
Где %X%
- количество обработанных записей
(включая успешные и неуспешные), %Y%
-
суммарное количество записей выбранных статусов,
%значащее_содержимое%
- перечисление
значений колонок реестра, у которых включен флаг
"Значащее содержимое".
По окончании массового действия в лог также будет добавлено сообщение:
Если все записи обработаны успешно:
Массовое действие "%тип_действия%" завершено. Обработано %Y% записей
Если при обработке каких-либо записей произошли ошибки:
Массовое действие "%тип_действия%" завершено. Обработано %Y% записей, из них успешно: %X%, с ошибкой: %Z%
Где %Z%
- количество записей, обработанных
с ошибкой.
При запуске действия "Возврат к статусу "Подготовка"" для успешно обработанных записей таблице "Изменения в документе" основного приложения добавится новая запись:
№ п/п | Пользователь | Дата | IP адрес | Описание | Комментарий |
---|---|---|---|---|---|
номер- записи |
методолог- запустивший- действие |
дата-время- запуска- массового- действия |
ip-адрес-с- которого- произведено- действие |
С записи реестра снят статус название- предыдущего-статуса |
Если у реестра отсутствует маршрут события "Активация элемента", "Запуск маршрута изменения" и/или "Удаление элемента", то при запуске соответствующего действия оно будет выполнено без запуска маршрута.
Если маршрут имеет хотя бы один блок типа "Предварительные этапы" и/или "Последующие этапы", для которого включен флаг "Отображать при сохранении", то при запуске маршрута в лог добавится запись:
Ошибка при запуске действия: реестр содержит маршрут с блоками "Предварительные этапы" и/или "Последующие этапы", которые отображаются при сохранении. Выключите для них флажок "Отображать при сохранении", либо удалите эти блоки маршрутов и повторите попытку
обработка действия не начнется.
Если включена настройка "Требовать подпись перед отправкой документа" (Конфигуратор -> Документооборот -> Настройки документооборота), реестр содержит какие-либо из маршрутов, то при запуске соответствующего действия в лог добавится сообщение:
Ошибка при запуске действия: записи необходимо отправить по маршруту, но перед отправкой требуется подписать документ. Отключите флажок "Требовать подпись перед отправкой документа" в подразделе "Настройки документооборота" и повторите попытку
обработка действия не начнется.
Если для типа документа реестра, чьи записи будут обрабатываться, включена настройка "Валидация РКК перед отправкой документа" (Конфигуратор -> Документооборот -> Типы документов), то для некоторых записей реестра маршрут запустить нельзя из-за того, что не заполнены необходимые поля в РКК. В таком случае обработка этой записи будет пропущена, а в лог добавится сообщение об ошибке:
Ошибка при обработке записи: включена настройка "Валидация РКК перед отправкой документа", а в РКК документа этой записи не заполнены требуемые поля. Идентификатор документа: %uuid_документа%, значащее содержимое: %значащее_содержимое%
обработка действия продолжается.
Отмена массового действия может быть осуществима по нажатию на кнопку "Прервать". При этом отобразится модальное браузерное окно с текстом сообщения:
Вы действительно хотите прервать массовое действие над записями реестра?
После подтверждения произойдет следующее:
Обработка записей реестра прекращается.
Переключатели и флаги принимают такое же состояние, как и до начала массового действия.
Кнопка "Запустить" становится активной, а "Прервать" - неактивной.
В лог последних выполненных действий добавляется сообщение о прерывании:
Массовое действие "%тип_действия%" прервано. Обработано %X% из %Y% записей, Из них успешно: %Z%, с ошибкой: %W%
Где
%X%
- количество обработанных записей
(до отмены действия) %Y%
- суммарное
количество записей, выбранных для обработки
%Z%
- количество записей, обработанных
успешно %W%
- количество записей,
обработанных с ошибкой
Все запуски, прерывания и завершения массовых действий должны логироваться в административном приложении. Для этого в источник "Конфигуратор" будут добавлены события:
Событие: Запуск массового действия над записями реестра
Описание: Идентификатор:
%uuid_реестра%
. Тип:
%тип_массового_действия%
. Будет обработано:
%Y%
записей.
Событие: Завершение массового действия над записями реестра
Описание: Идентификатор:
%uuid_реестра%
. Тип:
%тип_массового_действия%
. Успешно
обработано: %X%
записей. Обработано с
ошибками: %Z%
записей.
Примечание
Если все записи были успешно обработаны, "Обработано с ошибками" не добавляется.
Событие: Отмена массового действия над записями реестра
Описание: Идентификатор:
%uuid_реестра%
. Тип:
%тип_массового_действия%
. Всего обработано:
%X%
из %Y%
записей.
Успешно обработано: %Z%
записей. Обработано
с ошибками: %W%
записей.
Где
%X%
- количество обработанных записей (до
отмены действия) %Y%
- суммарное количество
записей, выбранных для обработки %Z%
-
количество записей, обработанных успешно
%W%
- количество записей, обработанных с
ошибкой