Конфигурация Process Engine

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

Авто‑стартер использует механизм io.openbpm.bpm.engine.impl.cfg.ProcessEnginePlugin для конфигурации движка.

Конфигурация разделена на разделы. Эти разделы представлены маркерными интерфейсами:

  • io.openbpm.bpm.spring.boot.starter.configuration.CamundaProcessEngineConfiguration

  • io.openbpm.bpm.spring.boot.starter.configuration.CamundaDatasourceConfiguration

  • io.openbpm.bpm.spring.boot.starter.configuration.CamundaHistoryConfiguration

  • io.openbpm.bpm.spring.boot.starter.configuration.CamundaHistoryLevelAutoHandlingConfiguration

  • io.openbpm.bpm.spring.boot.starter.configuration.CamundaJobConfiguration

  • io.openbpm.bpm.spring.boot.starter.configuration.CamundaDeploymentConfiguration

  • io.openbpm.bpm.spring.boot.starter.configuration.CamundaAuthorizationConfiguration

  • io.openbpm.bpm.spring.boot.starter.configuration.CamundaFailedJobConfiguration

  • io.openbpm.bpm.spring.boot.starter.configuration.CamundaMetricsConfiguration

Конфигурации по умолчанию

Следующие конфигурации по умолчанию и лучшие практики предоставляются стартером и могут быть настроены или переопределены.

DefaultProcessEngineConfiguration

Задает имя process engine и автоматически добавляет все бины ProcessEnginePlugin в конфигурацию.

DefaultDatasourceConfiguration

Настраивает источник данных OpenBPM Engine и включает интеграцию транзакций. По умолчанию основные бины DataSource и PlatformTransactionManager подключаются к конфигурации process engine.

Если вы хотите настроить более одного источника данных и не хотите использовать @Primary для process engine, тогда вы можете создать отдельный источник данных с именем camundaBpmDataSource, который будет автоматически подключен к OpenBPM Engine.

@Bean
@Primary
@ConfigurationProperties(prefix="datasource.primary")
public DataSource primaryDataSource() {
  return DataSourceBuilder.create().build();
}

@Bean(name="camundaBpmDataSource")
@ConfigurationProperties(prefix="datasource.secondary")
public DataSource secondaryDataSource() {
  return DataSourceBuilder.create().build();
}

Если вы не хотите использовать @Primary менеджер транзакций, можно создать отдельный менеджер транзакций с именем camundaBpmTransactionManager, который будет подключен к источнику данных, используемому OpenBPM Engine (либо @Primary, либо camundaBpmDataSource):

@Bean
@Primary
public PlatformTransactionManager primaryTransactionManager() {
  return new JpaTransactionManager();
}

@Bean(name="camundaBpmTransactionManager")
public PlatformTransactionManager camundaTransactionManager(@Qualifier("camundaBpmDataSource") DataSource dataSource) {
  return new DataSourceTransactionManager(dataSource);
}

Подключенные бины источника данных и менеджера транзакций должны совпадать, т. е. убедитесь, что менеджер транзакций действительно управляет источником данных OpenBPM Engine. Если это не так, process engine будет использовать режим auto-commit для подключения к источнику данных, что может привести к несогласованности в базе данных.

DefaultHistoryConfiguration

Применяет конфигурацию истории к process engine. Если не настроено, используется уровень истории FULL. Если вы хотите использовать собственный HistoryEventHandler, вам нужно лишь предоставить бин, реализующий этот интерфейс.

@Bean
public HistoryEventHandler customHistoryEventHandler() {
  return new CustomHistoryEventHanlder();
}

DefaultHistoryLevelAutoHandlingConfiguration

Чтобы иметь больше контроля над обработкой, вы можете предоставить собственный

  • io.openbpm.bpm.spring.boot.starter.jdbc.HistoryLevelDeterminator с именем historyLevelDeterminator

Конфигурация по умолчанию применяется после всех других конфигураций по умолчанию с использованием механизма упорядочивания.

DefaultJobConfiguration

Применяет свойства выполнения джобов к process engine.

Чтобы иметь больше контроля над самим выполнением, вы можете предоставить собственные бины.

  • io.openbpm.bpm.engine.impl.jobexecutor.JobExecutor

  • org.springframework.core.task.TaskExecutor с именем camundaTaskExecutor

