话不多说, 先来看看pom文件
<dependencies>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-spring-boot-starter-basic</artifactId>
<version>6.0.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
<!--maven打包时扫描mapper.xml-->
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.*</include>
</includes>
</resource>
</resources>
</build>
接下来配置Activiti流程引擎:
import org.activiti.spring.SpringAsyncExecutor;
import org.activiti.spring.SpringProcessEngineConfiguration;
import org.activiti.spring.boot.AbstractProcessEngineAutoConfiguration;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.transaction.PlatformTransactionManager;
import javax.sql.DataSource;
import java.io.IOException;
/**
* @author LiJiaJun
* @version 1.0
* @date 19-9-4 上午 10:46
*/
@Configuration//声名为配置类,继承Activiti抽象配置类
public class ActivitiConfig extends AbstractProcessEngineAutoConfiguration {
@Bean
@Primary
@ConfigurationProperties(prefix = "spring.datasource")
public DataSource activitiDataSource() {
return DataSourceBuilder.create().build();
}
@Bean
public SpringProcessEngineConfiguration springProcessEngineConfiguration(
PlatformTransactionManager transactionManager,
SpringAsyncExecutor springAsyncExecutor) throws IOException {
return baseSpringProcessEngineConfiguration(
activitiDataSource(),
transactionManager,
springAsyncExecutor);
}
}
配置好后启动项目,准备踩第一个坑:
解决办法:配置数据源时url前加上jdbc-;如:jdbc-url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF8&serverTimezone=UTC&nullCatalogMeansCurrent=true
如图:
设置好了继续启动项目, 准备踩第二个坑:
解决办法:启动类上加上 @SpringBootApplication(exclude = SecurityAutoConfiguration.class)即可;因为activiti-spring-boot-starter-basic中引用了spring-boot-starter-security。
注意exclude的SecurityAutoConfiguration.class引用地址是: importorg.activiti.spring.boot.SecurityAutoConfiguration;
接下来再次运行程序, 踩第三个坑:
原来在Activiti中,默认bpmn文件是放在resource下的processes文件夹由于我们没有创建所以报错. 我们只需要创建一个即可.注意: 文件夹不能为空,必须要有文件,不然还是会报错. 我们可以使用yml来解决此问题.
接着我们运行程序便可成功啦, 去数据库查看便可发现多了28张表.
不容易呀, 光是这三个坑就耗费了我一天的时间, 简直难受的一批, 希望在此处能帮到你