参考文章:Spring Boot 项目集成camunda流程引擎_springboot集成camunda-CSDN博客

Camunda部署方式

使用camunda开源工作流引擎有:通过docker运行、使用springboot集成、部署camunda发行包、基于源代码编译运行等多种方式。

文本重点介绍如何在Spring Boot应用程序中如何集成Camunda Platform开源流程平台,这也是项目中最为常见的一种使用方式。


部署Camunda工作流引擎(springboot方式)

1、创建新的 Maven 项目

项目名称命名为camunda7-springboot

2、添加 Camunda 平台和 Spring Boot 依赖项

本示例要使用camunda流程引擎、web界面、Rest服务接口

我们使用camunda7.19.0版本,该版本支持jdk8和springboot2。camunda和springboot版本的依赖对应关系,查看官方文档说明

Spring Boot Version Compatibility | docs.camunda.org

<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.camunda</groupId>
    <artifactId>camunda7-springboot</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <camunda.spring-boot.version>7.19.0</camunda.spring-boot.version>
        <spring-boot.version>2.7.9</spring-boot.version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <dependencies>
        <dependency>
            <groupId>org.camunda.bpm.springboot</groupId>
            <artifactId>camunda-bpm-spring-boot-starter-webapp</artifactId>
            <version>${camunda.spring-boot.version}</version>
        </dependency>
        <dependency>
            <groupId>org.camunda.bpm.springboot</groupId>
            <artifactId>camunda-bpm-spring-boot-starter-rest</artifactId>
            <version>${camunda.spring-boot.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
        </dependency>
        <dependency>
            <groupId>com.sun.xml.bind</groupId>
            <artifactId>jaxb-impl</artifactId>
            <version>2.3.6</version>
        </dependency>
    </dependencies>

    <build>
        <finalName>${project.artifactId}</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>3.4.7</version>
            </plugin>
            <!--指定JDK编译版本 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

3、配置 Spring Boot 项目

在项目中src/main/resources新建application.yaml

server:
  port: 8080
spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/camunda719?characterEncoding=UTF-8&useUnicode=true&useSSL=false&zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/Shanghai
    username: root
    password: root
    driver-class-name: com.mysql.cj.jdbc.Driver
camunda:
  bpm:
    database:
      type: mysql
      schema-update: true
    auto-deployment-enabled: false # 自动部署 resources 下的 bpmn文件
    admin-user:
      id: demo
      password: demo

这里我们设置了schema-update: true,启动会自动创建脚本,初始化后,我们在设置为false

创建一个数据库,否则启动会会找不到库

此配置将导致以下结果:

  1. 将创建具有提供的密码和名字的管理员用户“demo”
  2. 使用mysql数据库,启动时自动创建数据库,合计49张表

4、编写Spring Boot启动类

接下来,我们添加一个带有 main 方法的应用程序类,该方法将成为启动 Spring Boot 应用程序的入口点。该类上有@SpringBootApplication注解,它隐含地添加了几个方便的功能(自动配置、组件扫描等 - 参见 Spring Boot 文档)。

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.core.env.Environment;
 
@SpringBootApplication
public class Camunda7Application {
    public static void main(String... args) {
        ConfigurableApplicationContext application =  SpringApplication.run(Camunda7Application.class, args);
        Environment env = application.getEnvironment();
        String port = env.getProperty("server.port");
        String path = env.getProperty("server.servlet.context-path");
        if (path == null || "".equals(path)) {
            path = "/";
        }
        System.out.println("\n----------------------------------------------------------\n" +
                "\tCamunda7Application is running!\n" +
                "\tPort:\t" + port + "\n" +
                "\tPath:\t" + path + "\n" +
                "----------------------------------------------------------");
    }
}

5、启动Spring Boot工程

现在,当您在浏览器中打开 http://localhost:8080/ 时,您可以使用我们之前配置的登录名和密码“demo/demo”来访问 Camunda Web 应用程序。

能正常登录访问这个界面,表示基于springboot集成camunda成功了。


部署BPMN设计器

下载地址:https://downloads.camunda.cloud/release/camunda-modeler/5.19.0/camunda-modeler-5.19.0-win-x64.zip

下载流程设计器后camunda-modeler后,只需将下载内容解压缩到您选择的文件夹中即可。

成功解压缩后,对于 Windows 用户运行Camunda Modeler.exe,对于 Mac 用户或 Linux 用户运行.sh文件,启动流程建模器

设计BPMN流程

新建一个模板,选择Camunda7

设置两个人工任务节点,配置流程处理人为demo用户

点击左下角可查看xml内容

发布BPMN流程

点击流程设计器左下方的发布流程按钮,直接发布到springboot项目里面


验证camunda流程引擎

查看流程定义相关信息

现在,当您在浏览器中打开 http://localhost:8080/camunda/app/ ,您可以使用我们之前配置的登录名和密码“demo/demo”来访问 Camunda Web 应用程序

开启实例

访问首页,然后选择任务列表

http://localhost:8080/camunda/app/

我们点击开启实例选项,选择刚才流程定义key,点击start

因为我们用户名就是demo,所有在任务列表可以看到了

此时,我看打开mysql数据库表,查看camunda数据库表里的数据:打开流程定义发布表act_re_deployment,看到我们刚刚发布的这个流动定义模型

打开流程实例历史表act_hi_procinst,看到我们刚刚发起的这个流程实例数据。

打开流程待办任务表act_ru_task,多了一条demo用户待处理的任务。

通过camunda rest接口测试

以上我们通过camunda的web界面进行了发起流程测试验证,下面我们通过Camunda REST API的方式进行测试验证。Camunda Platform REST API官方说明文档:Camunda Platform REST API

查询流程定义

http://127.0.0.1:8080/engine-rest/process-definition

发起流程实例

http://127.0.0.1:8080/engine-rest/process-definition/key/{key}/start

发起调用

反参

我们再查看任务列表,可以看到已经成功创建实例,并开始第一个任务了

查询待办任务

通过上面接口得知,流程当前流转到了人工节点上,那么需要查询待办任务:返回所有的流程待办任务列表

完成待办提交流程

完成待办任务,提交流程往下走,提交流程的rest服务接口为:

Logo

更多推荐