<< Click to Display Table of Contents >> Разработка > Рекомендации по разработке для масштабируемых систем > Оптимизация работы с сущностями Ускорение массового подписания документов
|
![]() ![]() |
Когда сотрудник подписывает большое количество документов, это может занимать время и нагружать систему. Чтобы массовое подписание документов выполнялось быстро и оптимально, используйте рекомендации из этого раздела.
Что уже оптимизировано в системе для подписания
В Directum RX для ускорения массового подписания документов уже оптимизировано:
•подписание простой электронной подписью;
•подписание усиленной электронной подписью через веб-агент;
•подписание усиленной неквалифицированной подписью (УНЭП) с использованием плагина КриптоПро DSS;
•сохранение большого количества сформированных подписей.
Примечание. Оптимизация не затрагивает подписание плагинами, разработанными на основе шаблона из репозитория GitHub.
Оптимизация действует в ситуациях, когда сотрудник вручную выделяет документы в списке и через контекстное меню выбирает действие Подписать. Также оптимизация действует, если в системе с помощью среды разработки программно настроено подписание документов. Для этого используются перегрузки методов Signatures.Approve() и Signatures.Endorse() с параметром entities. В нем указывается пачка документов для подписания.
Важно. Успешно подписывается или нет сразу вся пачка документов. Поэтому не рекомендуется использовать большие пачки, например, делите их на порции по 100 штук.
Расчет хеша документа и его кэширование
При выполнении операций с подписями рассчитывается хеш подписываемых данных. Он временно кэшируется и сохраняется в базе данных для повторного использования. Благодаря этому в системе ускоряются операции:
•подписание документа одним или несколькими сотрудниками;
•подписание нескольких документов одним сотрудником;
•валидация подписей;
•усовершенствование подписей.
Также снижается нагрузка на сервис хранилищ, так как для выполнения операций системе не нужно каждый раз получать содержимое документа и заново рассчитывать хеш. Достаточно получить его сохраненный кэш из базы данных.
Кроме того, массовые операции с подписями выполняются быстро даже когда система развернута в кластере. Например, на узле с веб-сервером выполняется подписание, а на узле с сервисом асинхронных событий – усовершенствование подписей. Системе достаточно рассчитать хеш на одном узле и получить его сохраненный кэш из базы данных на других:
По умолчанию время жизни хеша в кэше – 240 минут. Если это время истекло или подписываемые данные изменились, то хеш пересчитывается при следующем обращении к ним. Администратор может изменить значение с помощью параметра SIGNABLE_PROPERTIES_HASH_CACHE_LIFETIME_IN_MINUTES.
Как еще оптимизировать и ускорить подписание
Дополнительно ускорить массовое подписание документов можно с помощью метода Signatures.ComputeAndStoreHashes(). Например, сотруднику приходит на подписание большой поток документов, при этом их содержимое он не меняет. Чтобы подписание выполнялось быстрее, с помощью метода можно предварительно рассчитать хеши документов и задать их время жизни в кэше.
Важно. Предварительный расчет хеша необходимо выполнять на сервисе асинхронных событий (Worker) и до того, как документ придет на подписание. Например, при сохранении карточки документа добавьте запуск асинхронного обработчика для расчета его хеша.
Если используется КриптоПро DSS, то на скорость подписания влияет формат итоговой подписи: CAdES-BES – подписание выполняется быстро, каждый следующий уровень (CAdES-T, CAdES-XL, CAdES-A) замедляет время формирования подписи. Для ускорения подписания в настройках плагина КриптоПро DSS задайте формирование электронной подписи CAdES-BES. Затем задайте настройки для усовершенствования подписей до необходимого формата с помощью механизмов платформы.
© Компания Directum, 2024 |