Создание сервиса генерации

Генерация печатных форм осуществляется с помощью класса sber.platform.docgen.document.api.DocumentGenerator.
Экземпляр сервиса создается как spring bean в контексте приложения автоматически, т.к. подключен docgen-lib-spring-boot-starter.

Запрос на создание документа по дате (createToDate)

Запрос на создание документа по шаблону с заданным кодом и его версии, которая активна в переданную дату.
Параметры для генерации документа:
  • код шаблона (templateCode);
  • поток (resultingStream), в который будет передан результат генерации;
  • дата документа (documentDate), используемая для выбора версии шаблона, которая активна на текущую дату;
  • параметры для заполнения документа (documentParams);
  • требуемый формат генерируемого документа (format).
Пример запроса на генерацию документа по дате:
Раскрыть type=txt
ByteArrayOutputStream 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

Запрос на создание документа по коду версии (createByVersionCode)

Запрос на создание документа по шаблону с заданным кодом и его версии с переданным кодом.
Параметры для генерации документа:
  • код шаблона (templateCode);
  • код версии шаблона (versionCode);
  • поток (resultingStream), в который будет передан результат генерации;
  • параметры для заполнения документа (documentParams);
  • требуемый формат генерируемого документа (format).
Пример запроса на генерацию документа по коду версии:
Раскрыть type=txt
ByteArrayOutputStream 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

Запрос на создание документа по идентификатору версии (createByVersionUid)

Запрос на создание документа по шаблону с переданным уникальным идентификатором версии. Уникальный идентификатор версии шаблона возвращается в результате создания документа и может быть использован для гарантированного повторного создания документа по такому же шаблону и версии, даже в случае, если версия была заменена.
Параметры для генерации документа:
  • уникальный идентификатор версии (versionUid);
  • поток (resultingStream), в который будет передан результат генерации;
  • параметры для заполнения документа (documentParams);
  • требуемый формат генерируемого документа (format).
Пример запроса на генерацию документа по коду версии:
Раскрыть type=txt
ByteArrayOutputStream 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>

Конфигурирование библиотеки

Для работы библиотеки генерации печатных форм требуется обязательное наличие нижеперечисленных параметров:
  • rnresourceName (идентификатор ресурса проекта);
  • dcgn.template-provider-url — URL до провайдера шаблонов.
Помимо этого, есть и опциональные параметры:
  • dcgn.filling-template-timeoutInMillis — максимально допустимое время наполнения шаблона данными. Время получения шаблона из Реестра шаблонов не учитывается. Значение по умолчанию — 60000;
  • Для оптимизации повторных запросов на генерацию документов по одному и тому же шаблону библиотека генерации кеширует шаблон, полученный из провайдера шаблонов. Доступны следующие настройки для кеша:
    • dcgn.cache-max-size — максимальный размер кеша. Значение по умолчанию — 100;
    • dcgn.cache-evict-timeout-seconds — период времени с момента получения шаблона из Реестра шаблонов, после которого шаблон вытесняется из кеша. Значение по умолчанию — 900.
Пример конфигурирования через application.yaml:
Раскрыть type=yaml
rn: default
 
dcgn:
 template-provider-url: http://localhost:8090/template-provider
 filling-template-timeoutInMillis: 60000
 cache-max-size: 100
 cache-evict-timeout-seconds: 900

Демопримеры

В демопримерах реализованы стандартные сценарии, демонстрирующие работу отдельных сервисов Платформы ГосТех. Отправка тестовых запросов в демопримерах позволит вам ознакомиться с функциями того или иного сервиса. Доступные демопримеры и описания реализованной в них функциональности представлены ниже.
Генерация печатной формы
Генерация печатных форм с заданным форматом и набором полей, загрузка готовых шаблонов
Предыдущий раздел
Создание шаблонов
Следующий раздел
Печатные формы
Была ли страница полезной?