Исполнитель джобов не включается в конфигурации. Это делается после успешной загрузки spring‑контекста (см. io.openbpm.bpm.spring.boot.starter.runlistener).

DefaultDeploymentConfiguration

Если включен автодеплоймент (по умолчанию это так), все процессы, найденные в classpath, разворачиваются. Шаблон ресурсов можно изменить через свойства (см. свойства).

DefaultAuthorizationConfiguration

Применяет конфигурацию авторизации к process engine. Если не настроено, используются значения по умолчанию camunda (см. свойства).

Переопределение конфигурации по умолчанию

Предоставьте бин, реализующий один из маркерных интерфейсов. Например, чтобы настроить конфигурацию источника данных:

@Configuration
public class MyCamundaConfiguration {

	@Bean
	public static CamundaDatasourceConfiguration camundaDatasourceConfiguration() {
		return new MyCamundaDatasourceConfiguration();
	}

}

Добавление дополнительных конфигураций

Вам просто нужно предоставить один или несколько бинов, реализующих интерфейс io.openbpm.bpm.engine.impl.cfg.ProcessEnginePlugin (или унаследованных от io.openbpm.bpm.spring.boot.starter.configuration.impl.AbstractCamundaConfiguration). Конфигурации применяются в порядке, заданном механизмом упорядочивания Spring (аннотация @Order и интерфейс Ordered). Поэтому если вы хотите, чтобы ваша конфигурация применялась до конфигураций по умолчанию, добавьте аннотацию @Order(Ordering.DEFAULT_ORDER - 1) к вашему классу. Если вы хотите, чтобы ваша конфигурация применялась после конфигураций по умолчанию, добавьте аннотацию @Order(Ordering.DEFAULT_ORDER + 1) к вашему классу.

@Configuration
public class MyCamundaConfiguration {

	@Bean
	@Order(Ordering.DEFAULT_ORDER + 1)
	public static ProcessEnginePlugin myCustomConfiguration() {
		return new MyCustomConfiguration();
	}

}

Или, если у вас включен component scan:

@Component
@Order(Ordering.DEFAULT_ORDER + 1)
public class MyCustomConfiguration implements ProcessEnginePlugin {

	@Override
	public void preInit(ProcessEngineConfigurationImpl processEngineConfiguration) {
		//...
	}

	...

}

или

@Component
@Order(Ordering.DEFAULT_ORDER + 1)
public class MyCustomConfiguration extends AbstractCamundaConfiguration {

	@Override
	public void preInit(SpringProcessEngineConfiguration springProcessEngineConfiguration) {
		//...
	}

	...

}

Свойства OpenBPM Engine

В дополнение к способу переопределения свойств конфигурации process engine через бины, эти свойства также можно задавать через конфигурационный файл application.yaml. Инструкции по использованию можно найти в Spring Boot Starter Guide.

Доступные свойства следующие:

Префикс Имя свойства Описание Значение по умолчанию

General

openbpm.bpm

.enabled

Переключатель для отключения автоконфигурации OpenBPM Engine. Используется, чтобы исключить OpenBPM Engine в интеграционных тестах.

true

.process-engine-name

Имя process engine

Значение OpenBPM Engine по умолчанию

.generate-unique-process-engine-name

Генерировать уникальное имя process engine (формат: 'processEngine' + 10 случайных алфавитно‑цифровых символов)

false

.generate-unique-process-application-name

Генерировать уникальное имя Process Application для каждого деплоя Process Application (формат: 'processApplication' + 10 случайных алфавитно‑цифровых символов)

false

.default-serialization-format

Формат сериализации по умолчанию

Значение OpenBPM Engine по умолчанию

.history-level

Уровень истории OpenBPM Engine

FULL

.history-level-default

Уровень истории OpenBPM Engine, используемый когда history-level равен auto, но уровень не может быть определен автоматически

FULL

.auto-deployment-enabled

Следует ли выполнять автодеплой процессов. Это отключено при использовании SpringBootProcessApplication

true

.default-number-of-retries

Задает, сколько раз задача будет выполняться до регистрации инцидента

3

.job-executor-acquire-by-priority

Если установлено в true, исполнитель задач будет забирать задачи с наивысшими приоритетами

false

.license-file

Предоставляет URL к вашему файлу лицензии OpenBPM Engine и автоматически вставляется в БД при старте приложения (но только если в БД не найден действительный лицензионный ключ). Примечание: Это свойство доступно только при использовании camunda-bpm-spring-boot-starter-webapp-ee

