Spring Boot 项目集成 Camunda 流程引擎
1 Camunda BPM 简介
Camunda BPM 是一个基于 BPMN 2.0 标准的流程引擎,它不仅支持 BPMN 模型的设计和执行,还提供了 DMN(决策模型和符号)和 CMMN(案例管理模型和符号)的支持。Camunda BPM 提供了丰富的 API 和工具,可以轻松地集成到 Java 应用程序中。
2 集成 Camunda BPM 到 Spring Boot 项目
2.1 环境准备
2.1.1 软件环境
JDK 1.8 或更高版本
Maven 3.x 或 Gradle
Spring Boot 2.x
Camunda BPM 7.19.0
本次学习使用camunda7.19.0版本,该版本支持jdk8和springboot2。
camunda官方文档
camunda开源github下载地址
camunda流程设计器
2.1.2 数据库sql
将上面camunda开源下载完后,找到camunda-bpm-platform\engine\src\main\resources\org\camunda\bpm\engine\db\create下的sql文件
看自己用什么类型的数据就执行什么sql文件,本次学习我是采用的mysql数据库,所以我只需要执行这个七个文件,下面是执行完之后的结果,有49张表。
2.2 添加依赖和配置
在 Spring Boot 项目的 pom.xml 文件中添加 Camunda BPM 的依赖。
<dependency>
<groupId>org.camunda.bpm.springboot</groupId>
<artifactId>camunda-bpm-spring-boot-starter-rest</artifactId>
<version>7.19.0</version>
</dependency>
<dependency>
<groupId>org.camunda.bpm.springboot</groupId>
<artifactId>camunda-bpm-spring-boot-starter-webapp</artifactId>
<version>7.19.0</version>
</dependency>
如果启动项目,会报如下错误:
Field transactionManager in org.camunda.bpm.spring.boot.starter.configuration.impl.DefaultDatasourceConfiguration required a bean of type ‘org.springframework.transaction.PlatformTransactionManager’ that could not be found.
添加下面依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
application.yml配置(mysql版,需要根据自己选用是数据库自行配置)
server:
port: 8080
spring:
datasource:
url: jdbc:mysql://127.0.0.1:3306/ha-admin?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: false
auto-deployment-enabled: false # 自动部署 resources 下的 bpmn文件
admin-user:
id: demo
password: demo
3 部署 BPMN 模型
3.1 启动项目
按下面的顺序启动项目
项目启动成功,浏览器输入: http://localhost:8080/,然后输入配置中的id,password
能正常登录访问这个界面,表示基于springboot集成camunda成功了。
3.2 设计BPMN流程
解压camunda流程设计器的压缩包,可以看到
怎么使用可自行研究,也可百度,重点说一下这个
保存,REST endpoint输入:http://localhost:8080/engine-rest 然后点击部署
3.2 验证
回到Camunda webapp 点击 Tasklist
如果点击进不到下个界面,设置一下。
选择刚刚设计的的流程,发起一个流程实例,刷新,就可以查看到刚刚提交的流程待办任务了。
打开流程定义发布表act_re_deployment,看到我们刚刚发布的这个流动定义模型。
打开流程实例历史表act_hi_procinst,看到我们刚刚发起的这个流程实例数据。
打开流程待办任务表act_ru_task,多了一条demo用户待处理的任务。
4 camunda rest接口测试
用postman或者apifox验证测试
4.1 查询流程定义
http://localhost:8080/engine-rest/process-definition
4.2 发起流程实例
@RestController
@RequestMapping("/task")
public class TaskController {
@Autowired
private TaskService taskService;
@Autowired
private RuntimeService runtimeService;
/**
* 通过流程定义的key,发起一个实例流程
* @param processKey
* @return
*/
@GetMapping(value = "/startProcessInstanceByKey/{processKey}")
public String startProcessInstanceByKey(@PathVariable("processKey") String processKey) {
ProcessInstance instance = runtimeService.startProcessInstanceByKey(processKey);
return instance.getRootProcessInstanceId();
}
}
流程发起的rest接口为:http://{host}:{port}/{contextPath}/process-definition/key/{key}/start
今天总结到此为止,有兴趣的小伙伴,可以自行研究 camunda官方文档 ,另外推荐大佬文章:https://blog.csdn.net/wxz258/article/details/136279524