Camunda BPMN
Экспериментальный модуль
Эксперементальный модуль является полностью рабочим и протестированным, но требует дополнительной апробации и аналитики по использованию, по этой причине API может потенциально притерпеть незначительные изменения перед полной готовностью.
Модуль для подключения оркестратора BPMN процессов на основе Camunda 7
Подключение¶
Зависимость build.gradle:
Модуль:
Зависимость build.gradle.kts:
Модуль:
Требует подключения JDBC модуля.
Конфигурация¶
Пример полной конфигурации, описанной в классе CamundaEngineBpmnConfig (указаны примеры значений или значения по умолчанию):
camunda {
engine {
bpmn {
jobExecutor {
corePoolSize = 5 //(1)!
maxPoolSize = 25 //(2)!
queueSize = 25 //(3)!
maxJobsPerAcquisition = 2 //(4)!
virtualThreadsEnabled = true //(5)!
}
deployment {
tenantId = "Camunda" //(6)!
name = "KoraEngineAutoDeployment" //(7)!
deployChangedOnly = true //(8)!
resources = "classpath:bpm" //(9)!
delay = "1m" //(10)!
}
parallelInitialization {
enabled = true //(11)!
validateIncompleteStatements = true //(12)!
}
admin {
id = "admin" //(13)!
password = "admin" //(14)!
firstname = "Ivan" //(15)!
lastname = "Ivanov" //(16)!
email = "admin@mail.ru" //(17)!
}
telemetry {
logging {
enabled = false //(18)!
stacktrace = true //(19)!
}
metrics {
enabled = true //(20)!
slo = [ 1, 10, 50, 100, 200, 500, 1000, 2000, 5000, 10000, 20000, 30000, 60000, 90000 ] //(21)!
}
engineTelemetryEnabled = false //(22)!
tracing {
enabled = true //(23)!
}
}
}
}
}
- Минимальное количество живых потоков в JobExecutor
- Максимальное кличество потоков в JobExecutor
- Размер очереди задачи перед тем как задачи будут выброшены из очереди выполнения JobExecutor
- Максимальное количество задач в выполнении JobExecutor (по умолчанию равно кол-во ядер процессора умноженных на 2)
- Использовать ли виртуальные потоки в как основу JobExecutor, все предыдущие опции не имеют значения в случае включения виртуальных потоков
- Индетефикатор тенант загрузки ресурсов (по умолчанию отсутсвует)
- Имя загрузки ресурсов
- Флаг который говорит что следует загружать только измененные ресурсы
- Пути для поиска BPMN/FORM/DMN ресурсов которые будут загружены в оркестратор после запуска
- Задержда перед тем как начать загрузку новых ресурсов в оркестратор
- Включить ли параллельную загрузку которая слегка улучшает скорость запуска оркестратора
- Проверять ли не полные запросы настройки оркестратора
- Индетификатор администратора Camunda (необязательный)
- Пароль администратора Camunda (необязательный)
- Имя администратора Camunda (необязательный)
- Фамилия администратора Camunda (необязательный)
- Email администратора Camunda (необязательный)
- Включает логгирование модуля (по умолчанию
false) - Включает логгирование стека ошибки (по умолчанию
true) - Включает метрики модуля (по умолчанию
true) - Настройка SLO для DistributionSummary метрики
- Включает сбор метрик/телеметрии оркестратора (по умолчанию
false) - Включает трассировку модуля (по умолчанию
true)
camunda:
engine:
bpmn:
jobExecutor:
corePoolSize: 5 #(1)!
maxPoolSize: 25 #(2)!
queueSize: 25 #(3)!
maxJobsPerAcquisition: 2 #(4)!
virtualThreadsEnabled: true #(5)!
deployment:
tenantId: "Camunda" #(6)!
name: "KoraEngineAutoDeployment" #(7)!
deployChangedOnly: true #(8)!
resources: "classpath:bpm" #(9)!
delay: "1m" #(10)!
parallelInitialization:
enabled: true #(11)!
validateIncompleteStatements: true #(12)!
admin:
id: "admin" #(13)!
password: "admin" #(14)!
firstname: "Ivan" #(15)!
lastname: "Ivanov" #(16)!
email: "admin@mail.ru" #(17)!
telemetry:
logging:
enabled: false #(18)!
stacktrace: true #(19)!
metrics:
enabled: true #(20)!
slo: [ 0, 10, 50, 100, 200, 500, 1000, 2000, 5000, 10000, 20000, 30000, 60000, 90000 ] #(21)!
engineTelemetryEnabled: false #(22)!
tracing:
enabled: true #(23)!
- Минимальное количество живых потоков в JobExecutor
- Максимальное кличество потоков в JobExecutor
- Размер очереди задачи перед тем как задачи будут выброшены из очереди выполнения JobExecutor
- Максимальное количество задач в выполнении JobExecutor (по умолчанию равно кол-во ядер процессора умноженных на 2)
- Использовать ли виртуальные потоки в как основу JobExecutor, все предыдущие опции не имеют значения в случае включения виртуальных потоков
- Индетефикатор тенант загрузки ресурсов (по умолчанию отсутсвует)
- Имя загрузки ресурсов
- Флаг который говорит что следует загружать только измененные ресурсы
- Пути для поиска BPMN/FORM/DMN ресурсов которые будут загружены в оркестратор после запуска
- Задержда перед тем как начать загрузку новых ресурсов в оркестратор
- Включить ли параллельную загрузку которая слегка улучшает скорость запуска оркестратора
- Проверять ли не полные запросы настройки оркестратора
- Индетификатор администратора Camunda (необязательный)
- Пароль администратора Camunda (необязательный)
- Имя администратора Camunda (необязательный)
- Фамилия администратора Camunda (необязательный)
- Email администратора Camunda (необязательный)
- Включает логгирование модуля (по умолчанию
false) - Включает логгирование стека ошибки (по умолчанию
true) - Включает метрики модуля (по умолчанию
true) - Настройка SLO для DistributionSummary метрики
- Включает сбор метрик/телеметрии оркестратора (по умолчанию
false) - Включает трассировку модуля (по умолчанию
true)
Исполнители¶
Регистрировать в Camunda можно как свои JavaDelegate,
которые будут зарегистрированы в контексте по своему полному имени класса (canonicalName) так и по упрощенному имени класса (simpleName):
Так и специализированные KoraDelegate, которые позволяют помимо стандартных именований регистрировать исполнителя с помощью произвольного имени в контексте по средствам метода key():
Донастройка¶
Можно регистрировать произвольные ProcessEngineConfigurator которые позволяют донастраивать ProcessEngine:
Плагины¶
Можно регистрировать произвольные Plugin предоставляя их как компоненты в контейнер зависимостей.