Дизайн моделювання зовнішніх інтеграційних розширень на інші реєстри

1. Призначення

При моделюванні та виконанні бізнес-процесів необхідно мати можливість читати дані з зовнішніх реєстрів через інтеграцію з системою електронної взаємодії державних електронних інформаційних ресурсів "Трембіта".

Сценарії взаємодії
  • Користувач стартує бізнес-процес, далі відображається форма задачі, яка попередньо заповнена бізнес-даними з зовнішнього реєстру.

  • Користувач стартує бізнес-процес, який використовує дані з іншого реєстру для оркестрації самого процесу та виконання системних функцій.

  • Користувач стартує бізнес-процес, який використовує дані з іншого реєстру для валідації введених даних.

trembita integration context deagram

2. Базові принципи реалізації вимог

  • Мати можливість читати дані з зовнішніх реєстрів через інтеграцію з системою електронної взаємодії державних електронних інформаційних ресурсів "Трембіта".

  • Використання частини бізнес-даних з зовнішніх реєстрів для оркестрації бізнес-процесу - отримувати та маркувати змінні як "transient".

  • Використовувати делегати розширення для маскування деталей взаємодії з зовнішніми реєстрами.

4. Діаграма класів

Діаграма класів на прикладі інтеграції з ЄДР.

soap-connectors

Генерація класів контракту на базі WSDL файлів відбувається за допомогою плагіна:

<plugin>
        <groupId>org.jvnet.jaxb2.maven2</groupId>
        <artifactId>maven-jaxb2-plugin</artifactId>
        <version>${plugin.version}</version>
        <executions>
          <execution>
            <goals>
              <goal>generate</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <schemaLanguage>WSDL</schemaLanguage>
          <generatePackage>${generate.package}</generatePackage>
          <schemaDirectory>${project.basedir}/src/main/resources/wsdl</schemaDirectory>
          <schemaIncludes>
            <include>edp-registry.wsdl</include>
            <include>bar-registry.wsdl</include>
            ....
          </schemaIncludes>
        </configuration>
</plugin>
Якщо при пасрсингу та генерації класів виникла помилка конфлікту імен, можна додати як русурс визначення зовнішнього прив’язувального(binding) XML, приклад(edr-binding.xjb):
<jaxb:bindings
  xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
  xmlns:s="http://www.w3.org/2001/XMLSchema"
  version="1.0">

  <jaxb:bindings schemaLocation="file:edr-registry.wsdl" node=".//s:element[@name='<your-filed-name>']">
    <jaxb:factoryMethod name="_<your-filed-name>"/>
  </jaxb:bindings>

</jaxb:bindings>
WSDL файли будуть знаходитися у VCS сервіса як ресурси:
${project.basedir}/src/main/resources/wsdl

5. Приклад делегата

Для кожного реєстру буде створено типові делегати. Приклад використаня делегата:

soap integration delegate example

6. Діаграма послідовності

Приклад інтеграції при виконанні задачі бізнес процесу, який змодельовано таким чином, що при оркестрації процесу необхідно перевірити дані з іншого реєстру:

completeTaskIntegrationWithTrembita

7. Необхідні параметри

Параметр Тип Необхідність Опис

trembita-exchange-gateway.registries.<registry-name>.url

string

required

Адреса до ШБО

trembita-exchange-gateway.registries.<registry-name>.userId

string

required

Ідентифікатор особи користувача, за ініціативою якого сформовано повідомлення-запит

trembita-exchange-gateway.registries.<registry-name>.protocol-version

string

required

Внутрішня версія протоколу обміну

trembita-exchange-gateway.registries.<registry-name>.service.x-road-instance

string

required

Ідентифікатор середовища СЕВДЕІР

trembita-exchange-gateway.registries.<registry-name>.service.member-class

string

required

Ідентифікатор класу учасника

trembita-exchange-gateway.registries.<registry-name>.service.member-code

string

required

Ідентифікатор учасника СЕВДЕІР

trembita-exchange-gateway.registries.<registry-name>.service.subsystem-code

string

required

Ідентифікатор інформаційної системи (підсистеми), яку представляє веб-сервіс, що отримує запит

trembita-exchange-gateway.registries.<registry-name>.client.x-road-instance

string

required

Ідентифікатор середовища СЕВДЕІР

trembita-exchange-gateway.registries.<registry-name>.client.member-class

string

required

Ідентифікатор класу учасника

trembita-exchange-gateway.registries.<registry-name>.client.member-code

string

required

Ідентифікатор учасника СЕВДЕІР

trembita-exchange-gateway.registries.<registry-name>.client.subsystem-code

string

required

Ідентифікатор інформаційної системи (підсистеми), яку представляє веб-клієнт, що виконує запит

<registry-name> - назва реєстру, яка буде використовуватися spring для ін’єкції параметрів до клієнта реєстру. Наприклад: edr-registry

Приклад конфігурації в application.yml сервіса:

trembita-exchange-gateway:
  registries:
    edr-registry:
      trembita-url: http://localhost:8080
      user-id: MDTUDDM
      protocol-version: 4.0
      authorization-token: token #custom field
      client:
        x-road-instance: CLIENT-TEST
        member-class: GOV
        member-code: 666777666
        subsystem-code: GOV_test
      service:
        x-road-instance: EDR-TEST
        member-class: GOV
        member-code: 11115888
        subsystem-code: EDR_test
      bar-registry:
        ....