Релиз 2.0
Релиз Enterprise-редакции: OpenBPM Engine Enterprise 2.0.0 (2.0.0-ee) и OpenBPM Control Enterprise 2.0.0.
Продукты выходят одновременно и обновляются вместе. В отличие от 1.1,
этот выпуск не соответствует ни одному Community-релизу: часть изменений войдёт в следующий релиз платформы.
Оба продукта переведены на Spring Boot 4. Для Control это означает Java 21, для Engine — обязательное обновление приложений на Spring Boot до версии 4.0.
OpenBPM Engine 2.0.0
OpenBPM Engine 2.0 требует Java 17 или новее. Движок тестируется на Java 17, 21 и 25.
Приложения на Spring Boot должны быть переведены на Spring Boot 4.0 — стартеры OpenBPM Engine 2.0 со Spring Boot 3.x не работают. Сам движок при этом обратно совместим: публичный API не менялся, схема базы данных осталась версии 7.24, REST API — прежний. Если движок используется через Spring Boot, основная часть работы при обновлении — это перевод приложения на Spring Boot 4, а не изменения в коде, связанном с OpenBPM Engine.
Обновление проекта сводится к следующему:
-
Замените версию артефактов
io.openbpm.*на2.0.0-ee. Координаты артефактов не менялись. -
В проекте на Spring Boot поднимите версию Spring Boot до 4.0.x, Gradle до 8.14+ (или 9.x), Maven — до 3.6.3+.
-
Пройдите по списку критических изменений и поправьте код, если он использует затронутые классы.
-
Обновите тесты: артефакт
openbpm-engineс классификаторомjunit6для JUnit 6 (классификаторjunit5сохранён, старые тесты работают).
Пошаговая инструкция для каждого дистрибутива — в разделе Обновление Enterprise с 1.x на 2.x.
Обновленные зависимости
Основные зависимости обновлены:
-
Spring Boot 4.0 (собрано с 4.0.8), Spring Framework 7.0
-
Jakarta EE 11
-
Quarkus 3.33 LTS
-
Tomcat 11.0.25
-
JUnit 6.0
-
Jersey 4.0 (Jakarta REST 4.0)
-
GraalVM JavaScript 25.0.4, Groovy 5.0.8
-
FEEL Scala 1.21
Поддержка OSGi удалена: JAR-файлы больше не содержат OSGi-манифестов.
Минимальные версии баз данных: PostgreSQL 14, MariaDB 10.11, MySQL 8.4, Oracle 21, SQL Server 2022. Для PostgreSQL 13 и MariaDB 10.6 поддержка прекращена.
Общие замечания по миграции на Spring Boot 4
Spring Boot 4 сам по себе требует правок в приложении. Чаще всего встречается следующее:
-
Стартер
spring-boot-starter-webпереименован вspring-boot-starter-webmvc.spring-boot-starter-testтеперь содержит только JUnit 6, AssertJ и Mockito; прежний полный набор — вspring-boot-starter-test-classic. -
JSON-библиотека Spring по умолчанию — Jackson 3. Переименуйте пакеты в собственных контроллерах и сериализаторах:
com.fasterxml.jackson.databind→tools.jackson.databind,ObjectMapper→JsonMapper,@JsonComponent→@JacksonComponent. REST API движка (/engine-rest) остаётся на Jackson 2 и не затрагивается. -
@MockBeanи@SpyBeanудалены — используйте@MockitoBeanи@MockitoSpyBean. -
Spring Security 7: удалены не-lambda методы конфигурации
HttpSecurity. Стартерopenbpm-engine-bpm-spring-boot-starter-securityуже переведён на новый API; править нужно только собственную конфигурацию безопасности.
Удалённые и переименованные свойства Spring Boot находит spring-boot-properties-migrator —
подключите его на время миграции. Большую часть замен выполняет рецепт OpenRewrite
org.openrewrite.java.spring.boot4.UpgradeSpringBoot_4_0.
См. также:
Новая и улучшенная функциональность
Изоляция сессионной cookie веб-приложений
Если Cockpit, Tasklist и Admin работают в одном приложении с другой аутентификацией — например,
с собственным логином на Spring Security, — сессионные cookie обоих механизмов выставлялись с Path=/
и при параллельных запросах перезаписывали друг друга. Пользователя могло выбросить из веб-приложений
после запроса к другой части системы.
Теперь это решается одним свойством:
openbpm.bpm.webapp.session-cookie-path-enforcement=true
При включении регистрируется фильтр SessionCookiePathFilter, который переписывает Path сессионной
cookie на путь веб-приложений: server.servlet.context-path + openbpm.bpm.webapp.application-path,
по умолчанию /openbpm-engine. Имя cookie берётся из server.servlet.session.cookie.name или из
конфигурации контейнера. По умолчанию свойство выключено, поведение прежних версий не меняется.
Health SPI и endpoint /health
В модуле openbpm-engine появился интерфейс io.openbpm.bpm.engine.health.HealthService,
не зависящий от рантайма. Реализация по умолчанию проверяет соединение с базой данных через
DataSource и состояние Job Executor; результат возвращается как HealthResult.
Через FrontendHealthContributor в проверку добавляется доступность веб-приложений.
В Spring Boot сервис создаётся автоконфигурацией, и индикатор Actuator ProcessEngineHealthIndicator
теперь опирается на него. В OpenBPM Engine Run добавлен endpoint /health, по умолчанию выключенный:
openbpm.run.health.rest-endpoint.enabled=true
SPI для подмены конфигурации движка
Раньше, чтобы подставить собственную реализацию ProcessEngineConfiguration, приходилось наследоваться
от классов из пакетов .impl.. Теперь для этого есть два интерфейса, регистрируемых через ServiceLoader:
-
io.openbpm.bpm.engine.spi.ProcessEngineConfigurationFactory -
io.openbpm.bpm.dmn.engine.spi.DmnEngineConfigurationFactory
Реализация объявляется в META-INF/services/io.openbpm.bpm.engine.spi.ProcessEngineConfigurationFactory.
JUnit 6
Тесты движка переведены на JUnit 6. Артефакт io.openbpm.bpm:openbpm-engine публикуется
с классификатором junit6; классификаторы junit5 и junit4 сохранены. Классы расширений
остались в пакете io.openbpm.bpm.engine.test.junit5 и работают с обеими версиями JUnit,
так что менять импорты в тестах не нужно.
<dependency>
<groupId>io.openbpm.bpm</groupId>
<artifactId>openbpm-engine</artifactId>
<version>2.0.0-ee</version>
<classifier>junit6</classifier>
<scope>test</scope>
</dependency>
Quarkus 3.33 LTS
Расширение для Quarkus собрано под Quarkus 3.33 LTS. Дальнейшие релизы 2.x будут оставаться на этой ветке, так что обновлять платформу Quarkus при каждом патч-релизе движка не придётся.
Исправление утечки памяти в JavaScript-скриптах
При выполнении Script Task на JavaScript движок GraalJS накапливал polyglot-контексты, и под длительной
нагрузкой процесс падал с OutOfMemoryError. Особенно это проявлялось в контейнерах с ограничением
по памяти. В 2.0 контексты освобождаются корректно.
Критические изменения
Spring Boot 4
Стартеры io.openbpm.bpm.springboot:* версии 2.0.x требуют Spring Boot 4.0.x. Обновите
плагин или parent Spring Boot до 4.0.8 и выполните правки из раздела
Общие замечания по миграции на Spring Boot 4.
OSGi
Поддержка OSGi удалена. Если приложение развёрнуто в Apache Karaf или другом OSGi-контейнере, оно останется на 1.1.x. Для перехода на 2.x переведите его на Spring Boot, OpenBPM Engine Run, Tomcat или Quarkus.
HistoryLevelSetupCommand
Класс io.openbpm.bpm.engine.impl.HistoryLevelSetupCommand стал интерфейсом. Реализация по умолчанию —
DefaultHistoryLevelSetupCommand, вспомогательные методы вынесены в HistoryLevelUtils.
// раньше
config.setHistoryLevelCommand(new HistoryLevelSetupCommand());
// теперь
config.setHistoryLevelCommand(new DefaultHistoryLevelSetupCommand());
Если вы переопределяли ProcessEngineConfiguration.getHistoryLevelCommand(), тип возвращаемого
значения — интерфейс HistoryLevelSetupCommand.
ExceptionHandlerHelper
У класса io.openbpm.bpm.engine.rest.exception.ExceptionHandlerHelper удалён синглтон,
методы стали статическими. Затрагивает собственные ExceptionMapper в расширениях REST API.
// раньше
Response response = ExceptionHandlerHelper.getInstance().getResponse(exception);
// теперь
Response response = ExceptionHandlerHelper.getResponse(exception);
Аналогично удалены StartProcessVariableScope.getInstance(), VariableInstanceEntityFactory.INSTANCE
и SimpleVariableInstanceFactory.INSTANCE — создавайте экземпляры через конструктор. Все эти классы
лежат в пакетах .impl. и не входят в публичный API, поэтому изменение не считается нарушением совместимости,
но код, который их использует, придётся поправить.
Группа администраторов
Мастер первоначальной настройки Admin и генератор демо-данных теперь создают системную группу с именем
openbpm engine BPM Administrators. Идентификатор группы (openbpm-engine-admin) не менялся,
существующие записи в базе данных не затрагиваются. Если ваши скрипты или тесты проверяют имя группы
по строке, обновите её.
Исправления
-
Из дистрибутивов исключён
jackson-module-scala; если приложение использовало его транзитивно, добавьте зависимость явно. -
Netty закреплён на версии не ниже 4.2.16, Jackson BOM — не ниже 3.1.5 (устранены CVE-2026-56745 и CVE-2026-59889).
-
Устранён
NullPointerExceptionпри удалении вложений задачи. -
REST API корректно отвечает, если job очистки истории отсутствует.
-
В MDC пишется ключ определения процесса из базы данных, а не из кеша парсинга.
-
Spring Boot: проверяется целевой адрес редиректа при обращении по URL с завершающим
/. -
Формы: корректно обрабатываются поля типа
date. -
Веб-приложения распознают дополнительные имена файлов лицензий и собираются в production-режиме.
-
Исправлено описание OpenAPI для
PUT /external-task/{id}/retriesиPOST /external-task/{id}/lock.
OpenBPM Control 2.0.0
OpenBPM Control 2.0 требует Java 21: приложение переведено на Jmix 3.0 и Spring Boot 4. Перед обновлением установите JDK 21 на сервер, где работает Control. Порядок установки и обновления — в разделе Установка.
Enterprise-функции теперь включаются лицензионным ключом. Без лицензии Control работает в объёме Community-редакции: платные разделы в меню отмечены значком замка. Как установить ключ — в разделе Лицензирование.
Новая и улучшенная функциональность
AI-ассистент
В Control появился ассистент на базе LLM. Он делает сводку по открытым инцидентам, объясняет, как устроен развёрнутый процесс или DMN-решение, помогает понять, почему экземпляр процесса остановился, и отвечает на вопросы о данных, доступных в Control. Ассистент только читает данные и ничего не меняет в движке. Подробнее — AI-ассистент.
История изменений переменных процесса
На вкладке История → Переменные экземпляра процесса раньше было видно только последнее значение
каждой переменной. Теперь можно посмотреть каждое изменение: когда оно произошло, в какой активности
и какое значение было записано. Анализ работает в две стороны — выбрать активность на диаграмме и увидеть,
какие переменные она изменила, или выбрать переменную и увидеть все её изменения на диаграмме.
Для этого движок должен вести историю на уровне full. Подробнее — История изменений переменных процесса.
Подключение к движку через OAuth2
К способам аутентификации при подключении BPM-движка — HTTP Basic и HTTP Headers — добавлен OAuth2. Control сам получает access token у сервера авторизации и подставляет его в запросы к REST API движка. Настройка подключения — в разделе Подключение к движку BPM.
Экспорт списков в Excel
На экранах списков, которые загружают данные из движка, добавлено действие Excel: процессы, экземпляры процессов, инциденты, пользовательские задачи, решения, экземпляры решений, deployments и batch-операции. Экспортируются строки текущей страницы таблицы.
Время движка в часовом поясе пользователя
Даты и время, полученные от движка, теперь показываются в часовом поясе пользователя Control, а не в поясе сервера движка.
Диаграмма экземпляра процесса
Переработана подсветка состояния на диаграмме экземпляра процесса. Элементы, через которые выполнение не проходило, по умолчанию отображаются приглушёнными; на активных элементах показывается не только число инцидентов, но и число экземпляров активности. Добавлены переключатели: показывать цвета элементов, заданные в BPMN XML (по умолчанию скрыты), и число завершённых экземпляров активности на элементах.
Исправления
-
Долгий старт приложения, если преднастроенный движок недоступен.
-
Изменение переменных процесса через диалог, открытый по ссылке.
-
Тип изменения в таблице истории переменных не совпадал со статусом в карточке.
-
Jobs и данные на вкладках Runtime не фильтровались по выбранной активности на экране экземпляра процесса.
-
Ошибка при проверке подключения (Test connection) с пустым URL движка.
-
Тепловая карта: значения не скрывались после смены версии процесса и после скрытия соединений.
-
Экспорт процесса без экземпляров выгружает только общие данные.
-
Кнопка экспорта скрывается вместе с компонентами, к которым относится.
-
Локализация сообщений; отсутствующий bundle для диалога активации лицензии.
-
На странице About текстовые ссылки заменены на ссылки-иконки.