Камунда.РФ 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

Для смены базы данных необходимо:

  1. Подключить JDBC-драйвер в pom.xml

  2. Изменить spring.datasource.*

  3. Указать тип БД

Пример для 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
Свойство Описание

database.type

Тип используемой базы данных

database.schema-update

Управление схемой БД (true — автообновление)

Администратор Камунда.РФ 7

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

camunda:
  bpm:
    admin-user:
      id: admin
      password: admin
      first-name: Admin
      last-name: User
      email: admin@example.com
Свойство Описание

admin-user.id

Логин администратора

admin-user.password

Пароль администратора

admin-user.first-name

Имя

admin-user.last-name

Фамилия

admin-user.email

Email (необязательно)

Web-приложение Камунда.РФ 7

camunda:
  bpm:
    webapp:
      application-path: /camunda
Свойство Описание

webapp.application-path

Контекст Камунда.РФ 7 Web App

История и аудит

camunda:
  bpm:
    history-level: full       # none | activity | audit | full
Свойство Описание

history-level

Уровень сохранения исторических данных

Job Executor (фоновые джобы)

camunda:
  bpm:
    job-execution:
      enabled: true
      core-pool-size: 3
      max-pool-size: 10
Свойство Описание

job-execution.enabled

Включение Job Executor

job-execution.core-pool-size

Базовое количество потоков

job-execution.max-pool-size

Максимальное количество потоков

Авторизация и безопасность

camunda:
  bpm:
    authorization:
      enabled: true
Свойство Описание

authorization.enabled

Включение авторизации Камунда.РФ 7

Метрики

camunda:
  bpm:
    metrics:
      enabled: true
      db-reporter-activate: true
Свойство Описание

metrics.enabled

Сбор метрик движка

db-reporter-activate

Сбор метрик в БД

Полный минимальный пример

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 для локальной разработки

  • Возможность легко переключиться на любую поддерживаемую БД