Обновление Enterprise с 1.x на 2.x

Страница описывает, как перевести проект с OpenBPM Engine Enterprise 1.1 на 2.0. Полный список изменений релиза и правки, которые могут понадобиться в коде, собраны на странице Релиз 2.0. Если проект работает на Community-редакции, сначала см. Переход с Community на Enterprise.

Схема базы данных в 2.0 не менялась, SQL-скрипты выполнять не нужно. Основной объём работы — перевод приложения на Spring Boot 4; сам движок обратно совместим.

Перед обновлением:

  • Переведите проект на последнюю версию линейки 1.1 и убедитесь, что он собирается и проходит тесты. Проект на Camunda 7 сначала переведите на OpenBPM Engine по инструкции Миграция с Camunda 7 на OpenBPM Engine.

  • Проверьте версию Java: нужна 17 или новее.

  • Проверьте версию базы данных. В 2.0 минимальные версии — PostgreSQL 14, MariaDB 10.11, MySQL 8.4, Oracle 21, SQL Server 2022.

  • Сделайте резервную копию базы данных.

Версия артефактов

Артефакты Enterprise публикуются в репозиторий premium с суффиксом -ee. Координаты в 2.0 не менялись — достаточно заменить версию на 2.0.0-ee у всех зависимостей io.openbpm.*.

repositories {
    mavenCentral()
    maven {
        url = 'https://nexus.openbpm.ru/repository/premium'
        credentials {
            username = findProperty('openbpmRepoUser')
            password = findProperty('openbpmRepoPassword')
        }
    }
}

Для Maven:

<repository>
  <id>openbpm-premium</id>
  <url>https://nexus.openbpm.ru/repository/premium</url>
</repository>

Если версии задаются через BOM, обновите io.openbpm.bpm:openbpm-engine-bom до 2.0.0-ee. Учётные данные для репозитория входят в подписку, см. Лицензирование.

Код и тесты

Публичный API движка не менялся. Проверьте, не используются ли в проекте классы, которые изменились в 2.0: HistoryLevelSetupCommand, ExceptionHandlerHelper, StartProcessVariableScope, VariableInstanceEntityFactory, SimpleVariableInstanceFactory, SpinScriptEnv. Что с ними делать — в разделе Критические изменения.

Тесты на JUnit 5 с классификатором junit5 продолжают работать. Чтобы перейти на JUnit 6, замените классификатор на junit6; импорты менять не нужно — классы расширений остались в пакете io.openbpm.bpm.engine.test.junit5.

Spring Boot

Стартеры OpenBPM Engine 2.0 требуют Spring Boot 4.0. Приложение на Spring Boot 3 с ними не запустится.

  1. Поднимите версию Spring Boot до 4.0.8: плагин org.springframework.boot в Gradle или spring-boot-starter-parent в Maven. Плагин io.spring.dependency-management обновите до 1.1.7.

  2. Обновите систему сборки: Spring Boot 4 требует Gradle 8.14 или новее, Maven — 3.6.3 или новее.

    ./gradlew wrapper --gradle-version 9.5.1
  3. Замените версию стартеров OpenBPM Engine:

    implementation "io.openbpm.bpm.springboot:openbpm-engine-bpm-spring-boot-starter:2.0.0-ee"
    implementation "io.openbpm.bpm.springboot:openbpm-engine-bpm-spring-boot-starter-rest:2.0.0-ee"
    implementation "io.openbpm.bpm.springboot:openbpm-engine-bpm-spring-boot-starter-webapp:2.0.0-ee"
    implementation "io.openbpm.spin:openbpm-engine-spin-dataformat-all:2.0.0-ee"
  4. Адаптируйте приложение к Spring Boot 4: переименованные стартеры, Jackson 3, @MockitoBean, Spring Security 7. Типичные правки перечислены в разделе Общие замечания по миграции на Spring Boot 4. Свойства openbpm.bpm.* не менялись.

  5. Соберите и запустите приложение. Признаки успешного старта: в логе есть строка ENGINE-14014 Starting up the JobExecutor, запрос GET /engine-rest/process-definition возвращает задеплоенные процессы, веб-приложения открываются по прежнему адресу /openbpm-engine/app/.

При файловой H2 (jdbc:h2:file:…) во время остановки приложения может появиться ENGINE-18001 Could not collect and log metrics: база закрывается вместе с JVM раньше, чем движок записывает метрики. Добавьте к URL параметр ;DB_CLOSE_ON_EXIT=FALSE.

OpenBPM Engine Run

  1. Распакуйте дистрибутив 2.0 рядом с текущей установкой.

  2. Скопируйте в него configuration/default.yml и configuration/production.yml из текущей установки — свойства openbpm.bpm.* не менялись.

  3. Если в профиле production использовался SSL, задайте параметры server.ssl.* явно: в 2.0 он по умолчанию выключен.

  4. Плагины и библиотеки из configuration/userlib пересоберите под Spring Boot 4 и Jakarta EE 11.

  5. Остановите старую установку и запустите новую.

Tomcat

Дистрибутив 2.0 основан на Tomcat 11.0.25. В 1.1 тоже использовался Tomcat 11, менять версию контейнера не нужно.

  1. Установите дистрибутив 2.0 (Установка готового дистрибутива). При ручной установке по Установка полного дистрибутива на сервер приложений Tomcat вручную сверьте набор библиотек в $CATALINA_HOME/lib с дистрибутивом: в 2.0 изменились зависимости REST-слоя.

  2. Удалите из $CATALINA_HOME/lib JAR-файлы openbpm-engine-* предыдущей версии.

  3. Пересоберите Process Applications (WAR) с зависимостями 2.0. Если в WAR входит weld-servlet-shaded, нужна версия 6.0.4.Final или новее.

Файл bpm-platform.xml менять не требуется.

Quarkus

Расширение 2.0 собрано под Quarkus 3.33 LTS; в 1.1 использовался Quarkus 3.30.

  1. Обновите quarkus.platform.version до 3.33.x по руководствам по миграции Quarkus.

  2. Обновите версию io.openbpm.bpm.quarkus:openbpm-engine-bpm-quarkus-engine до 2.0.0-ee.