SpringBoot整合Flowable

因为工作需要使用流程引擎,所以记录一下SpringBoot整合Flowable流程引擎及后续开发使用。前期项目工程笔记使用的是个人搭建的以SpringBoot和SpringCloud为基础的架构,因主要用于学习,所以整个架构为微服务的结构,但采用整体打包的形式方便自己部署。此处采用Spring Boot版本为2.3.0.RELEASE, Flowable版本为V6.5.0。


一、工程依赖dependency

通用依赖 Dependencies 工程

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-dependencies</artifactId>
    <version>2.3.0.RELEASE</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>

Flowable工程

<!-- SpringBoot项目基础依赖 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
</dependency>
<!-- Flowable 流程引擎 -->
<dependency>
    <groupId>org.flowable</groupId>
    <artifactId>flowable-spring-boot-starter-process</artifactId>
    <version>6.5.0</version>
</dependency>
<!-- 数据库驱动、连接池 -->
<dependency>
    <groupId>com.zaxxer</groupId>
    <artifactId>HikariCP</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>tomcat-jdbc</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- MyBatis Plus -->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
</dependency>

二、SpringBoot启动类

创建一个简简单单的启动类,不需要太多花里胡哨的操作。微服务项目可导入相应的依赖jar包添加启动类注解。

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * @author smile-jt
 * @Created 2021/8/17 9:47
 */
@SpringBootApplication
public class FlowBusinessApplication {

    private static final Logger logger = LoggerFactory.getLogger(FlowBusinessApplication.class);

    public static void main(String[] args) {
        SpringApplication.run(FlowBusinessApplication.class, args);
        logger.info("--------------------- FlowBusinessApplication Successful Start ---------------------");
    }
}

三、配置文件

配置文件主要为数据库配置、数据库连接池配置、Flowable配置, 此处使用yml配置文件。

spring:
  application:
    name: business-flow
  main:
    allow-bean-definition-overriding: on
  datasource:
    type: com.zaxxer.hikari.HikariDataSource
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/my-flow?useUnicode=true&characterEncoding=utf8&autoReconnect=true&useSSL=false&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true
    username: root
    password: root
    hikari:
      minimum-idle: 5
      idle-timeout: 600000
      maximum-pool-size: 10
      auto-commit: on
      pool-name: MyHikariCP
      max-lifetime: 1800000
      connection-timeout: 30000
      connection-test-query: SELECT 1
flowable:
  # 定义任务异步
  async-executor-activate: false
  # flowable会对数据库中所有表进行更新操作。如果表不存在,则自动创建
  database-schema-update: true
  # 自动部署验证设置:true-开启(默认)、false-关闭
  check-process-definitions: false
  # 历史记录级别由低到高分别为:none, activity, audit, full
  history-level: full

四、启动项目

直接运行第二部创建的启动类FlowBusinessApplication,理想情况启动成功(若不能正常启动,面向百度、必应、谷歌,具体问题具体解决),控制台输出:

INFO  cn.smile.business.flow.FlowBusinessApplication - Started FlowBusinessApplication in 12.506 seconds (JVM running for 13.718)
INFO  cn.smile.business.flow.FlowBusinessApplication - --------------------- FlowBusinessApplication Successful Start ---------------------

查看相应数据库,Flowable成功创建46张数据表。