springboot整合activity7(一)

一、Spring Boot 集成 Activiti7(工作流)

此章节首先完成后端的activiti整合,生成工作流所需数据库表,数据库采用mysql。

二、依赖

xml 复制代码
<dependencies>
    <!-- 引入Activiti7 -->
    <dependency>
        <groupId>org.activiti</groupId>
        <artifactId>activiti-spring-boot-starter</artifactId>
        <version>7.1.0.M4</version>
        <exclusions>
            <exclusion>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.activiti.dependencies</groupId>
        <artifactId>activiti-dependencies</artifactId>
        <version>7.1.0.M4</version>
        <type>pom</type>
    </dependency>
    <!-- 生成流程图 -->
    <dependency>
        <groupId>org.activiti</groupId>
        <artifactId>activiti-image-generator</artifactId>
        <version>7.1.0.M4</version>
    </dependency>
</dependencies>

首先排除掉mybatis依赖,因为使用的mybatis-plus依赖我们大部分都已引入,为了避免与activit7的maven依赖有冲突

三、配置文件修改

yaml 复制代码
spring:

  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    username: root
    password: "xxxxx"
    url: jdbc:mysql://localhost:3306/activity-demo?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8&rewriteBatchedStatements=true

  activiti:
    #1.flase:默认值。activiti在启动时,对比数据库表中保存的版本,如果没有表或者版本不匹配,将抛出异常
    #2.true: activiti会对数据库中所有表进行更新操作。如果表不存在,则自动创建
    #3.create_drop: 在activiti启动时创建表,在关闭时删除表(必须手动关闭引擎,才能删除表)
    #4.drop-create: 在activiti启动时删除原来的旧表,然后在创建新表(不需要手动关闭引擎)
    database-schema-update: true
    #检测历史表是否存在 activiti7默认没有开启数据库历史记录 启动数据库历史记录
    db-history-used: true
    #记录历史等级 可配置的历史级别有none, activity, audit, full
    #none:不保存任何的历史数据,因此,在流程执行过程中,这是最高效的。
    #activity:级别高于none,保存流程实例与流程行为,其他数据不保存。
    #audit:除activity级别会保存的数据外,还会保存全部的流程任务及其属性。audit为history的默认值。
    #full:保存历史数据的最高级别,除了会保存audit级别的数据外,还会保存其他全部流程相关的细节数据,包括一些流程参数等。
    history-level: full
    #校验流程文件,true表示自动部署resources下的processes文件夹里的流程文件
    check-process-definitions: false
    # id值是否使用uuid,false表示使用数据库自增值
    use-strong-uuids: true

springBoot启动类修改

  1. 排除 springSecurity

    java 复制代码
    @SpringBootApplication(exclude = {SecurityAutoConfiguration.class,  ManagementWebSecurityAutoConfiguration.class })

    启动类修改,排除以上类,因为activiti7深度依赖springSecurity,而我们这里不需要,故排除。

  2. SpringSecurityConfig.java

    一个空的springSecrity配置文件,不加会报错

    java 复制代码
    @Configuration
    public class SpringSecurityConfig extends WebSecurityConfigurerAdapter {
    }
  3. 实现UserDetailsService接口

    java 复制代码
    @Slf4j
    @Component
    public class SelfUserDetailsServiceImpl  implements UserDetailsService {
     
        @Override
        public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
            List<GrantedAuthority> authorities= AuthorityUtils.commaSeparatedStringToAuthorityList("");
            return new User(username,"",authorities);
        }
    }

这里排除SpringSecurity的方法略显丑陋,如果有更好的排除SpringSecurity的方法可以教一下我

初始化数据表

运行springboot项目启动类,第一次运行,会检查数据库是否有工作流所需表,如果没有,会自动生成,生成的表都act_开头,一共25张表,这里做一下基础介绍。

工作流相关表分为4类

  1. act_ge开头,存放通用数据、一些流程文件等

  2. act_hi开头,存放工作流程中的历史数据,如历史任务信息,历史流程参数等

  3. act_re开头,存放工作流流程定义和发布的信息

  4. act_ru开头,存放工作流当前正在进行流程的信息,一个流程走完,ru表会删除相关内容,查询历史信息就是act_hi中获取

注意:7.1.0.M4 版本自动生成的表字段不全,所以还需运行如下SQL:

sql 复制代码
-- 修复Activiti7的M4版本缺失字段Bug
-- ----------------------------
alter table ACT_RE_DEPLOYMENT add column PROJECT_RELEASE_VERSION_ varchar(255) DEFAULT NULL;
alter table ACT_RE_DEPLOYMENT add column VERSION_ varchar(255) DEFAULT NULL;
相关推荐
倚栏听风雨3 分钟前
lombook java: 找不到符号
后端
老华带你飞44 分钟前
物流信息管理|基于springboot 物流信息管理系统(源码+数据库+文档)
数据库·vue.js·spring boot
码财小子1 小时前
记一次服务器大并发下高延迟问题的定位
后端
我是小妖怪,潇洒又自在1 小时前
springcloud alibaba(九)Nacos Config服务配置
后端·spring·spring cloud
Victor3562 小时前
Netty(26)如何实现基于Netty的RPC框架?
后端
Victor3562 小时前
Netty(25)Netty的序列化和反序列化机制是什么?
后端
qq_12498707532 小时前
重庆三峡学院图书资料管理系统设计与实现(源码+论文+部署+安装)
java·spring boot·后端·mysql·spring·毕业设计
大学生资源网2 小时前
java毕业设计之“知语”花卉销售网站的设计与实现源码(源代码+文档)
java·mysql·毕业设计·源码·springboot
小鸡脚来咯3 小时前
Redis三大问题:穿透、击穿、雪崩(实战解析)
java·spring·mybatis