1 首先引入activiti依賴
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.5.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.wuk</groupId>
<artifactId>activiti</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>activiti-demo</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-spring-boot-starter-basic</artifactId>
<version>6.0.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
2 application.yml配置
spring:
datasource:
url: jdbc:mysql://127.0.0.1:3306/activiti?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true
username: root
password: 123456
driver-class-name: com.mysql.jdbc.Driver
type: com.zaxxer.hikari.HikariDataSource
hikari:
minimum-idle: 5
## 空閒連接存活最大時間,默認600000(10分鐘)
idle-timeout: 600000
## 連接池最大連接數,默認是10
maximum-pool-size: 100
## 此屬性控制從池返回的連接的默認自動提交行爲,默認值:true
auto-commit: true
## 此屬性控制池中連接的最長生命週期,值0表示無限生命週期,默認1800000即30分鐘
max-lifetime: 1800000
## 數據庫連接超時時間,默認30秒,即30000
connection-timeout: 30000
connection-test-query: SELECT 1
jpa:
database: mysql
generate-ddl: false
hibernate:
ddl-auto: none
naming:
physical-strategy: org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy
show-sql: true
database-platform: org.hibernate.dialect.MySQL55Dialect
open-in-view: false
activiti:
database-schema-update: true
## 不加載bpmn文件
check-process-definitions: false
3 啓動類
package com.example.demo;
import org.activiti.spring.boot.SecurityAutoConfiguration;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication( exclude = SecurityAutoConfiguration.class)
public class ActivitiDemoApplication {
public static void main(String[] args) {
SpringApplication.run(ActivitiDemoApplication.class, args);
}
}
注意的問題
1. 啓動類上主要排除衝突類
@SpringBootApplication( exclude = SecurityAutoConfiguration.class)
否則就報錯:
2. 如果使用的數據庫版本是8.0,第一次啓動可能會出現如下問題
Cause: java.sql.SQLSyntaxErrorException: Table '*.act_ge_property' doesn't exist
原因:
原因是mysql版本問題,mysql8.xxx以上驅動會出現這個問題,因爲mysql使用schema標識庫名而不是catalog,因此mysql會掃描所有的庫來找表,如果其他庫中有相同名稱的表,activiti就以爲找到了,本質上這個表在當前數據庫中並不存在。
設置nullCatalogMeansCurrent=true,表示mysql默認當前數據庫操作,在mysql-connector-java 5.xxx該參數默認爲true,在6.xxx以上默認爲false,因此需要設置nullCatalogMeansCurrent=true。
解決方法:
添加:&nullCatalogMeansCurrent=true
jdbc:mysql://127.0.0.1:3306/activiti?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true
3 默認加載bpmn的路徑如下:
目錄名稱爲processes
否則報錯如下: