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;
相关推荐
Ivanqhz9 小时前
矩阵引擎的数据流模式与 BM1684X 架构
java·服务器·网络·深度学习·神经网络
小蒜学长9 小时前
大学生健康饮食的智慧管理系统(代码+数据库+LW)
java·后端·springboot·大学生·健康饮食
计算机毕设定制辅导-无忧学长9 小时前
《基于SpringBoot的中学教师数字胜任力测评网站的设计与实现》
java·vue.js·spring boot·mysql·中学教师数字胜任力测评网站
智慧物业老杨9 小时前
人机协同的物业服务重构:技术落地路径与系统化思考
java·大数据·人工智能·重构·系统架构
小蒜学长9 小时前
基于Java的论坛数据可视化分析系统的设计与实现(代码+数据库+LW)
java·spring boot·后端·数据可视化·论坛系统
许彰午9 小时前
52-useWebSocket自动重连
java·低代码·架构
青山木9 小时前
RocketMQ 入门到原理(一):整体架构与消息的生命周期
java·分布式·后端·中间件·架构·rocketmq
黑马程序员毕设9 小时前
基于微信小程序的二手交易平台设计与实现报告
前端·人工智能·spring boot·后端·考研
xcl09259 小时前
上海24小时自助健身房系统软件开发实战与架构解析
java·spring boot
苏渡苇9 小时前
Spring Insight 里如何把 Span 收成一条链路
spring boot·spring·spring cloud·系统监控·apm