1 - Камунда.РФ 7 в Spring Boot приложении
Введение
В данной инструкции описан процесс создания нового пустого Spring Boot приложения, которое при запуске автоматически поднимает Камунда.РФ 7 (Spring Boot) с использованием embedded базы данных H2.
Камунда.РФ 7 подключается как зависимость, опубликованная в корпоративном Nexus-репозитории.
Инструкция ориентирована на локальный запуск разработчиком.
Предварительные требования
-
Java 17+
-
Maven 3.8+
-
Доступ к корпоративному Nexus:
-
Maven-репозиторию
-
Создание Spring Boot проекта
Создайте новый Spring Boot проект любым удобным способом (Spring Initializr, IDEA, вручную).
Минимальные параметры:
-
Project: Maven
-
Language: Java
-
Spring Boot: 3.x
-
Packaging:
jar
Настройка доступа к Nexus (Maven)
Для загрузки зависимостей Камунда.РФ 7 из Nexus необходимо настроить аутентификацию Maven.
Откройте файл ~/.m2/settings.xml и добавьте:
<settings>
<servers>
<server>
<id>kamundarf-nexus</id>
<username>YOUR_USERNAME</username>
<password>YOUR_PASSWORD</password>
</server>
</servers>
</settings>
Далее подключите репозиторий в pom.xml:
<repositories>
<repository>
<id>kamundarf-nexus</id>
<url>https://nexus.boos.solutions/repository/kamundarf-mvn/</url>
</repository>
</repositories>
Подключение Камунда.РФ 7
Добавьте зависимости Камунда.РФ 7 в pom.xml.
<dependencies>
<!-- Содержит ядро BPMN, ProcessEngine, сервисы (RuntimeService, TaskService и др.) -->
<dependency>
<groupId>rf.kamunda.bpm.springboot</groupId>
<artifactId>camunda-bpm-spring-boot-starter</artifactId>
<version>${kamundarf.version}</version>
</dependency>
<!-- REST API: RESTful эндпоинты для взаимодействия с движком через HTTP -->
<dependency>
<groupId>rf.kamunda.bpm.springboot</groupId>
<artifactId>camunda-bpm-spring-boot-starter-rest</artifactId>
<version>${kamundarf.version}</version>
</dependency>
<!-- Веб-интерфейсы - Cockpit (мониторинг), Tasklist (задачи), Admin (управление) -->
<dependency>
<groupId>rf.kamunda.bpm.springboot</groupId>
<artifactId>camunda-bpm-spring-boot-starter-webapp</artifactId>
<version>${kamundarf.version}</version>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
</dependencies>
После этого нужно сконфигурировать Камунда.РФ 7 в файле application.yml и Камунда.РФ 7 будет автоматически сконфигурирована и поднята при старте приложения.
Минимальная конфигурация application.yml
Камунда.РФ 7 будет использовать embedded/in-memory H2 базу данных. Это удобно для локальной разработки и тестирования.
server:
port: 8080
spring:
datasource:
url: jdbc:h2:mem:process-engine;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
driver-class-name: org.h2.Driver
username: sa
password: sa
h2:
console:
enabled: true
path: /h2-console
camunda:
bpm:
history-level: full
admin-user:
id: demo
password: demo
firstName: Demo
filter:
create: All tasks
database:
schema-update: true
Запуск приложения
Локальный запуск:
mvn spring-boot:run
Или:
mvn clean package
java -jar target/camunda-demo.jar
В логах должно появиться сообщение об успешном запуске Process Engine.
После запуска:
-
Веб-интерфейс приложения будет доступен по адресу:
http://localhost:8080/camunda -
Логин:
demo -
Пароль:
demo
Использование других баз данных
Камунда.РФ 7 поддерживает различные СУБД:
-
PostgreSQL
-
H2
-
MySQL / MariaDB
-
Oracle
-
MSSQL
-
DB2
Для смены базы данных необходимо:
-
Подключить JDBC-драйвер в
pom.xml -
Изменить
spring.datasource.* -
Указать тип БД
Пример для PostgreSQL:
spring:
datasource:
url: jdbc:postgresql://localhost:5432/camunda
username: camunda
password: camunda
driver-class-name: org.postgresql.Driver
camunda:
bpm:
database:
type: postgres
schema-update: true
Основные свойства Камунда.РФ 7 в application.yml
Ниже перечислены основные параметры конфигурации Камунда.РФ 7, которые чаще всего используются в Spring Boot приложениях.
Базовый префикс
Все свойства Камунда.РФ 7 настраиваются через префикс:
camunda:
bpm:
Настройки базы данных
camunda:
bpm:
database:
type: h2 # Тип БД: h2 | postgres | mysql | oracle | mssql
schema-update: true # true | false | create | drop-create
| Свойство | Описание |
|---|---|
|
Тип используемой базы данных |
|
Управление схемой БД ( |
Администратор Камунда.РФ 7
Создание технического пользователя при старте приложения.
camunda:
bpm:
admin-user:
id: admin
password: admin
first-name: Admin
last-name: User
email: admin@example.com
| Свойство | Описание |
|---|---|
|
Логин администратора |
|
Пароль администратора |
|
Имя |
|
Фамилия |
|
Email (необязательно) |
Web-приложение Камунда.РФ 7
camunda:
bpm:
webapp:
application-path: /camunda
| Свойство | Описание |
|---|---|
|
Контекст Камунда.РФ 7 Web App |
История и аудит
camunda:
bpm:
history-level: full # none | activity | audit | full
| Свойство | Описание |
|---|---|
|
Уровень сохранения исторических данных |
Job Executor (фоновые джобы)
camunda:
bpm:
job-execution:
enabled: true
core-pool-size: 3
max-pool-size: 10
| Свойство | Описание |
|---|---|
|
Включение Job Executor |
|
Базовое количество потоков |
|
Максимальное количество потоков |
Авторизация и безопасность
camunda:
bpm:
authorization:
enabled: true
| Свойство | Описание |
|---|---|
|
Включение авторизации Камунда.РФ 7 |
Метрики
camunda:
bpm:
metrics:
enabled: true
db-reporter-activate: true
| Свойство | Описание |
|---|---|
|
Сбор метрик движка |
|
Сбор метрик в БД |
Полный минимальный пример
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.5.8</version>
</parent>
<groupId>org.example</groupId>
<artifactId>camunda-demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>camunda-demo</name>
<description>camunda-demo</description>
<properties>
<java.version>21</java.version>
<kamundarf.version>1.0.0-SNAPSHOT</kamundarf.version>
</properties>
<repositories>
<repository>
<id>company-nexus</id>
<url>https://nexus.boos.solutions/repository/kamundarf-mvn/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>rf.kamunda.bpm.springboot</groupId>
<artifactId>camunda-bpm-spring-boot-starter-webapp</artifactId>
<version>${kamundarf.version}</version>
</dependency>
<dependency>
<groupId>rf.kamunda.bpm.springboot</groupId>
<artifactId>camunda-bpm-spring-boot-starter-rest</artifactId>
<version>${kamundarf.version}</version>
</dependency>
<dependency>
<groupId>rf.kamunda.bpm.springboot</groupId>
<artifactId>camunda-bpm-spring-boot-starter</artifactId>
<version>${kamundarf.version}</version>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
application.yml
camunda:
bpm:
database:
type: h2
schema-update: true
admin-user:
id: admin
password: admin
history-level: full
webapp:
application-path: /camunda
Архив с примером приложения Скачать ZIP
Итог
В результате получаем:
-
Пустой Spring Boot проект
-
Камунда.РФ 7, поднимающуюся автоматически при старте
-
Embedded H2 для локальной разработки
-
Возможность легко переключиться на любую поддерживаемую БД
2 - Развёртывание Камунда.РФ 7 в Kubernetes с Helm
Требования к внешним сервисам и инфраструктуре
В этом разделе перечислено всё, что должно быть предварительно настроено в вашем окружении перед началом установки Камунда.РФ 7.
Инфраструктура
-
Доступы, адреса, учетные записи (предоставляются после приобретения Камунда.РФ)
-
Docker Registry, в котором лежит образ Камунда.РФ 7
-
Helm Registry, где лежит helm chart для Камунда.РФ 7
-
-
Kubernetes 1.23+
-
Helm 3.x
-
Доступ к кластеру Kubernetes (или кластер minikube)
-
Postgresql 15+
Программное обеспечение для установки
Для выполнения инструкций по установке должны быть установлены следующие утилиты:
|
Note
|
Если у вас возникли сложности с установкой idn под вашу операционную систему, замените $(idn камнуда.рф) на xn–80aalwlg5b.xn–p1ai во всех командах
|
Компоненты
В этом разделе описываются основные компоненты приложения, которые будут развернуты в Kubernetes.
Компонент |
Тип |
Камунда.РФ 7 |
Deployment |
Репозиторий и подготовка
На этом этапе подготовим окружение Kubernetes для установки Камунда.РФ 7: добавим репозиторий, настроим базу данных и создадим необходимые секреты.
Переменные окружения
Подготовьте переменные среды окружения:
export REPO_NAME="kamundarf"
export HELM_REGISTRY="oci://$(idn камунда.рф)"
export REGISTRY_USERNAME="ваш-логин"
export REGISTRY_PASSWORD="ваш-пароль"
Установите kubectl для работы с пространством имен, в котором будет производиться работа.
kubectl config set-context --current --namespace=kamundarf7 (1)
-
Если пространство не создано в кластере, создайте его командой:
kubectl create namespace kamundarf7
Авторизация в Helm-registry
В этом разделе проверяем подключение к реестру с Helm-чартами.
helm registry login $HELM_REGISTRY --username $REGISTRY_USERNAME --password $REGISTRY_PASSWORD
Параметры команды:
-
$REPO_NAME- название репозитория в вашей системе -
$HELM_REGISTRY— адрес реестра с Helm-чартом Камунда.РФ 7 -
$REGISTRY_USERNAME— имя пользователя для авторизации в реестре Helm-чартов -
$REGISTRY_PASSWORD— пароль или токен для авторизации в реестре Helm-чартов
Настройка базы данных ( postgresql )
Если у вас нет развернутой БД в кластере Кубернетес, вы можете быстро развернуть ее, используя следующую команду:
export DB_USER=kamundarf7
helm install db oci://registry-1.docker.io/bitnamicharts/postgresql --set auth.database=$DB_USER --set auth.username=$DB_USER
export DB_PASSWORD=$(kubectl get secret db-postgresql -o jsonpath="{.data.password}" | base64 -d)
Если у вас уже есть БД, то подключитесь к ней и создайте отдельного пользователя и базу данных для Камунда.РФ 7.
Создайте секрет для подключения к БД
kubectl create secret generic database-secret \
--from-literal=user=$DB_USER \
--from-literal=password=$DB_PASSWORD
Где
-
$DB_USER- имя пользователя для подключения к базе данных -
$DB_PASSWORD- пароль от пользователя для подключения к базе данных
Создание секрета доступа к Docker Registry Камунда.РФ
Чтобы Kubernetes мог скачать образ Камунда.РФ 7 из приватного реестра (docker registry), необходимо создать секрет с данными для аутентификации.
kubectl create secret docker-registry krf-registry-secret \
--docker-server=$(idn камунда.рф) \
--docker-username=$REGISTRY_USERNAME \
--docker-password=$REGISTRY_PASSWORD \
--docker-email=devops@yourdomain.com
Где
-
$REGISTRY_USERNAME- имя пользователя для доступа к реестру Камунда.РФ -
$REGISTRY_PASSWORD- пароль от пользователя для доступа к реестру Камунда.РФ
Подготовка values.yaml
Создайте файл kamundarf7.yaml с описанием параметров установки Камунда.РФ 7.
replicaCount: 1
image:
tag: 1.0.0-SNAPSHOT # Версия, которую необходимо установить
imagePullSecrets:
- name: krf-registry-secret
db:
secretName: "database-secret"
env:
DB_DRIVER: org.postgresql.Driver
DB_URL: jdbc:postgresql://db-postgresql:5432/kamundarf7 # Если у Вас была развернута БД или параметры подключения отличаются, измените их тут
JAVA_OPTS: "-XX:MaxRAMPercentage=75.0 -XX:InitialRAMPercentage=50.0"
Установка чарта
Используем Helm для установки Камунда.РФ 7 в наш кластер Kubernetes, используя подготовленный файл values.yaml.
helm upgrade --install kamundarf7 oci://$HELM_REGISTRY/kamundarf/helmstore/kamundarf7 --values kamundarf7.yaml
Подключение модуля истории
Модуль истории позволяет сохранять историю процессов в Kafka-совместимый брокер сообщений. Существует два сценария подключения:
Сценарий 1: Встроенный брокер сообщений
В этом сценарии брокер сообщений разворачивается вместе с Камунда.РФ 7 в кластере Kubernetes.
Для включения встроенной Kafka внесите следующие изменения в файл kamundarf7.yaml созданный на предыдущем шаге:
replicaCount: 1
image:
tag: 1.0.0-SNAPSHOT # Версия, которую необходимо установить
imagePullSecrets:
- name: krf-registry-secret
db:
secretName: "database-secret"
env:
DB_DRIVER: org.postgresql.Driver
DB_URL: jdbc:postgresql://db-postgresql:5432/kamundarf7 # Если у Вас была развернута БД или параметры подключения отличаются, измените их тут
JAVA_OPTS: "-XX:MaxRAMPercentage=75.0 -XX:InitialRAMPercentage=50.0"
kafka:
enabled: true
replicaCount: 1
plugins:
history:
enabled: true
useEmbedded: true
topic: process-events
rawTopic: process-events-raw
После внесения изменений выполните команду:
helm upgrade --install kamundarf7 oci://$HELM_REGISTRY/kamundarf/helmstore/kamundarf7 --values kamundarf7.yaml
Сценарий 2: Внешнний брокер сообщений
В этом сценарии используется существующий брокер сообщений развернутый в кластере Kubernetes.
Для подключения внешнего брокера внесите следующие изменения в файл kamundarf7.yaml:
replicaCount: 1
image:
tag: 1.0.0-SNAPSHOT # Версия, которую необходимо установить
imagePullSecrets:
- name: krf-registry-secret
db:
secretName: "database-secret"
env:
DB_DRIVER: org.postgresql.Driver
DB_URL: jdbc:postgresql://db-postgresql:5432/kamundarf7 # Если у Вас была развернута БД или параметры подключения отличаются, измените их тут
JAVA_OPTS: "-XX:MaxRAMPercentage=75.0 -XX:InitialRAMPercentage=50.0"
kafka:
enabled: false
plugins:
history:
enabled: true
useEmbedded: false
bootStrapServers:
- "external-kafka:9092"
topic: process-events
После внесения изменений выполните команду:
helm upgrade --install kamundarf7 oci://$HELM_REGISTRY/kamundarf/helmstore/kamundarf7 --values kamundarf7.yaml
Ознакомьтесь с документацией по настройке модуля Истории.
Доступ к приложению
После установки необходимо проверить, что приложение запустилось корректно, и настроить к нему доступ извне кластера.
После установки проверьте сервис:
kubectl get pods
Пример вывода (требуется, чтобы в ready было 1/1)
NAME READY STATUS RESTARTS AGE
kamundarf7-78546d488d-7fr6s 1/1 Running 0 7m48s
Камунда.РФ 7 будет доступна на порту 8080 внутри кластера. Для внешнего доступа можно включить ingress.
ingress:
enabled: true
className: nginx
hosts:
- host: kamundarf-7.example.com
paths:
- path: /
pathType: Prefix
Либо можно прокинуть порт
kubectl port-forward svc/kamundarf7 8080:8080
После этой команды можно будет зайти на http://localhost:8080
Настройки Камунда.РФ 7
В этом разделе подробно описаны ключевые настройки, которые позволяют гибко настроить поведение Камунда.РФ 7. Настройки можно задавать как через переменные окружения, так и через файл values.yaml.
| Переменная | Назначение |
|---|---|
|
Указывает путь к корневому каталогу Apache Tomcat внутри контейнера. В данном случае: |
|
Класс JDBC-драйвера базы данных. Например: |
|
JDBC-URL подключения к БД. Пример: |
|
Максимальное количество активных соединений в пуле. Оптимальное значение зависит от размера БД и нагрузки. По умолчанию — |
|
Минимальное количество "ленивых" соединений — те, что доступны но неактивны. Снижает overhead на создание новых соединений. |
|
Максимальное количество неиспользуемых соединений, которые могут оставаться в пуле. Балансирует скорость против потребления ресурсов. |
|
Если |
|
Запрос для проверки активности соединения. Обычно |
|
Если не пусто, пропускает конфигурацию БД во время старта. |
|
Список зависимостей (например, адреса БД, Kafka и т.д.), которые Камунда.РФ 7 должна дождаться перед стартом. Указывается через запятые. |
|
Максимальное время (в секундах) ожидания всех зависимостей из |
|
Часовой пояс внутри контейнера. |
|
Включение отладочного режима. При |
|
Аргументы JVM. Например: |
Настройка через values.yaml
Кроме переменных окружения, настройки можно задавать через файл values.yaml. Ниже приведены основные параметры, которые можно настроить:
| Параметр | Назначение |
|---|---|
|
Количество реплик приложения. По умолчанию: |
|
Репозиторий образа Камунда.РФ 7. По умолчанию: |
|
Тег образа Камунда.РФ 7. По умолчанию: |
|
Политика загрузки образа. По умолчанию: |
|
Создавать ли ServiceAccount. По умолчанию: |
|
Тип сервиса. По умолчанию: |
|
Порт сервиса. По умолчанию: |
|
Включить ли Ingress. По умолчанию: |
|
Имя секрета с данными для подключения к БД. По умолчанию: |
|
Драйвер БД. По умолчанию: |
|
URL подключения к БД. По умолчанию: |
|
Включен ли модуль истории. По умолчанию: |
|
Топик Kafka для модуля истории. По умолчанию: |
|
Включить ли встроенную PostgreSQL. По умолчанию: |
|
Включить ли встроенную Kafka. По умолчанию: |
Параметры плагина истории
| Параметр | Назначение |
|---|---|
|
Образ плагина истории. По умолчанию: |
|
Включен ли модуль истории. По умолчанию: |
|
Режим работы плагина. По умолчанию: |
|
Источник данных. По умолчанию: пусто. |
|
Адрес источника данных. По умолчанию: пусто. |
|
Список серверов Kafka. По умолчанию: пустой список. |
|
Топик Kafka для модуля истории. По умолчанию: |
|
Топик Kafka для сырых данных. По умолчанию: |
|
Тип контента. По умолчанию: |
|
Сериализатор ключей. По умолчанию: |
|
Уровень подтверждения сообщений. По умолчанию: |
|
Количество попыток повторной отправки. По умолчанию: |
|
Время задержки перед отправкой сообщений. По умолчанию: |
|
Путь к библиотекам. По умолчанию: |
|
Использовать ли встроенную Kafka. По умолчанию: |