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)!
            }
            deployment {
                tenantId = "Camunda" //(5)!
                name = "KoraEngineAutoDeployment" //(6)!
                deployChangedOnly = true //(7)!
                resources = "classpath:bpm" //(8)!
                delay = "1m" //(9)!
            }
            parallelInitialization {
                enabled = true //(10)!
                validateIncompleteStatements = true //(11)!
            }
            admin {
                id = "admin" //(12)!
                password = "admin" //(13)!
                firstname = "Ivan" //(14)!
                lastname = "Ivanov" //(15)!
                email = "admin@mail.ru" //(16)!
            }
            telemetry {
                logging {
                    enabled = false //(17)!
                    stacktrace = true //(18)!
                }
                metrics {
                    enabled = true //(19)!
                    slo = [ 1, 10, 50, 100, 200, 500, 1000, 2000, 5000, 10000, 20000, 30000, 60000, 90000 ] //(20)!
                }
                engineTelemetryEnabled = false //(21)!
                tracing {
                    enabled = true //(22)!
                }
            }
        }
    }
}
- Минимальное количество живых потоков в JobExecutor
 - Максимальное кличество потоков в JobExecutor
 - Размер очереди задачи перед тем как задачи будут выброшены из очереди выполнения JobExecutor
 - Максимальное количество задач в выполнении JobExecutor (по умолчанию равно кол-во ядер процессора умноженных на 2)
 - Индетефикатор тенант загрузки ресурсов (по умолчанию отсутсвует)
 - Имя загрузки ресурсов
 - Флаг который говорит что следует загружать только измененные ресурсы
 - Пути для поиска 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)!
      deployment:
        tenantId: "Camunda" #(5)!
        name: "KoraEngineAutoDeployment" #(6)!
        deployChangedOnly: true #(7)!
        resources: "classpath:bpm" #(8)!
        delay: "1m" #(9)!
      parallelInitialization:
        enabled: true #(10)!
        validateIncompleteStatements: true #(11)!
      admin:
        id: "admin" #(12)!
        password: "admin" #(13)!
        firstname: "Ivan" #(14)!
        lastname: "Ivanov" #(15)!
        email: "admin@mail.ru" #(16)!
      telemetry:
        logging:
          enabled: false #(17)!
          stacktrace: true #(18)!
        metrics:
          enabled: true #(19)!
          slo: [ 0, 10, 50, 100, 200, 500, 1000, 2000, 5000, 10000, 20000, 30000, 60000, 90000 ] #(20)!
        engineTelemetryEnabled: false #(21)!
        tracing:
          enabled: true #(22)!
- Минимальное количество живых потоков в JobExecutor
 - Максимальное кличество потоков в JobExecutor
 - Размер очереди задачи перед тем как задачи будут выброшены из очереди выполнения JobExecutor
 - Максимальное количество задач в выполнении JobExecutor (по умолчанию равно кол-во ядер процессора умноженных на 2)
 - Индетефикатор тенант загрузки ресурсов (по умолчанию отсутсвует)
 - Имя загрузки ресурсов
 - Флаг который говорит что следует загружать только измененные ресурсы
 - Пути для поиска 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 предоставляя их как компоненты в контейнер зависимостей.