Часть 8: Локальный запуск DataSpace#

Имеется возможность поднять сервис dataspace-core с соответствующей проекту моделью (model.xml) локально непосредственно на компьютере разработчика. Для этого после успешной сборки проекта из папки /model-local-test/local-run/ необходимо запустить скрипт (например, с помощью GitBash):

./local-run.sh

После выполнения скрипта по адресу http://localhost:8080 будет запущен сервис dataspace-core с H2 in memory. В данном скрипте используется профиль local-h2-profile, который содержит базовый профиль настроек для локального запуска.

Для запуска сервиса dataspace-core с подключением к внешней БД PostgreSQL/Pangolin необходимо запустить скрипт (например, с помощью GitBash), предварительно указав в нем адрес подключения к БД, логин/пароль и имя схемы:

./local-run-ext-db.sh

При запуске скрипта будет использоваться тот же профиль local-h2-profile, но будут переопределены настройки подключения к БД с H2 на PostgreSQL/Pangolin.

Описание параметров из скрипта ./local-run-ext-db.sh:

  • spring.jpa.properties.hibernate.dialect и spring.jpa.database-platform — указывается диалект БД, в обоих параметрах должен совпадать. Например, org.hibernate.dialect.PostgreSQL10Dialect — для БД Pangolin (PSQL) и PostgreSQL или org.hibernate.dialect.Oracle12cDialect — для БД Oracle;

  • spring.datasource.driver-class-name — драйвер БД, например, org.postgresql.Driver — для БД Pangolin (PSQL) и PostgreSQL или oracle.jdbc.OracleDriver — для БД Oracle;

  • spring.datasource.url — адрес подключения к БД, например, jdbc:postgresql://адрес БД:порт/имя БД — для БД Pangolin (PSQL) и PostgreSQL или jdbc:oracle:thin:@адрес БД:порт:имя БД — для БД Oracle;

  • spring.datasource.username и spring.datasource.password — логин и пароль доступа к БД соответственно;

  • spring.liquibase.parameters.defaultSchemaName — имя схемы БД;

  • spring.liquibase.enabled — необходимость выполнения liquibase-скриптов на БД, если были изменения модели данных. Принимает значение true (скрипты будут выполняться) или false (скрипты выполняться не будут);

  • spring.liquibase.change-log — путь к скриптам liquibase, обычно указывается значение classpath:db/changelog.xml. Можно не указывать, если параметр spring.liquibase.enabled имеет значение false;

  • spring.liquibase.parameters.tablespace_t, spring.liquibase.parameters.tablespace_i, spring.liquibase.parameters.tablespace_l — название табличных пространств для таблиц, индексов и LOB, обычно используется для БД Oracle. Можно не указывать, если параметр spring.liquibase.enabled имеет значение false;

  • server.port — порт, на котором будет доступен запускаемый сервис dataspace-core, по умолчанию — 8080;

  • dataspace.replication.max-aggregates-per-transaction — расширение транзакционной границы за пределы экземпляра агрегата (см. раздел «Транзакционная граница пакета» документа «Руководство прикладного разработчика»);

  • dataspace.monitoring.enabled — включение метрик мониторинга, принимает значение true (включить) или false (не включать). Подробнее см. в документе DataSpace Monitoring;

  • dataspace.monitoring.jvm.enabled — включение/выключение метрик JVM, принимает значение true (включить) или false (не включать). Подробное описание см. в документе DataSpace Monitoring;

  • dataspace.monitoring.cgroup.enabled — включение/выключение системных метрик, принимает значение true (включить) или false (не включать). Подробное описание см. в документе DataSpace Monitoring;

  • standin.cloud.client.zoneId и dataspace.cci.clusterId — необязательные параметры, указываются в случае наличия интеграции с компонентом Прикладной журнал (APLJ). Подробное описание см. в документе Руководство прикладного разработчика.

Работоспособность, например, можно проверить при помощи графического GraphQL-интерфейса в веб-браузере, доступного по адресу http://localhost:8080/graphiql.

Более детально про возможности GraphQL-запросов DataSpace см. в документе «Протокол GraphQL».

Внимание!

После успешного локального запуска сервиса можно «проигрывать» демонстрационные тесты без необходимости длительного автоматического запуска сервиса dataspace-core «под капотом» теста. Для этого необходимо в файле model-local-test/src/test/java/ru/test/BaseTest.java закомментировать аннотацию @ExtendWith({JUnit5DataSpaceCoreLocalRunnerExtension.class}) и для атрибута servicePort указать соответствующий порт ранее поднятого локально сервиса (по умолчанию: 8080).