Camunda流程引擎的安装使用
接下来,我们添加一个带有 main 方法的应用程序类,该方法将成为启动 Spring Boot 应用程序的入口点。使用camunda开源工作流引擎有:通过docker运行、使用springboot集成、部署camunda发行包、基于源代码编译运行等多种方式。文本重点介绍如何在Spring Boot应用程序中如何集成Camunda Platform开源流程平台,这也是项目中最为常见的一种使用方式。时
参考文章: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
创建一个数据库,否则启动会会找不到库
此配置将导致以下结果:
- 将创建具有提供的密码和名字的管理员用户“demo”
- 使用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服务接口为:
更多推荐
所有评论(0)