Создание сервиса генерации
Генерация печатных форм осуществляется с помощью класса
sber.platform.docgen.document.api.DocumentGenerator
.Экземпляр сервиса создается как
spring bean
в контексте приложения автоматически, т.к. подключен docgen-lib-spring-boot-starter
.Запрос на создание документа по шаблону с заданным кодом и его версии, которая активна в переданную дату.
Параметры для генерации документа:
- код шаблона (
templateCode
); - поток (
resultingStream
), в который будет передан результат генерации; - дата документа (
documentDate
), используемая для выбора версии шаблона, которая активна на текущую дату; - параметры для заполнения документа (
documentParams
); - требуемый формат генерируемого документа (
format
).
Пример запроса на генерацию документа по дате:
Раскрыть type=txtByteArrayOutputStream resultingStream= new ByteArrayOutputStream(); Map<String, Object> params = Collections.singletonMap("paramName", "paramValue"); CreationToDateParams creationParams = CreationToDateParams.builder() .templateCode(templateCode) .format(format) .documentParams(documentParams) .resultingStream(resultingStream) .documentDate(documentDate) .build(); DocumentInfo documentInfo = documentGenerator.createToDate(creationParams); //documentGenerator является экземпляром класса sber.platform.docgen.document.api.DocumentGenerator
Запрос на создание документа по шаблону с заданным кодом и его версии с переданным кодом.
Параметры для генерации документа:
- код шаблона (
templateCode
); - код версии шаблона (
versionCode
); - поток (
resultingStream
), в который будет передан результат генерации; - параметры для заполнения документа (
documentParams
); - требуемый формат генерируемого документа (
format
).
Пример запроса на генерацию документа по коду версии:
Раскрыть type=txtByteArrayOutputStream resultingStream= new ByteArrayOutputStream(); Map<String, Object> params = Collections.singletonMap("paramName", "paramValue"); CreationByVersionCodeParams creationParams = CreationByVersionCodeParams.builder() .templateCode(templateCode) .format(format) .documentParams(documentParams) .resultingStream(resultingStream) .versionCode(versionCode) .build(); DocumentInfo documentInfo = documentGenerator.createByVersionCode(creationParams); //documentGenerator является экземпляром класса sber.platform.docgen.document.api.DocumentGenerator
Запрос на создание документа по шаблону с переданным уникальным идентификатором версии. Уникальный идентификатор версии шаблона возвращается в результате создания документа и может быть использован для гарантированного повторного создания документа по такому же шаблону и версии, даже в случае, если версия была заменена.
Параметры для генерации документа:
- уникальный идентификатор версии (
versionUid
); - поток (
resultingStream
), в который будет передан результат генерации; - параметры для заполнения документа (
documentParams
); - требуемый формат генерируемого документа (
format
).
Пример запроса на генерацию документа по коду версии:
Раскрыть type=txtByteArrayOutputStream resultingStream= new ByteArrayOutputStream(); Map<String, Object> params = Collections.singletonMap("paramName", "paramValue"); CreationByVersionUidParams creationParams = CreationByVersionUidParams.builder() .format(format) .documentParams(documentParams) .resultingStream(resultingStream) .versionUid(versionUid) .build(); DocumentInfo documentInfo = documentGenerator.createByVersionUid(creationParams); //documentGenerator является экземпляром класса sber.platform.docgen.document.api.DocumentGenerator
Результатом для всех запросов генерации является объект
DocumentInfo
, который содержит:- Уникальный идентификатор версии шаблона, по которому создан документ.
- Формат созданного документа, указанный явно при запросе, а если не указан, то получен из конфигурации шаблона.
Созданный документ записывается в переданный в запросе
resultingStream
.Компонент поставляет потребителям Библиотеку генерации документов — jar-библиотеку, которую потребитель подключает в свое spring boot-приложение, используя предоставленный
spring-boot-starter
, с целью использования экземпляра Компонента для формирования документов.Подключение библиотеки
Для подключения библиотеки нужно добавить в
pom.xml
spring boot-приложения зависимость на spring-boot-starter
библиотеки:Раскрыть type=xml<dependency> <groupId>sber.platform.docgen</groupId> <artifactId>docgen-lib-spring-boot-starter</artifactId> <version>1.0.0</version> <scope>compile</scope> </dependency>
Конфигурирование библиотеки
Для работы библиотеки генерации печатных форм требуется обязательное наличие нижеперечисленных параметров:
rn
—resourceName
(идентификатор ресурса проекта);dcgn.template-provider-url
— URL до провайдера шаблонов.
Помимо этого, есть и опциональные параметры:
dcgn.filling-template-timeoutInMillis
— максимально допустимое время наполнения шаблона данными. Время получения шаблона из Реестра шаблонов не учитывается. Значение по умолчанию — 60000;- Для оптимизации повторных запросов на генерацию документов по одному и тому же шаблону библиотека генерации кеширует шаблон, полученный из провайдера шаблонов. Доступны следующие настройки для кеша:
dcgn.cache-max-size
— максимальный размер кеша. Значение по умолчанию — 100;dcgn.cache-evict-timeout-seconds
— период времени с момента получения шаблона из Реестра шаблонов, после которого шаблон вытесняется из кеша. Значение по умолчанию — 900.
Пример конфигурирования через
application.yaml
:Раскрыть type=yamlrn: default dcgn: template-provider-url: http://localhost:8090/template-provider filling-template-timeoutInMillis: 60000 cache-max-size: 100 cache-evict-timeout-seconds: 900
В демопримерах реализованы стандартные сценарии, демонстрирующие работу отдельных сервисов Платформы ГосТех. Отправка тестовых запросов в демопримерах позволит вам ознакомиться с функциями того или иного сервиса. Доступные демопримеры и описания реализованной в них функциональности представлены ниже.
Генерация печатной формы
Генерация печатных форм с заданным форматом и набором полей, загрузка готовых шаблонов