Часть 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).