Spring Boot集成工作流activiti(1)—基础模块创建

原文链接:https://www.longkui.site/program/development/spring-boot-activiti1/5486/
0.背景
工作中,一项任务需要用到工作流,首先接触的是ruoyi-vue-activiti。原作者对工作流进行了简单封装,然后制作出了ruoyi-vue-acitiviti,中间有些细节没太搞明白,今天这篇文章记录下用SpringBoot集成activity过程。

工具:IDEA、mysql、spring boot(2.7.7)、activiti-spring-boot-starter(7.1.0.M6)、mybatis(2.1.4)

1.创建项目
我们创建一个spring boot项目,初始的pom文件如下:

<?xml version="1.0" encoding="UTF-8"?>


4.0.0

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.7.7</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>org.example</groupId>
<artifactId>activiti</artifactId>
<version>1.0-SNAPSHOT</version>

<properties>
    <java.version>1.8</java.version>
</properties>

<!--依赖-->
<dependencies>
    <!--spring-boot-web-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!-- mysql  -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <scope>runtime</scope>
    </dependency>
    <!--mybatis -->
    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>2.1.4</version>
    </dependency>

    <!--activiti依赖-->
    <dependency>
        <groupId>org.activiti</groupId>
        <artifactId>activiti-spring-boot-starter</artifactId>
        <version>7.1.0.M6</version>
    </dependency>
    <dependency>
        <groupId>org.activiti.dependencies</groupId>
        <artifactId>activiti-dependencies</artifactId>
        <version>7.1.0.M6</version>
        <type>pom</type>
    </dependency>
</dependencies>
然后在resuorces文件夹下创建配置文件application.yml。

初始的配置文件参考如下:

server:
port: 8090 #端口

spring配置

spring:
#mysql配置
datasource:
url: jdbc:mysql://localhost:3306/activiti?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver

#工作流activiti配置
activiti:
#名字
database-schema: 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
#自动检查、部署流程定义文件
check-process-definitions: false
# asyncExecutorActivate是指activiti在流程引擎启动就激活AsyncExecutor,异步:true-开启(默认)、false-关闭
async-executor-activate: true
同时,需要对应创建一个数据库,名字就是上面配置的名字。

然后创建启动类:

package site.longkui.activiti;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Activiti {
public static void main(String[] args) {
SpringApplication.run(Activiti.class, args);
}

}

2.增加服务类
上面代码我们如果启动的话会报错,我们需要创建服务类。这里我们创建了四个文件夹,controller、entity、mapper、service,用来后期进行扩展。

我们在sevice层创建如下代码:

package site.longkui.activiti.service;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.AuthorityUtils;
import org.springframework.security.core.userdetails.User;
import org.springframework.stereotype.Service;
import java.util.List;

@Service
public class UserService {

public User findOneUserByName(String username){
    List<GrantedAuthority> authorities = AuthorityUtils.commaSeparatedStringToAuthorityList("admin");
    return new User(username,"",authorities);
}

}
然后去实现这个方法:

package site.longkui.activiti.service.impl;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.stereotype.Component;
import site.longkui.activiti.service.UserService;

@Component
public class UserDetailsServiceImpl implements UserDetailsService {
@Autowired
UserService userService;

@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
    return userService.findOneUserByName(username);
}

}
然后启动项目,就可以看到我们创建的数据表中生成了新的25张新表。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值