依赖

<!--添加activiti和SpringBoot整合的依赖
            MyBatis版本会有冲突,所以需要排除,所需数据库的依赖根据需求添加-->
<dependency>
    <groupId>org.activiti</groupId>
    <artifactId>activiti-spring-boot-starter</artifactId>
    <version>7.0.0.SR1</version>
    <exclusions>
        <exclusion>
            <artifactId>commons-io</artifactId>
            <groupId>commons-io</groupId>
        </exclusion>
        <exclusion>
            <artifactId>commons-lang3</artifactId>
            <groupId>org.apache.commons</groupId>
        </exclusion>
        <exclusion>
            <artifactId>mybatis</artifactId>
            <groupId>org.mybatis</groupId>
        </exclusion>
    </exclusions>
</dependency>
<!--activiti可以绘制流程的的依赖-->
<dependency>
    <groupId>org.activiti</groupId>
    <artifactId>activiti-image-generator</artifactId>
    <version>7.0.0.SR1</version>
    <exclusions>
        <exclusion>
            <artifactId>commons-io</artifactId>
            <groupId>commons-io</groupId>
        </exclusion>
    </exclusions>
</dependency>

安装Activiti环境

  • 在idea插件中安装绘图插件 actiBPM

  • 解决中文乱码

  • 在IDEA中将File–>Settings–>Editor–>File Encodings修改为UTF-8

  • 在IDEA的Help–>Edit Custom VM Options中末尾添加-Dfile.encoding=UTF-8

  • 在IDEA的安装目录的bin目录下将idea.exe.vmoptions和idea64.exe.vmoptions两个文件末尾添加-Dfile.encoding=UTF-8

  • 重启idea

配置文件

spring:
  application:
    name: actspringboot
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/activiti?useUnicode=true&characterEncoding=utf-8&useSSL=false&autoReconnect=true&serverTimezone=UTC
    username: root
    password: 0
  activiti:
    # false:默认值。activiti在启动时,会对比数据库表中保存的版本。如果没有表或者版本不匹配,将抛出异常
    # true:activiti会对数据库中所有表进行更新操作,如果表不存在,则会自动创建
    # create_drop:在activiti启动时创建表,在关闭时删除表(必须手动关闭引擎,才能删除表)
    # drop-create:在activiti启动时删除原来的旧表,然后再创建新表(不需要手动关闭引擎)
    # 线上一般使用false,开发中使用true
    database-schema-update: true
    # 自动部署验证设置:true-开启(默认)、false-关闭
    check-process-definitions: false
    # 开启历史表
    db-history-used: true
    # 历史记录存储等级
    history-level: full

useP6s

spring:
  datasource:
    driver-class-name: com.p6spy.engine.spy.P6SpyDriver
    url: jdbc:p6spy:mysql://127.0.0.1:3306/activi?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false&zeroDateTimeBehavior=convertToNull
    username: root
    password: 0
    hikari:
      minimum-idle: 5
      maximum-pool-size: 9
      auto-commit: true
      idle-timeout: 30000
      pool-name: Weblog-HikariCP
      max-lifetime: 1800000
      connection-timeout: 30000
      connection-test-query: SELECT 1

# # activiti验证自动部署(默认开启),activiti会自动部署processes目录下的任何BPMN 2.0流程定义
# 如果开启,需要在resources下创建processes文件夹,并在其中创建流程定义(例如:one-task-process.bpmn20.xml)
# 否则启动项目时会报错:class path resource [processes/] cannot be resolved to URL because it does not exist
#spring.activiti.check-process-definitions=false
  activiti:
    check-process-definitions: false
    
    database-schema-update: false
  • 只是在Spring Boot项目中添加依赖,就会在幕后发生很多事情:
    1. 自动创建了内存数据库(如果没有配置spring.datasource.url的话),并传递给Activiti流程引擎配置
    2. 创建并暴露了Activiti ProcessEngine bean(Activiti核心类)
    3. 所有的Activiti服务都暴露为Spring bean(如RuntimeService、TaskService等)
    4. 创建了Spring Job Executor并且,processes目录下的任何BPMN 2.0流程定义都会被自动部署。