Конфигурирование интеграции Spin
|
Этот раздел перенесён из документации Camunda 7 и в дальнейшем будет доработан с учётом особенностей OpenBPM Engine |
Чтобы использовать Spin с движком обработки процессов, необходимо следующее:
-
Библиотеки Spin должны быть в classpath у движка
-
Плагин движка управления процессами Spin должен быть зарегистрирован в движке
Следующие разделы более подробно освещают интеграцию Spin с движком управления процессами. Обращаем ваше внимание, что, когда вы используете предварительно собранный дистрибутив Camunda, Spin уже интегрирован в него.
Артефакты
Существуют следующие три типа Spin-артефактов.
camunda-spin-core
camunda-spin-core — это jar-файл, содержащий только классы ядра Spin. Они могут комбинироваться с артефактами одиночных форматов данных camunda-spin-dataformat-json-jackson и camunda-spin-dataformat-xml-dom (camunda-spin-dataformat-xml-dom-jakarta для поддержки Jakarta XML Binding 4.0), который реализует обработку JSON и XML. Эти артефакты транзитивно подтягивают нужные им библиотеки. Например, camunda-spin-dataformat-json-jackson содержит зависимость от jackson-databind.
camunda-spin-dataformat-all
camunda-spin-dataformat-all — это самодостаточный (fat) jar-файл, содержащий camunda-spin-core, camunda-spin-dataformat-json-jackson и camunda-spin-dataformat-xml-dom вместе со всеми их зависимостями.
Зависимости перепаковываются (shaded) в пространство имён пакета spinjar.
Отметим, что перенос пакета означает, что вы не можете проводить разработку с первоначальнами пространствами имен. Пример: camunda-spin-dataformat-json-jackson использует jackson-databind для сериализации и десериализации объектов. Распространенный сценарий использования состоит в декларации аннотаций Jackson в кастомизированных классах для тонкой настройки обработки JSON. При переносе зависимостей аннотации внутри пространства имен com.fasterxml.jackson не будут распознаны Spin. В этом случае попробуйте использовать camunda-spin-core. Не забываем о возможных побочных эффектах такого использования, описанных в разделе Сценарии использования интеграции.
camunda-engine-plugin-spin
camunda-engine-plugin-spin — это плагин движка обработки процессов, который интегрирует Spin с движком обработки процессов. Например, он регистрирует сериализаторы переменных, который позволяют движку хранить объекты Java как JSON.
Конфигурация свойств в плагине Spin
The Spin process engine plugin provides the following configuration options:
| Свойство | Описание |
|---|---|
enableXxeProcessing |
Включает/выключает обработку External XML Entities (XXE) в XML документе. Отключите, чтобы предотвратить
XXE атаки. Значение по умолчанию: |
enableSecureXmlProcessing |
Включает/выключает безопасную обработку XML документа.
Значение по умолчанию: |
Координаты Maven
Импортируйте Camunda BOM, чтобы гарантировать, что вы используете правильную версию Spin, которая была протестирована для работы с вашей версией движка обработки процессов.
Все артефакты Spin имеют group id io.openbpm.spin, поэтому, чтобы импортировать camunda-spin-core, мы можем написать:
<dependency>
<groupId>io.openbpm.spin</groupId>
<artifactId>camunda-spin-core</artifactId>
<!-- The version is omitted here, because it is managed via the BOM.
Declare a concrete version if you do not use the BOM -->
</dependency>
Сценарии использования интеграции
В зависимости от настроек на приложении и на движке обработки процессов, рекомендуется использовать либо camunda-engine-plugin-spin и camunda-spin-core (плюс индивидуальные форматы данных), либо camunda-engine-plugin-spin и camunda-spin-dataformat-all. Следующие разделы объясняют, что и когда использовать для большинства распространенных сценариев использования.
Встроенный движок обработки процессов
Если ваше приложение само управляет своим движком обработки процессов, рекомендованным подходом является использование camunda-engine-plugin-spin с camunda-spin-core. Задекларируйте зависимости в скоупе compile, чтобы библиотеки Spin и их зависимости добавлялись к пакету вашего приложению при сборке. Сконфигурируйте io.openbpm.spin.plugin.impl.SpinProcessEnginePlugin как движок обработки процессов в соответствии с документацией плагина движка обработки процессов.
Приложения с Camunda Spring Boot Starter
Добавьте зависимости camunda-engine-plugin-spin и camunda-spin-core (вместе с camunda-spin-dataformat-json-jackson и camunda-spin-dataformat-xml-dom, если необходимо) к вашему приложению. Если вам необходимо использовать Jakarta XML Binding 4.0 (Например, Springboot версии 3.x.x), используйте camunda-spin-dataformat-xml-dom-jakarta вместо camunda-spin-dataformat-xml-dom.
Плагин движка обработки процессов Spin будет автоматически зарегистрирован в движке обработки процессов.
Разделенный движок обработки процессов
Если в используете разделенный движок управления процессами, Spin, как правило, бывает установлен как разделенная библиотека на сервере приложений. См. руководство по установке для вашего сервера приложений, чтобы получить информацию о настройке Spin с разделенным движком. When using a pre-built distribution of Camunda 7, Spin is already pre-configured.
В зависимости от типа сервера приложений, camunda-engine-plugin-spin должен использоваться либо с camunda-spin-core, либо с camunda-spin-dataformat-all. В предварительно собранных дистрибутивах используются следующие артефакты:
-
Tomcat:
camunda-spin-dataformat-allпоставляется в пути разделенной библиотеки Tomcat. Использованиеcamunda-spin-dataformat-allпредотвращает загрязнение classpath зависимостями Spin. Например, это гарантирует, что приложения не будут обязаны использовать версию Jackson, входящую в Spin. -
Wildfly:
camunda-spin-core(вместе сcamunda-spin-dataformat-json-jacksonиcamunda-spin-dataformat-xml-dom) устанавливаются как модули. Благодаря системе модулей от Wildfly, загрязнение classpath не будет проблемой. Каждый раз, когда происходит деплоймент приложения с процессами, оно получает неявную модульную зависимостьcamunda-spin-core.
Если вы хотите программировать с использованием Spin API в вашем приложении с процессами, вам надо задекларировать зависимости, относящиеся к Spin, в вашем приложении. Поскольку Spin предоставляетс сервером приложений, важно помнить о следующем:
-
Убедитесь в том, что зависимости установлены в скоуп
provided. Таким образом вы избежите попадания этих зависимостей в пакет вашего приложения, что может привести к проблеме загрузки классов в рантайме. -
Убедитесь в том, что зависимости указывают на те же артефакты, которые предоставляет сервер приложений, то есть либо
camunda-spin-core, либоcamunda-spin-dataformat-all.
Лицензия и атрибуция
Эта документация была создана на базе материала "Camunda 7 Docs" от Camunda, находится под лицензией Creative Commons Attribution-ShareAlike 3.0 Unported License .
Оригинал документации: https://docs.camunda.org