之前第(一)篇我们已经演示过了怎么从官网生成一个camunda的spring boot项目demo,这篇我们讲解camunda如何集成到真实的springboot或springcloud项目中,并通过camunda自带的bpm平台走通简单的流程
参考资料:
Camunda Cockpit plugin 404,require.js:1 Uncaught Error: Script error for “admin-plugin-adminPlugins_camunda cockpit 加载不出来-CSDN博客
文章目录
- 一、新建Spring Boot项目
- 二、引入依赖
- 1.指明版本
- 2.引入camunda依赖
- 三、新建mysql数据库
- 四、修改配置文件
- 1.本地
- 2.远程
- 五、启动项目
- 1.问题一:mybatis版本冲突
- 2.问题二:camunda页面有些静态资源报错404
- 六、认识bpm平台
- 1.用户管理(系统管理)
- 1.用户列表
- 2.新建用户
- 2.流程管理(驾驶舱)
- 3.任务管理
一、新建Spring Boot项目
新建一个Spring Boot项目,项目结构可以参考下图。
由于我这里是将camunda集成到一个Spring Cloud项目中,所以这里创建的其实是属于整个项目中的一个微服务,他可以被其他的业务服务所调用。
二、引入依赖
1.指明版本
在最外层的pom文件的<dependencyManagement></dependencyManagement>
中加入camunda版本管理,指定后面引入的camunda依赖版本为7.19.0
<dependency><groupId>org.camunda.bpm</groupId><artifactId>camunda-bom</artifactId><version>7.19.0</version><scope>import</scope><type>pom</type>
</dependency>
2.引入camunda依赖
由于我们和camunda接口相关的service层实现都是放在service模块下的,所以这里我们在service模块的pom文件引入camunda依赖
<dependency><groupId>org.camunda.connect</groupId><artifactId>camunda-connect-core</artifactId>
</dependency><dependency><groupId>org.camunda.bpm</groupId><artifactId>camunda-engine-plugin-connect</artifactId>
</dependency><dependency><groupId>org.camunda.bpm</groupId><artifactId>camunda-engine-plugin-spin</artifactId>
</dependency><dependency><groupId>org.camunda.spin</groupId><artifactId>camunda-spin-dataformat-all</artifactId>
</dependency><dependency><groupId>org.camunda.bpm</groupId><artifactId>camunda-engine</artifactId>
</dependency>
启动类需要加注解@EnableProcessApplication,才会在首次启动的时候去自动建表,所以在web模块加入下面的依赖
<dependency><groupId>org.camunda.bpm.springboot</groupId><artifactId>camunda-bpm-spring-boot-starter</artifactId>
</dependency>
<dependency><groupId>org.camunda.bpm.springboot</groupId><artifactId>camunda-bpm-spring-boot-starter-rest</artifactId>
</dependency><dependency><groupId>org.camunda.bpm.springboot</groupId><artifactId>camunda-bpm-spring-boot-starter-webapp</artifactId>
</dependency>
三、新建mysql数据库
本项目中用的是mysql数据库,我们先新建一个空的数据库
四、修改配置文件
由于是spring cloud项目,这里我们的配置文件分为远程配置文件和本地配置文件
1.本地
本地只留一些基础配置,大部分的配置,特别是可能会动态修改的配置,都放到了远程nacos进行管理
bootstarp.yml
# Tomcat
server:port: 20491
# Spring
spring:application:# 应用名称name: apaas-camundaprofiles:# 环境配置active: @profileActive@
2.远程
剩下的一些关于springboot、数据源、mybatis、redis、swagger等各种基本的配置都放在远程配置文件,这里就不过多介绍。
主要注意:
- mysql的连接配置里,要加下面这段配置,原因在之前第(一)篇里有说
-
camunda配置
camunda.bpm:admin-user:id: xxxpassword: xxx # 自动部署resources下面的bpmn文件auto-deployment-enabled: true
五、启动项目
1.问题一:mybatis版本冲突
这里启动的时候报了如下的错
大概的意思就是说mybatis和mybatis-plus的版本冲突了
这里我们使用Dependency Analyzer
插件进行分析
可以看到camunda7.19里自带了mybatis 3.5.6依赖,然后我们又引入了mybatis-plus 3.5.3.2的依赖,结合报错,我们这里尝试降低mybatis-plus的版本为3.5.1
-
先排除原来我们引入的mybatis-plus 3.5.3.2
<exclusions><exclusion><artifactId>mybatis-plus-boot-starter</artifactId><groupId>com.baomidou</groupId></exclusion><exclusion><artifactId>mybatis-plus-extension</artifactId><groupId>com.baomidou</groupId></exclusion><exclusion><artifactId>mybatis-spring-boot-starter</artifactId><groupId>org.mybatis.spring.boot</groupId></exclusion><exclusion><artifactId>mybatis-plus-core</artifactId><groupId>com.baomidou</groupId></exclusion> </exclusions>
-
引入3.5.1
<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-core</artifactId><version>3.5.1</version> </dependency> <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-extension</artifactId><version>3.5.1</version> </dependency> <dependency><artifactId>mybatis-plus-boot-starter</artifactId><groupId>com.baomidou</groupId><version>3.5.1</version> </dependency> <dependency><artifactId>mybatis-spring-boot-starter</artifactId><groupId>org.mybatis.spring.boot</groupId> </dependency>
2.问题二:camunda页面有些静态资源报错404
启动成功后,我们直接访问后端端口,就可以进入camunda bpm页面,默认用户的账号密码是我们前面配置文件配置的。
但是进入后,我们再点击比如流程管理页面后,可能会一片空白,看控制台报了404的错,如下图所示
然后这个问题其实目前我发现只在本地用idea启动的时候会这样,因为我部署到服务器后并不会报错
解决办法,参考:Camunda Cockpit plugin 404,require.js:1 Uncaught Error: Script error for “admin-plugin-adminPlugins_camunda cockpit 加载不出来-CSDN博客
修改下启动配置即可,如下图所示
六、认识bpm平台
登录完后我们看到首页是下图这样,关于这三个板块的介绍在第(一)篇中已经有大致介绍,现在我们再具体讲解一下。
1.用户管理(系统管理)
我们点击Admin模块,即可进入用户管理页面
1.用户列表
点击List of Users,查看camunda的用户列表
这里就可以看到当前系统是存在一个用户,这个用户就是我们前面配置文件里配的默认用户
这个列表对应的数据库表是 ACT_ID_USER
如下图所示
之后这个表需要把我们springcloud项目里的用户表的数据对应同步过来,这样camunda服务和我们整个项目里的系统管理服务就能共用一份用户数据了
2.新建用户
点击Create New User
,即可新建用户,如下图所示,表单的字段对应数据库表里的字段
由于我们后面要直接同步系统服务的用户,所以就不在这个bpm页面里去新增了。同步的方案就是通过写定时任务调用camunda新增用户的api实现。
2.流程管理(驾驶舱)
点击Cockpit
,即可进入流程管理页面
进入后,我们可以看到下图的页面。现在由于还没部署流程,所以全都是0
接下来我们先画一个简单的流程图【第(二)篇有讲怎么使用camunda modeler工具画图】,然后放到camunda服务里部署
如下图所示,任务节点我们设置一个定量,直接设置成默认用户
将bpmn文件放到resource
下,重启项目,流程图便会自动部署
注意:
这里自动部署我开始是失败了,检查了配置文件配置的都配问题,后来我去除掉启动类的@EnableProcessApplication
注解后,就成功了
对应的数据库表是 ACT_RE_DEPLOYMENT
和 ACT_RE_PROCDEF
页面继续往下查看流程可以看到流程详细信息,如下图所示
3.任务管理
点击 Tasklist
进入任务管理页面
这里我们可以看到当前没有流程正在进行。我们可以点击右上角的 Start process
启动一个流程实例
选择我们刚刚部署的流程来启动,Business Key
是业务唯一标识,用来唯一标识一个流程实例的,后续我们与业务服务结合的时候,这个属性就很重要,这里我们只是测试走流程,所以可以随意填写
然后下面还有 Add a variable
,可以设置流程变量,我们可以暂时不填
点击 Start
启动 ,看到右下角出现启动成功的提醒
然后我们还需要配置一下任务列表的过滤规则,我们直接点击创建一个简单的过滤规则,如下图所示,如果点击后报错500,重启一下camunda服务应该就可以解决
然后我们就可以看到刚刚启动的流程当前的任务,当前节点走到了 任务节点
这个节点,等待 znak
用户去审批
对应的数据库表有
- 当前任务表
ACT_RU_TASK
- 当前流程实例表
ACT_RE_PROCDEF
- 历史任务表
ACT_HI_TASKINST
- 历史流程实例表
ACT_HI_PROCINST
由于当前用户就是登录的znak,所以我们可以直接去完成任务,如下图所示
在完成任务前,我们还可以针对这个任务,添加评论,如下图所示,对应的数据库表是 ACT_HI_COMMENT
点击 Complete
按钮后,任务完成,同时由于后面接着的就是流程结束节点,所以可以看到任务列表已经没有任务了,然后看数据库表里 带 RU
的当前表,数据都已经清空,而带 HI
的历史表,数据里的状态字段都修改为已完成了。
这样,我们就算走通刚刚部署的这个流程图了