Конфигурирование интеграции Spin

Этот раздел перенесён из документации Camunda 7 и в дальнейшем будет доработан с учётом особенностей OpenBPM Engine

Чтобы использовать Spin с движком обработки процессов, необходимо следующее:

  1. Библиотеки Spin должны быть в classpath у движка

  2. Плагин движка управления процессами 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 атаки. Значение по умолчанию: false

enableSecureXmlProcessing

Включает/выключает безопасную обработку XML документа. Значение по умолчанию: true

Координаты 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