Конфигурация 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‑контекста (см. |
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 |
По умолчанию лицензионный ключ будет загружен:
Лицензия должна быть строго в том формате, в котором мы отправили ее вам, включая строку заголовка и строку подвала. |
|
.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. Примечание:
|
Не задано |
|
.same-site-cookie-value |
Пользовательское значение для свойства cookie. Примечание:
|
Не задано |
|
.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. Примечание:
|
Не задано |
|
.same-site-cookie-value |
Пользовательское значение для свойства cookie. Примечание:
|
Не задано |
|
.cookie-name |
Пользовательское значение для настройки имени session cookie, которое нужно изменить. |
JSESSIONID |
|
openbpm.bpm.webapp.header-security |
.xss-protection-disabled |
Заголовок можно полностью отключить, если установить в true. Допустимые значения: true и false. |
false |
.xss-protection-option |
Допустимые значения:
Примечание:
|
BLOCK |
|
.xss-protection-value |
Можно задать пользовательское значение для заголовка. Примечание:
|
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. Примечание:
|
31536000 |
|
.hsts-include-subdomains-disabled |
HSTS дополнительно к домену webapp включается для всех его поддоменов. Примечание:
|
true |
|
.hsts-value |
Можно задать пользовательское значение для заголовка. Примечание:
|
max-age=31536000 |
|
openbpm.bpm.webapp.auth.cache |
.ttl-enabled |
Время жизни кэша аутентификации может быть полностью отключено, если установить в false. То есть информация аутентификации кэшируется на протяжении жизни HTTP‑сессии. Допустимые значения: true и false. |
true |
.time-to-live |
Количество миллисекунд, в течение которых веб‑приложения повторно используют кэш для HTTP‑сессии, прежде чем пересоздать его и заново запросить информацию аутентификации из базы данных. Допустимый набор значений:
|
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:
...
|
Переопределение уже открытого свойства с помощью ключевого слова |
Примеры
Переопределение конфигурации с использованием открытых свойств:
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
Вы можете настроить 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:
-
Имена параметров (
jackson-module-parameter-names) -
Дата/время Java 8 (
jackson-datatype-jdk8) -
Типы данных Java 8 (
jackson-datatype-jsr310)
|
Авто‑конфигурация Spin Jackson Json DataFormat отключается при использовании
|
Например, чтобы добавить поддержку типов 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. Их можно найти здесь.
Чтобы добавить дополнительные конфигурации, необходимо выполнить следующие действия:
-
Предоставить собственную реализацию
io.openbpm.spin.spi.DataFormatConfigurator; -
Добавить соответствующую пару ключ‑значение полностью квалифицированных имен классов интерфейса и реализации в файл
META-INF/spring.factories; -
Убедиться, что артефакт, содержащий конфигуратор, доступен для classloader Spin.
Лицензия и атрибуция
Эта документация была создана на базе материала "Camunda 7 Docs" от Camunda, находится под лицензией Creative Commons Attribution-ShareAlike 3.0 Unported License .
Оригинал документации: https://docs.camunda.org