【二十二】springboot整合activiti7(1) 实战演示篇

        本章接着后面几章会进行一个springboot+activiti7的整合,记录自己的学习过程,由于demo篇幅过长,会分好几章进行描述,等写完后,在文章末尾会附上后面几章的链接,本章主要描述demo的需求以及最终效果的一个演示,具体搭建以及实现在后面几章进行依次描述。

qq交流群导航——>231378628

目录

一、Demo描述

二、准备工作

三、效果展示


 springboot篇章整体栏目: 


【一】springboot整合swagger(超详细

【二】springboot整合swagger(自定义)(超详细)

【三】springboot整合token(超详细)

【四】springboot整合mybatis-plus(超详细)(上)

【五】springboot整合mybatis-plus(超详细)(下)

【六】springboot整合自定义全局异常处理

【七】springboot整合redis(超详细)

【八】springboot整合AOP实现日志操作(超详细)

【九】springboot整合定时任务(超详细)

【十】springboot整合redis实现启动服务即将热点数据保存在全局以及redis(超详细)

【十一】springboot整合quartz实现定时任务优化(超详细)

【十二】springboot整合线程池解决高并发(超详细,保你理解)

【十三】springboot整合异步调用并获取返回值(超详细)

【十四】springboot整合WebService(超详细)

【十五】springboot整合WebService(关于传参数)(超详细)

【十六】springboot整合WebSocket(超详细)

【十七】springboot整合WebSocket实现聊天室(超详细)

【十八】springboot实现自定义全局异常处理

【十九】springboot整合ElasticSearch实战(万字篇)

【二十】springboot整合过滤器实战

【二十一】springboot整合拦截器实战并对比过滤器

【二十二】springboot整合activiti7(1) 实战演示篇

【二十三】springboot整合spring事务详解以及实战

【二十四】springboot使用EasyExcel和线程池实现多线程导入Excel数据

【二十五】springboot整合jedis和redisson布隆过滤器处理缓存穿透

【二十六】springboot实现多线程事务处理_springboot多线程事务

【二十七】springboot之通过threadLocal+参数解析器实现同session一样保存当前登录信息的功能


一、Demo描述

         场景:假设某某公司现在进行了一个管理上的整顿,如果一个产品经理想要提需求,除了要满足甲方以外,还必须让码农们满意,这时就可以有一个审批过程。如下:

【二十二】springboot整合activiti7(1) 实战演示篇_第1张图片        后面就通过整合activiti的方式实现如上的一个审批流程。

        实现的效果就是:从产品经理发起流程,后面每个节点都可以通过或者退回,退回就是退回到产品经理步骤。然后实现一个流程记录跟踪和流程图跟踪功能。除了审批通过和退回初始节点外,其他的操作后面空了再慢慢学习。


二、准备工作

1、第一步

        准备数据库。

需要activi的表以及自己的业务表,activiti的表在部署时会自动创建,现在先不管,本次demo涉及的业务表有如下几个:

表名 描述
user 用户表
role 角色表
user_role 用户角色关联表
demand 需求表
CREATE TABLE `demand` (
  `id` varchar(100) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '主键',
  `status` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL COMMENT '流程状态,-1是未启动,0是填写表单,1是组长审批,2是开发经理审批,3是项目经理审批,4是结束',
  `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL COMMENT '需求名称',
  `content` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL COMMENT '需求具体内容',
  `salt` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL COMMENT '盐字段',
  `taskid` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '任务id',
  `createuser` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '发起人',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8_bin;
CREATE TABLE `role` (
  `id` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '主键',
  `role` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '角色名称'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8_bin;

【二十二】springboot整合activiti7(1) 实战演示篇_第2张图片

CREATE TABLE `user` (
  `id` varchar(255) COLLATE utf8_bin NOT NULL COMMENT '主键',
  `username` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '用户名',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8_bin;

【二十二】springboot整合activiti7(1) 实战演示篇_第3张图片

CREATE TABLE `user_role` (
  `id` varchar(255) COLLATE utf8_bin NOT NULL COMMENT '主键',
  `userid` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '用户id',
  `roleid` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '角色id',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8_bin;

 【二十二】springboot整合activiti7(1) 实战演示篇_第4张图片

2、第二步

        idea安装插件,绘制流程图。

绘制activiti可以识别的流程图并实现部署,activiti默认可以部署.bpmn和**.bpmn20.xml结尾的文件。

idea有很多画bpmn图的插件,我选择的是activiti BPMN visualizer。

【二十二】springboot整合activiti7(1) 实战演示篇_第5张图片

安装好之后,重启idea,在创建的springboot项目的resources资源目录下右键新建一个如下文件。

【二十二】springboot整合activiti7(1) 实战演示篇_第6张图片

 【二十二】springboot整合activiti7(1) 实战演示篇_第7张图片

创建完成后会生成一个xml文件,在这个文件右键,选择view..........就可以打开流程图了。

【二十二】springboot整合activiti7(1) 实战演示篇_第8张图片

在图中通过右键添加进行绘制。

【二十二】springboot整合activiti7(1) 实战演示篇_第9张图片

最终根据demo的需求场景绘制了如上流程图。菱形是排他网关,长方形是用户事件

每个节点以及线上面的具体参数后面再讲,此处先讲一个东西参数最好不要用重名的,不然会出问题。 

3、第三步

        创建项目、导入所需依赖。

这是我项目的目录结构

【二十二】springboot整合activiti7(1) 实战演示篇_第10张图片

然后导入这个demo所需要的依赖,如下:


        
            org.springframework.boot
            spring-boot-starter-web
        

        
            org.springframework.boot
            spring-boot-starter-test
            test
        

        
        
            org.activiti
            activiti-spring-boot-starter
            7.1.0.M3.1
            
                
                    
                    mybatis
                    org.mybatis
                
            
        

        
            com.baomidou
            mybatis-plus-boot-starter
            3.4.2
        

        
            cn.hutool
            hutool-all
            5.7.22
        

        
        
            mysql
            mysql-connector-java
            8.0.11
        

        
            org.springframework.boot
            spring-boot-starter-jdbc
        
        
            org.projectlombok
            lombok
        

        
        
        
            org.activiti
            activiti-image-generator
            5.20.0
        

    

几个坑需要注意一下,上面有在备注里面标注,比如,mybatisplus和activiti的冲突问题以及之后的预览流程图功能的依赖会导致展示不全的问题等。 

4、修改配置文件

【二十二】springboot整合activiti7(1) 实战演示篇_第11张图片


server:
  port: 8080

spring:
  datasource:
    username: root
    password: 123456
    #    加上nullCatalogMeansCurrent=true才能自动创建activiti需要的表
    url: jdbc:mysql://localhost:3306/activiti?useUnicode=true&useSSL=false&characterEncoding=utf8&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true

  activiti:
    database-schema-update: true
    check-process-definitions: true
    #  注意,如果activiti后面加上了/,就要求启动的时候process文件夹中需要有流程定义文件
    #  是指定activiti流程描述文件的前缀(路径),启动时,activiti就会去寻找此路径下的流程描述文件,并且自动部署
    process-definition-location-prefix: classpath:/activiti/
    #  suffix 是一个String数组,表示描述文件的默认后缀名,默认**.bpmn和**.bpmn20.xml
    #    process-definition-location-suffixes:
    #      - **.bpmn
    #      - **.bpmn20.xml
    #  Activiti7历史数据无法自动插入,开启下面两个配置
    history-level: audit
    db-history-used: true
#  mapper.xml文件所在路径
mybatis-plus:
  mapper-locations: classpath*:mapper/**/*Mapper.xml
#  configuration:
#    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #开启sql日志

具体的描述我都有写在注释上面。


三、效果展示

        准备工作完成之后就可以开始编码实现了。demo代码有点多,下面先只展示效果。

1、首先模拟登录张三(产品经理,id为1),进入我的需求界面提出需求。

【二十二】springboot整合activiti7(1) 实战演示篇_第12张图片

【二十二】springboot整合activiti7(1) 实战演示篇_第13张图片

【二十二】springboot整合activiti7(1) 实战演示篇_第14张图片

2、新增完成后,流程是未启动状态,张三点击发起流程,并点击提交审核按钮,选择审批人点击保存。

【二十二】springboot整合activiti7(1) 实战演示篇_第15张图片

【二十二】springboot整合activiti7(1) 实战演示篇_第16张图片【二十二】springboot整合activiti7(1) 实战演示篇_第17张图片

3、此时点击查看流程按钮。【二十二】springboot整合activiti7(1) 实战演示篇_第18张图片

4、可以看到流程现在在组长那里,就是数据库配置的李四,然后登录李四的账号,进入待办界面,查看待办列表。【二十二】springboot整合activiti7(1) 实战演示篇_第19张图片【二十二】springboot整合activiti7(1) 实战演示篇_第20张图片 5、点击退回按钮,退回给张三重新写需求。

【二十二】springboot整合activiti7(1) 实战演示篇_第21张图片【二十二】springboot整合activiti7(1) 实战演示篇_第22张图片

6、登录张三(id:1)账号,重新提交需求。【二十二】springboot整合activiti7(1) 实战演示篇_第23张图片【二十二】springboot整合activiti7(1) 实战演示篇_第24张图片【二十二】springboot整合activiti7(1) 实战演示篇_第25张图片 7、点击提交审核,继续选择审批人。

【二十二】springboot整合activiti7(1) 实战演示篇_第26张图片【二十二】springboot整合activiti7(1) 实战演示篇_第27张图片

8、登录李四的账号,重新审批(id:2) 【二十二】springboot整合activiti7(1) 实战演示篇_第28张图片【二十二】springboot整合activiti7(1) 实战演示篇_第29张图片 9、这次选择同意【二十二】springboot整合activiti7(1) 实战演示篇_第30张图片【二十二】springboot整合activiti7(1) 实战演示篇_第31张图片

10、再次查看流程图【二十二】springboot整合activiti7(1) 实战演示篇_第32张图片

11、登录王五的账号(id:3)【二十二】springboot整合activiti7(1) 实战演示篇_第33张图片

【二十二】springboot整合activiti7(1) 实战演示篇_第34张图片

12、点击同意【二十二】springboot整合activiti7(1) 实战演示篇_第35张图片【二十二】springboot整合activiti7(1) 实战演示篇_第36张图片13、查看流程图【二十二】springboot整合activiti7(1) 实战演示篇_第37张图片

14、登录赵六的账号进行审批,(id:4)【二十二】springboot整合activiti7(1) 实战演示篇_第38张图片【二十二】springboot整合activiti7(1) 实战演示篇_第39张图片

15、点击通过【二十二】springboot整合activiti7(1) 实战演示篇_第40张图片【二十二】springboot整合activiti7(1) 实战演示篇_第41张图片

16、再次回到张三的需求列表,流程状态已结束【二十二】springboot整合activiti7(1) 实战演示篇_第42张图片【二十二】springboot整合activiti7(1) 实战演示篇_第43张图片

大致效果就是这样。后面的章节会进行每一个功能的代码展示以及描述,等空了慢慢写。

----------------------------------------------------END----------------------------------------------------------


你可能感兴趣的:(springboot整合篇,spring,boot,后端,java)