По умолчанию лицензионный ключ будет загружен:

  • из URL, указанного через это свойство (если задан)

  • из файла с именем camunda-license.txt в classpath (если существует)

  • из пути ${user.home}/.camunda/license.txt (если существует)

Лицензия должна быть строго в том формате, в котором мы отправили ее вам, включая строку заголовка и строку подвала.

.id-generator

Настройка idGenerator. Допустимые значения: simple, strong, prefixed. Генератор prefixed похож на strong, но использует имя приложения Spring (${spring.application.name}) в качестве префикса для каждого id.

strong

.version

Версия process engine

Значение только для чтения, например, 7.4.0

.formatted-version

Отформатированная версия process engine

Значение только для чтения, например, (v7.4.0)

.deployment-resource-pattern

Расположение для автодеплоя

classpath*:**/*.bpmn, classpath*:**/*.bpmn20.xml, classpath*:**/*.dmn, classpath*:**/*.dmn11.xml, classpath*:**/*.cmmn, classpath*:**/*.cmmn10.xml, classpath*:**/*.cmmn11.xml

Выполнение джобов

openbpm.bpm.job-execution

.enabled

Если установлено в false, бин JobExecutor вообще не создается. Может использоваться для тестирования.

true

.deployment-aware

Является ли исполнитель джобов deployment-aware

false

.core-pool-size

Установите значение > 1, чтобы активировать параллельное выполнение джобов.

3

.keep-alive-seconds

Задает время в миллисекундах, в течение которого потоки остаются живыми, когда больше нет задач. По истечении времени потоки завершаются, чтобы был достигнут размер core pool.

0

.lock-time-in-millis

Задает время в миллисекундах, на которое полученная задача блокируется для выполнения. В течение этого времени ни один другой исполнитель джобов не может получить эту задачу.

300000

.max-jobs-per-acquisition

Задает максимальное количество задач, получаемых за один раз.

3

.max-pool-size

Максимальное количество параллельных потоков, выполняющих задачи.

10

.queue-capacity

Задает размер очереди, используемой для хранения задач, ожидающих выполнения.

3

.wait-time-in-millis

Задает время ожидания потока захвата задач в миллисекундах, если доступно меньше задач, чем было запрошено при захвате. Если это происходит повторно, время ожидания увеличивается экспоненциально с фактором waitIncreaseFactor. Время ожидания ограничено значением maxWait.

5000

.max-wait

Задает максимальное время ожидания потока захвата задач в миллисекундах, если доступно меньше задач, чем было запрошено при захвате.

60000

.backoff-time-in-millis

Задает время ожидания потока захвата задач в миллисекундах, если задачи были получены, но не могли быть заблокированы. Это состояние указывает, что другие потоки захвата задач получают задачи параллельно. Если это повторяется, время backoff увеличивается экспоненциально с фактором waitIncreaseFactor. Время ограничено значением maxBackoff. При каждом увеличении времени backoff количество получаемых задач также увеличивается на waitIncreaseFactor.

0

.max-backoff

Задает максимальное время ожидания потока захвата задач в миллисекундах, если задачи были получены, но не могли быть заблокированы.

0

.backoff-decrease-threshold

Задает число успешных циклов захвата задач без отказа блокировки задач, после чего время backoff снова уменьшается. В этом случае время backoff уменьшается на waitIncreaseFactor.

100

.wait-increase-factor

Задает коэффициент, на который увеличиваются времена ожидания и backoff, если условия их активации повторяются.

2

Источник данных

openbpm.bpm.database

.schema-update

Следует ли применять автоматическое обновление схемы; используйте одно из [true, false, create, create-drop, drop-create]

true

.type

Тип используемой базы данных. Возможные значения: h2, mysql, oracle, postgres, mssql, db2.

Будет автоматически определено из datasource

.table-prefix

Префикс таблиц базы данных OpenBPM Engine. Внимание: префикс таблиц не будет применен, если вы используете schema-update!

Значение Camunda по умолчанию

.schema-name

Имя схемы базы данных

Значение Camunda по умолчанию

.jdbc-batch-processing

Управляет тем, выполняет ли движок JDBC‑выражения как Batch или нет. Для некоторых баз данных это нужно отключить. См. руководство пользователя для деталей.

Значение Camunda по умолчанию: true

События

openbpm.bpm.eventing

.execution

Включает генерацию событий delegate execution. См. руководство пользователя для деталей.

true

.history

Включает генерацию событий истории. См. руководство пользователя для деталей.

true

.task

Включает генерацию событий задач. См. руководство пользователя для деталей.

true

.skippable

Определяет, регистрируются ли слушатели как встроенные (false) или как пропускаемые (true). См. руководство пользователя для деталей.

true

Управление

openbpm.bpm.management

.health.camunda.enabled

Включает стандартные индикаторы здоровья camunda

true

Метрики

openbpm.bpm.metrics

.enabled

Включает отправку метрик

Значение Camunda по умолчанию

.db-reporter-activate

Включает отправку метрик в БД

Значение Camunda по умолчанию

Веб‑приложение

openbpm.bpm.webapp

.enabled

Переключатель для отключения автоконфигурации OpenBPM Engine Webapp.

true

.index-redirect-enabled

Регистрирует редирект с / на встроенный index.html OpenBPM Engine.

Если это свойство установлено в false, учитывается поведение Spring Boot по умолчанию.

true

.application-path

Изменяет путь приложения для webapp. При установке в /, восстанавливается прежнее поведение OpenBPM Engine Spring Boot Starter ⇐ 3.4.x.

/openbpm-engine

openbpm.bpm.webapp.csrf

.target-origin

Задает ожидаемый домен развертывания приложения. См. руководство пользователя для деталей.

Не задано

.deny-status

Задает HTTP‑код ответа, используемый для отклоненного запроса. См. руководство пользователя для деталей.

403

.random-class

Задает имя класса, используемого для генерации токенов. См. руководство пользователя для деталей.

java.security.SecureRandom

.entry-points

Задает дополнительные URL, для которых не будет проверяться наличие действительного токена. См. руководство пользователя для деталей.

Не задано

.enable-secure-cookie

Если установлено в true, включается флаг cookie Secure.

false

.enable-same-site-cookie

Если установлено в false, флаг cookie SameSite отключается. Значение по умолчанию для cookie SameSite — LAX, и его можно изменить через свойство конфигурации same-site-cookie-option.

true

.same-site-cookie-option

Может быть настроено как STRICT или LAX. Примечание:

  • Игнорируется, когда enable-same-site-cookie установлено в false

  • Нельзя задавать вместе с same-site-cookie-value

Не задано

.same-site-cookie-value

Пользовательское значение для свойства cookie.

Примечание:

  • Игнорируется, когда enable-same-site-cookie установлено в false

  • Нельзя задавать вместе с same-site-cookie-option

Не задано

.cookie-name

Пользовательское значение для изменения имени cookie.

Примечание: Пожалуйста, убедитесь, что вы также изменили имя cookie для каждого webapp (например, Cockpit) отдельно.

XSRF-TOKEN

openbpm.bpm.webapp.session-cookie

.enable-secure-cookie

Если установлено в true, флаг cookie Secure включается для Session Cookie.

Примечание: Если флаг Secure уже установлен в cookie другими средствами, это свойство не снимет его при установке в false.

false

.enable-same-site-cookie

Если установлено в false, флаг cookie SameSite отключается. Значение по умолчанию для cookie SameSite — LAX, и его можно изменить через свойство конфигурации same-site-cookie-option.

Примечание: Если флаг SameSite уже установлен в cookie другими средствами, это свойство не изменит и не удалит его.

true

.same-site-cookie-option

Может быть настроено как STRICT или LAX.

Примечание:

  • Игнорируется, когда enable-same-site-cookie установлено в false

  • Нельзя задавать вместе с same-site-cookie-value

  • Не изменит значение флага SameSite, если оно уже задано другими средствами

Не задано

.same-site-cookie-value

Пользовательское значение для свойства cookie.

Примечание:

  • Игнорируется, когда enable-same-site-cookie установлено в false

  • Нельзя задавать вместе с same-site-cookie-option

  • Не изменит значение флага SameSite, если оно уже задано другими средствами

Не задано

.cookie-name

Пользовательское значение для настройки имени session cookie, которое нужно изменить.

JSESSIONID

openbpm.bpm.webapp.header-security

.xss-protection-disabled

Заголовок можно полностью отключить, если установить в true. Допустимые значения: true и false.

false

.xss-protection-option

Допустимые значения:

  • BLOCK: если браузер обнаруживает XSS‑атаку, страница полностью блокируется

  • SANITIZE: если браузер обнаруживает XSS‑атаку, страница очищается от подозрительных частей (значение 0)

Примечание:

  • Игнорируется, когда .xss-protection-disabled установлено в true

  • Нельзя задавать вместе с .xss-protection-value

BLOCK

.xss-protection-value

Можно задать пользовательское значение для заголовка.

Примечание:

  • Игнорируется, когда .xss-protection-disabled установлено в true

  • Нельзя задавать вместе с .xss-protection-option

1; mode=block

.content-security-policy-disabled

Заголовок можно полностью отключить, если установить в true. Допустимые значения: true и false.

false

.content-security-policy-value

Можно задать пользовательское значение для заголовка.

Примечание: Свойство игнорируется, когда .content-security-policy-disabled установлено в true

base-uri 'self'

.content-type-options-disabled

Заголовок можно полностью отключить, если установить в true. Допустимые значения: true и false.

false

.content-type-options-value

Можно задать пользовательское значение для заголовка.

Примечание: Свойство игнорируется, когда .content-security-policy-disabled установлено в true

nosniff

.hsts-disabled

Установите в false, чтобы включить заголовок. Заголовок отключен по умолчанию. Допустимые значения: true и false.

true

.hsts-max-age

Количество секунд, в течение которых браузер должен помнить, что доступ к webapp должен быть через HTTPS.

Примечание:

  • По умолчанию соответствует одному году

  • Игнорируется, когда hstsDisabled равно true

  • Нельзя задавать вместе с hstsValue

  • Допускается максимальное значение \$2^31-1\$

31536000

.hsts-include-subdomains-disabled

HSTS дополнительно к домену webapp включается для всех его поддоменов.

Примечание:

  • Игнорируется, когда hstsDisabled равно true

  • Нельзя задавать вместе с hstsValue

true

.hsts-value

Можно задать пользовательское значение для заголовка.

Примечание:

  • Игнорируется, когда hstsDisabled равно true

  • Нельзя задавать вместе с hstsMaxAge или hstsIncludeSubdomainsDisabled

max-age=31536000

openbpm.bpm.webapp.auth.cache

.ttl-enabled

Время жизни кэша аутентификации может быть полностью отключено, если установить в false. То есть информация аутентификации кэшируется на протяжении жизни HTTP‑сессии. Допустимые значения: true и false.

true

.time-to-live

Количество миллисекунд, в течение которых веб‑приложения повторно используют кэш для HTTP‑сессии, прежде чем пересоздать его и заново запросить информацию аутентификации из базы данных.

Допустимый набор значений:

  • временная длительность в миллисекундах от 1 до \$2^63-1\$

  • 0, что фактически приводит к запросу информации аутентификации при каждом REST API запросе Примечание: Игнорируется, когда .enabled установлено в false

300,000

REST API

openbpm.bpm.rest-api.fetch-and-lock

.queue-capacity

Настраивает лимит блокирующей очереди для long‑polling запросов «Fetch and Lock».

200

.unique-worker-request

Если флаг активирован, ожидающие запросы с тем же workerId отменяются при поступлении нового запроса.

false

Авторизация

openbpm.bpm.authorization

.enabled

Включает авторизацию

Значение Camunda по умолчанию

.enabled-for-custom-code

Включает авторизацию для пользовательского кода

Значение Camunda по умолчанию

.authorization-check-revokes

Настраивает отмены проверок авторизации

Значение Camunda по умолчанию

.tenant-check-enabled

Выполняет проверки арендаторов, чтобы удостовериться, что аутентифицированный пользователь может получить доступ только к данным, принадлежащим одному из его арендаторов.

true

Администратор

openbpm.bpm.admin-user

.id

Имя пользователя (например, 'admin')

-

.password

Начальный пароль

=id

.firstName, .lastName, .email

Дополнительные (необязательные) атрибуты пользователя

По умолчанию равны значению 'id'

Фильтр

openbpm.bpm.filter

.create

Имя фильтра «показать все». Если задано, при старте создается новый фильтр, отображающий все задачи. Полезно для тестирования на БД h2.

-

OAuth2

openbpm.bpm.oauth2.identity-provider

.enabled

Включает провайдер идентификации OAuth2.

true

.group-name-attribute

Включает и настраивает OAuth2 Granted Authorities Mapper.

-

.group-name-delimiter

Настраивает разделитель, используемый в OAuth2 Granted Authorities Mapper. Используется только если настроенный group-name-attribute содержит значение типа String.

, (запятая)

openbpm.bpm.oauth2.sso-logout

.enabled

Активирует функцию client‑initiated OIDC logout.

false

.post-logout-redirect-uri

Настраивает URI, на который пользователь перенаправляется после SSO logout у провайдера.

{baseUrl}

Общие свойства

Описанный выше метод конфигурации не охватывает все доступные свойства process engine. Чтобы переопределить любое свойство конфигурации process engine, которое не открыто (т. е. не перечислено выше), можно использовать generic-properties.

openbpm:
  bpm:
    generic-properties:
      properties:
        ...

Переопределение уже открытого свойства с помощью ключевого слова generic-properties не влияет на конфигурацию process engine. Все открытые свойства можно переопределять только через их открытый идентификатор.

Примеры

Переопределение конфигурации с использованием открытых свойств:

openbpm.bpm:
  admin-user:
    id: kermit
    password: superSecret
    firstName: Kermit
  filter:
    create: All tasks

Переопределение конфигурации с использованием generic properties:

openbpm:
  bpm:
    generic-properties:
      properties:
        enable-password-policy: true

Вы можете настроить Session Cookie для Spring Boot приложения через файл конфигурации application.yaml.

Spring Boot Starter версии >= 3.0 (версия Spring Boot 2.x)

server:
  servlet:
    session:
      cookie:
        secure: true
        http-only: true # Невозможно для версий до 2.0.3

Дополнительные параметры session cookie, такие как флаг SameSite, можно настроить через openbpm.bpm.webapp.session-cookie в application.yaml.

Настройка форматов данных Spin

OpenBPM Engine Spring Boot Starter автоматически настраивает Spin Jackson Json DataFormat, когда зависимость openbpm-engine-spin-dataformat-json-jackson обнаружена в classpath. Чтобы включить DataFormatConfigurator для нужного модуля Jackson Java 8, соответствующую зависимость также нужно добавить в classpath. Обратите внимание, что для работы авто‑конфигураторов также требуется зависимость openbpm-engine-plugin-spin.

Авто‑конфигурация в настоящее время поддерживается для следующих модулей Jackson Java 8 https://github.com/FasterXML/jackson-modules-java8:

  1. Имена параметров (jackson-module-parameter-names)

  2. Дата/время Java 8 (jackson-datatype-jdk8)

  3. Типы данных Java 8 (jackson-datatype-jsr310)

Авто‑конфигурация Spin Jackson Json DataFormat отключается при использовании camunda-spin-dataformat-all в качестве зависимости. Артефакт openbpm-engine-spin-dataformat-all затеняет библиотеки Jackson, что нарушает совместимость с обычными модулями Jackson. Если использование openbpm-engine-spin-dataformat-all необходимо, используйте стандартный способ настройки кастомного формата данных Spin.

Например, чтобы добавить поддержку типов Java 8 Date/time в Spin, в файл pom.xml Spring Boot приложения необходимо добавить следующие зависимости с соответствующими тегами версии:

<dependencies>
    <dependency>
      <groupId>io.openbpm.bpm</groupId>
      <artifactId>openbpm-engine-plugin-spin</artifactId>
    </dependency>
    <dependency>
      <groupId>io.openbpm.spin</groupId>
      <artifactId>openbpm-engine-spin-dataformat-json-jackson</artifactId>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.datatype</groupId>
      <artifactId>jackson-datatype-jdk8</artifactId>
    </dependency>
</dependencies>

Spring Boot также предоставляет удобные свойства конфигурации, чтобы дополнительно настроить Jackson ObjectMapper. Их можно найти здесь.

Чтобы добавить дополнительные конфигурации, необходимо выполнить следующие действия:

  1. Предоставить собственную реализацию io.openbpm.spin.spi.DataFormatConfigurator;

  2. Добавить соответствующую пару ключ‑значение полностью квалифицированных имен классов интерфейса и реализации в файл META-INF/spring.factories;

  3. Убедиться, что артефакт, содержащий конфигуратор, доступен для classloader Spin.

Лицензия и атрибуция

Эта документация была создана на базе материала "Camunda 7 Docs" от Camunda, находится под лицензией Creative Commons Attribution-ShareAlike 3.0 Unported License .

Оригинал документации: https://docs.camunda.org