详解SpringCloud集成Camunda7.19实现工作流审批(三)

[复制链接]
发表于 2024-12-6 03:13:02 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
之前第(一)篇我们已经演示过了怎么从官网天生一个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项目

新建一个Spring Boot项目,项目结构可以参考下图。
由于我这里是将camunda集成到一个Spring Cloud项目中,所以这里创建的其实是属于整个项目中的一个微服务,他可以被其他的业务服务所调用。

二、引入依靠

1.指明版本

在最外层的pom文件的<dependencyManagement></dependencyManagement>中加入camunda版本管理,指定后面引入的camunda依靠版本为7.19.0

  1. <dependency>
  2.     <groupId>org.camunda.bpm</groupId>
  3.     <artifactId>camunda-bom</artifactId>
  4.     <version>7.19.0</version>
  5.     <scope>import</scope>
  6.     <type>pom</type>
  7. </dependency>
复制代码
2.引入camunda依靠

由于我们和camunda接口相关的service层实现都是放在service模块下的,所以这里我们在service模块的pom文件引入camunda依靠

  1. <dependency>
  2.     <groupId>org.camunda.connect</groupId>
  3.     <artifactId>camunda-connect-core</artifactId>
  4. </dependency>
  5. <dependency>
  6.     <groupId>org.camunda.bpm</groupId>
  7.     <artifactId>camunda-engine-plugin-connect</artifactId>
  8. </dependency>
  9. <dependency>
  10.     <groupId>org.camunda.bpm</groupId>
  11.     <artifactId>camunda-engine-plugin-spin</artifactId>
  12. </dependency>
  13. <dependency>
  14.     <groupId>org.camunda.spin</groupId>
  15.     <artifactId>camunda-spin-dataformat-all</artifactId>
  16. </dependency>
  17. <dependency>
  18.     <groupId>org.camunda.bpm</groupId>
  19.     <artifactId>camunda-engine</artifactId>
  20. </dependency>
复制代码
启动类需要加注解@EnableProcessApplication,才会在首次启动的时候去自动建表,所以在web模块加入下面的依靠
  1. <dependency>
  2.     <groupId>org.camunda.bpm.springboot</groupId>
  3.     <artifactId>camunda-bpm-spring-boot-starter</artifactId>
  4. </dependency>
  5. <dependency>
  6.     <groupId>org.camunda.bpm.springboot</groupId>
  7.     <artifactId>camunda-bpm-spring-boot-starter-rest</artifactId>
  8. </dependency>
  9. <dependency>
  10.     <groupId>org.camunda.bpm.springboot</groupId>
  11.     <artifactId>camunda-bpm-spring-boot-starter-webapp</artifactId>
  12. </dependency>
复制代码
三、新建mysql数据库

本项目中用的是mysql数据库,我们先新建一个空的数据库

四、修改设置文件

由于是spring cloud项目,这里我们的设置文件分为远程设置文件和本地设置文件
1.本地

本地只留一些基础设置,大部分的设置,特别是可能会动态修改的设置,都放到了远程nacos举行管理
bootstarp.yml
  1. # Tomcat
  2. server:
  3.   port: 20491
  4. # Spring
  5. spring:
  6.   application:
  7.     # 应用名称
  8.     name: apaas-camunda
  9.   profiles:
  10.     # 环境配置
  11.     active: @profileActive@
复制代码
2.远程

剩下的一些关于springboot、数据源、mybatis、redis、swagger等各种基本的设置都放在远程设置文件,这里就不外多先容。
主要注意:


  • mysql的毗连设置里,要加下面这段设置,原因在之前第(一)篇里有说



  • camunda设置
    1. camunda.bpm:
    2.   admin-user:
    3.     id: xxx
    4.     password: xxx   
    5.   # 自动部署resources下面的bpmn文件
    6.   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
    1. <exclusions>
    2.     <exclusion>
    3.         <artifactId>mybatis-plus-boot-starter</artifactId>
    4.         <groupId>com.baomidou</groupId>
    5.     </exclusion>
    6.     <exclusion>
    7.         <artifactId>mybatis-plus-extension</artifactId>
    8.         <groupId>com.baomidou</groupId>
    9.     </exclusion>
    10.     <exclusion>
    11.         <artifactId>mybatis-spring-boot-starter</artifactId>
    12.         <groupId>org.mybatis.spring.boot</groupId>
    13.     </exclusion>
    14.     <exclusion>
    15.         <artifactId>mybatis-plus-core</artifactId>
    16.         <groupId>com.baomidou</groupId>
    17.     </exclusion>
    18. </exclusions>
    复制代码
  • 引入3.5.1
    1. <dependency>
    2.     <groupId>com.baomidou</groupId>
    3.     <artifactId>mybatis-plus-core</artifactId>
    4.     <version>3.5.1</version>
    5. </dependency>
    6. <dependency>
    7.     <groupId>com.baomidou</groupId>
    8.     <artifactId>mybatis-plus-extension</artifactId>
    9.     <version>3.5.1</version>
    10. </dependency>
    11. <dependency>
    12.     <artifactId>mybatis-plus-boot-starter</artifactId>
    13.     <groupId>com.baomidou</groupId>
    14.     <version>3.5.1</version>
    15. </dependency>
    16. <dependency>
    17.     <artifactId>mybatis-spring-boot-starter</artifactId>
    18.     <groupId>org.mybatis.spring.boot</groupId>
    19. </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的历史表,数据里的状态字段都修改为已完成了。

如许,我们就算走通刚刚部署的这个流程图了
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表