Решение "Вспомогательные инструменты" (Service Kit) - это набор, логически не связанных между собой инструментов, каждый из которых закрывает небольшую, но относительно распространенную потребность, возникающую при работе с системой Directum RX.
В какой-то степени, текущее решение можно считать неким наследником "пробного" решения для администратора и разработчика Directum RX.
В состав решения входит следующий функционал:
Функционал предназначенный для использования прикладными разработчиками:
Назначение: На обложку вынесены все визуальные элементы, предназначенные для использования администраторами системы.
Права доступа к обложке: Пользователи входящие в роль "Администраторы".
Рис. Пример обложки модуля "Вспомогательные инструменты"
Назначение: Позволяет дополнительно оповещать исполнителей о старте или о приближении срока выполнения важного задания.
Например: длительное исполнение поручения, HR мероприятия и др.
Для создания напоминания по заданию, необходимо вызвать диалог создания по гиперссылке "Создать напоминание".
В диалоге создания необходимо выбрать нужную задачу.
Внимание: В диалоге доступны все задачи системы, включая кастомные.
Рис. Пример диалога создания напоминаний
Далее необходимо выбрать нужное задание и при необходимости изменить версию схемы.
Версия схемы задачи по умолчанию заполняется текущим актуальным значением, но доступна для редактирования, что позволит настроить напоминания по заданиям, находящимся в работе, но при этом отправленных по предыдущим версиям схемы задачи (до конвертации или до изменения разработки).
Рис. Пример диалога создания напоминаний
При настройке напоминания по задаче на согласование по регламенту необходимо указать Правило согласования и выбрать Этап согласования.
Рис. Пример диалога создания напоминаний
После заполнения диалога, создается карточка справочника "Напоминания", где необходимо настроить расписание рассылки, а также заполнить заголовок и текст уведомления. Так же, при необходимости, можно выбрать ответственные роли или пользователей, которые будут получать копию уведомления.
Рис. Пример настройки напоминания
В расписании рассылки уведомлений, доступны следующие варианты:
- За "n" рабочих Дней до срока задания;
- За "n" рабочих Часов до срока задания;
- Через "n" рабочих Дней с даты старта задания;
- Через "n" рабочих Часов с даты старта задания.
В соответствии с расписанием, заданным в напоминании, исполнителю задания приходит уведомление с вложенным в него заданием.
Рис. Пример задания по исполнению поручения
Рис. Пример рассылки уведомления
Назначение: Формирование отчета по правам, выданным на объекты системы, в разрезе пользователей или ролей. Используется при настройке правовой модели доступа в системе.
Для формирования отчета, необходимо вызвать диалог создания по гиперссылке "Матрица доступа".
В диалоге формирования отчета, необходимо выбрать разрез прав "По пользователям" или "По ролям", при необходимости можно выбрать конкретных пользователей/роли.
Рис. Пример диалога формирования отчета
Результатом работы диалога является отчет "Матрица доступа по пользователям/ролям" в Excel формате.
Рис. Пример экспорта сформированного отчета
При формировании отчета по пользователям, если права выданы не явно, то рядом с типом прав будет выведено указание в рамках чего эти права были выданы.
Внимание: При формировании отчета "По пользователям", в отчет не включаются права, выданные в рамках роли "Все пользователи"!
Прикреплены файлы: Матрица доступа по пользователям.xlsx, Матрица доступа по ролям.xlsx
Назначение: Возобновление работы задачи (без рестарта), которая выпала из обработки службой Workflow, зависла на выполнении какого-либо блока и не продвигается по схеме.
Для возобновления задачи, необходимо вызвать диалог создания по гиперссылке "Возобновить обработку задачи".
В диалоге возобновления необходимо указать ИД задачи, которую необходимо возобновить.
Рис. Пример диалога возобновления задачи
Рассмотрим задачу, отправленную по тестовому маршруту.
Задача успешно прошла блоки "Задание 1" (ИД 3), "Ожидание 2 минуты" (ИД 5) и зависла после выполнения блока "Условие (Блок 6)" (ИД 6).
По результату вычисления блока условия, задача должна была перейти на блок "Сценарий", а затем сформировать задания по блоку "Задание 2", но обработка задачи остановилась.
Рис. Пример схемы тестовой задачи
В диалоге возобновления, после введения ИД зависшей задачи, выводится ее текущее состояние включающее текущий блок, на котором находится задача и его состояние.
Кнопка "Возобновить" доступна, если выполняются условия:
- Если текущий блок имеет тип "Задание", то все задания по этому блоку должны быть выполнены или прекращены;
- Текущий блок имеет состояние "Создан" или "Выполнен".
Рис. Пример диалога возобновления задачи
В результате работы диалога задача восстанавливается в очереди обработки и продолжает свою работу.
Блок с типом "Задание" выполняется без повторного запуска вычислений события "Конец блока".
Блок с типом "Сценарий" выполняется без повторного запуска вычислений события "Выполнение".
Блоки с типами "Условие" и "Мониторинг" выполняются с повторным запуском событий "Результат условия" и "Результат мониторинга" соответственно.
Назначение: Создание системных оповещений, адресованных сотрудникам или ролям Directum RX.
Для работы с оповещениями, доступны следующие диалоги: "Создать оповещение", "Обновить оповещение", "Удалить оповещение".
Для создания оповещения, необходимо вызвать диалог создания по гиперссылке "Создать оповещение".
Рис. Пример диалога создания оповещения
Доступная область показа:
- Все пользователи;
- Выбранные сотрудники;
- Выбранные роли;
- Кроме сотрудников;
- Кроме ролей.
В результате работы диалога в систему добавляется оповещение, которое отображается для указанных пользователей или ролей, заданный период времени.
Внимание: оповещение показывается пользователям, только при входе в систему или при обновлении страницы браузера.
Для обновления данных в оповещении, необходимо вызвать диалог создания по гиперссылке "Обновить оповещение" и выбрать нужное уведомление.
Рис. Пример диалога обновления оповещения
Для редактирования доступны все поля оповещения, за исключением имени.
Внимание: при обновлении информации в оповещении, сохраненные результаты ссылки "Больше не показывать", сбрасываются для всех пользователей системы.
Рис. Пример диалога обновления оповещения
Для удаления оповещения, необходимо вызвать диалог создания по гиперссылке "Удалить оповещение", выбрать нужное уведомление и нажать на кнопку "Удалить".
Оповещение удаляется из системы вместе с сохраненными результатами действия "Больше не показывать".
Рис. Пример диалога удаления оповещения
Данный функционал является доработанной версией загрузки и обновления сертификатов описанной в статье Развитие решения для администраторов и разработчиков Directum RX.
Изменения новой версии:
- Исчезла необходимость выдавать право "Создание" на справочник "Цифровой сертификат";
- Настройка процесса "Мониторинг сроков действия сертификатов" вынесена в отдельный справочник;
- В уведомлениях об истечении срока действия сертификата, появилась возможность загрузки сертификата из уведомления.
Назначение: Позволяет любому пользователю системы самостоятельно загружать и обновлять свои сертификаты без привлечения администраторов Directum RX.
Внимание: изначально диалог импорта сертификата доступен только на обложке "Вспомогательные инструменты", которая отображает пользователям включенным в роль "Администраторы".
Для вывода диалога пользователям, разработчику Directum RX, необходимо создать соответствующее действие на любой обложке системы, доступной всем пользователям.
Сделано это с целью избегания лишних перекрытий базовых объектов.
// Показать диалог импорта сертификата
starkov.Certificates.PublicFunctions.Module.ShowImportCertificateDialog();
Диалог импорта сертификата позволяет, загружать новые сертификаты и заменять текущие, например с истекающим сроком действия.
Рис. Пример диалога загрузки сертификата
Пример реестра выбор сертификата для замены.
Рис. Пример реестра сертификатов
Пример диалога импорта сертификата.
Выбор сертификата ограничен форматами *.cer и *.crt.
Рис. Пример диалога загрузки сертификата
Примечание: Если у текущего пользователя нет действующих сертификатов, то вызов диалога импорта начинается с текущего окна загрузки.
Пример формы подтверждения загрузки.
Назначение: Отслеживает даты окончания сроков действия сертификатов и рассылает их владельцам уведомления об окончании сроков действия.
Для настройки мониторинга сроков действия сертификатов, необходимо открыть запись настройки по гиперссылке "Открыть настройки мониторинга".
В настройке доступно:
- Включение и отключение мониторинга;
- Задание периодичности рассылки (Однократно/Ежедневно);
- Задание темы и текста уведомления с использованием данных из сертификата.
Рис. Пример настройки мониторинга
Пример уведомления, сформированного с использованием шаблонов.
В тексте уведомления доступна гиперссылка "Загрузить сертификат", открывающая диалог импорта сертификата.
Рис. Пример уведомления об окончании срока действия сертификата
Назначение: Запись и хранение истории изменения свойств, свойств коллекций карточек документов.
Права доступа к журналу: Все пользователи.
Для включения записи в журнал изменений, необходимо открыть соответствующую запись справочника "Виды документов" и поставить признак "Записывать историю изменений" в значение "Да" (True).
Внимание: Данные указанные при создании карточки документа (до первого сохранения) игнорируются и не попадают в журнал.
Рис. Пример записи справочника "Виды документов"
Если в свойства карточки документа вносились какие-либо изменения, то в карточке документа появляется вкладка "Журнал изменений", в которой хранится информация о пользователе, измененном свойстве/свойстве коллекции, а так же старое и новое значение свойства с указанием даты и времени изменения.
Рис. Пример коллекции "Журнал изменений" в документе
Назначение: Запись сообщений, по критичным процессам, в отдельные лог файлы с использованием конфигурации (config.yml) Directum RX.
Функционал может быть полезен при отсутствии настроенной системы мониторинга.
Доступность вызова: Клиентский слой, серверный слой.
Доступные уровни логирования: Trace, Info, Debug, Warn, Error.
Вызов функций логирования на примере уровня Debug:
//Имя папки
string folderName;
//Имя файла
string fileName;
//Сообщение
string message;
//Если isWriteToFolderProcess равен False, то в корневом каталоге "Logs" будет создана папка DrxCustomLogs
//ВНИМАНИЕ: Создание КОРНЕВОЙ папки DrxCustomLogs работает только в Windows.
bool isWriteToFolderProcess;
//Доступные перегрузки
starkov.LogManager.PublicFunctions.Module.Remote.Debug(fileName, message);
starkov.LogManager.PublicFunctions.Module.Remote.Debug(folderName, fileName, message);
starkov.LogManager.PublicFunctions.Module.Remote.Debug(fileName, message, isWriteToFolderProcess);
Внимание: За исключением использования параметра isWriteToFolderProcess (работает только в Windows системах), лог файл (как и создание папки) всегда записывается в ту же папку, куда записывается лог файл процесса, инициировавшего запись в лог.
Небольшой пример логирования, на примере реального фонового процесса:
rx-app-2-sungeroworker.AutomaticMailDelivery.2022-11-08.log
Назначение: Конкурентное выполнение заданий с использованием базового свойства "Результата прекращения" (StopResult), которое исключает взаимные блокировки заданий при их прекращении.
Доступность вызова: Клиентский слой.
Пример вызова функции ChangeStopResult() из обработчика "Результаты выполнения" задания:
//ИД задачи
int taskID = _obj.Task.Id;
//ИД блока в схеме задачи
string blockID = "3";
//Новое значение StopResult
string stopResult = e.Action.Name;
// Изменить значение StopResult для конкурентного выполнения задания
starkov.Common.PublicFunctions.Module.ChangeStopResult(taskID, blockID, stopResult);
Назначение: Запуск выполнения асинхронного обработчика в указанную дату и время.
Позволяет избежать:
- добавления лишних параметров, типа дата/время выполнения (тип строка);
- "холостого" выполнения, с целью задания параметра NextRetryTime и как следствие, лишних вычислений.
Доступность вызова: Серверный слой.
Пример отложенного запуска, на примере асинхронного обработчика с именем SendReminder:
//Дата и время выполнения обработчика
DateTime executeTime = Calendar.Now.AddWorkingHours(4);
//Аргументы обработчика SendReminder расположенного в модуле Notifications
var args = new starkov.Notifications.Server.AsyncHandlerInvokeArgs.SendReminderInvokeArgs();
args.NextRetryTime = executeTime;
//Заполнение параметров, добавленных при создании обработчика SendReminder
//args.Xxx = xxx;
//args.Yyy = yyy;
//Guid (Идентификатор) обработчика SendReminder
Guid sendReminderGuid = Constants.Module.SendReminderGuid;
//Выполнить отложенный старт асинхронного обработчика
starkov.Common.PublicFunctions.Module.DelayExecuteAsync(sendReminderGuid, args, executeTime);
В решении так же реализован вспомогательный справочник "Типы объектов", для хранения основных метаданных объектов системы.
Справочник заполняется при инициализации.
Рис. Реестр справочника "Типы объектов"
Рис. Запись "Тип объекта" для справочника "Виды документов"
Технические вопросы Вы можете задать в комментариях к статье.
По остальным вопросам, Вы можете обратиться к нашему руководителю отдела продаж Хрусталеву Георгию Викторовичу.
E-mail: hrustalev@starkovgrp.ru
Телефоны: +7 (343) 385-75-85 (106), +7 (922) 119-49-48.
Решение «Перенос данных»
Решение "Конструктор условий и ролей в регламентах"
В заключение хочется всех поздравить с наступающим Новым Годом и пожелать счастья, здоровья Вам и Вашим близким.
Поменьше тревог в новом году!
Авторизуйтесь, чтобы написать комментарий