A-A+
SpringBoot整合Flowable6.4
大量的配置文件让人很烦躁,尤其是某个项目中无处不在却怎么也找不到的配置文件,所以之前的示例项目也是时候改成SpringBoot了。
基于上一篇的示例,首先在Pom文件中新增加DataSource、Flowable和其它一些将要用到的配置:
<!-- datasource -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.2</version>
</dependency>
<!-- flowable -->
<dependency>
<groupId>org.flowable</groupId>
<artifactId>flowable-spring-boot-starter-process</artifactId>
<version>6.4.1</version>
</dependency>
<dependency>
<groupId>org.flowable</groupId>
<artifactId>flowable-json-converter</artifactId>
<version>6.4.1</version>
</dependency>
<!-- hutool -->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-core</artifactId>
<version>4.6.1</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
然后,配置DataSource:
@Configuration
@EnableTransactionManagement
public class DataSourceConfig {
@Primary
@Bean(name = "dataSource")
@ConditionalOnBean(PropertiesConfigurer.class)
public DataSource getDataSource() throws Exception {
DruidDataSource dataSource = new DruidDataSource();
//PropertiesConfigurer是一个获得配置文件属性的持久类
dataSource.setDriverClassName(PropertiesConfigurer.getProperty("db.driver"));
dataSource.setUrl(PropertiesConfigurer.getProperty("db.url"));
dataSource.setUsername(PropertiesConfigurer.getProperty("db.user"));
dataSource.setPassword(PropertiesConfigurer.getProperty("db.password"));
dataSource.setInitialSize(1);
dataSource.setMinIdle(1);
dataSource.setMaxActive(20);
dataSource.setFilters("stat");
return dataSource;
}
@Primary
@Bean(name = "transactionManager")
public DataSourceTransactionManager getDataSourceTransactionManager(@Qualifier("dataSource")DataSource dataSource) {
DataSourceTransactionManager dataSourceTransactionManager = new DataSourceTransactionManager();
dataSourceTransactionManager.setDataSource(dataSource);
return dataSourceTransactionManager;
}
}
配置Flowable:
@Configuration
public class FlowableConfig {
@Primary
@Bean(name = "processEngineConfiguration")
public SpringProcessEngineConfiguration getSpringProcessEngineConfiguration(@Qualifier("dataSource") DataSource dataSource, @Qualifier("transactionManager")DataSourceTransactionManager transactionManager) {
SpringProcessEngineConfiguration configuration = new SpringProcessEngineConfiguration();
configuration.setDataSource(dataSource);
configuration.setTransactionManager(transactionManager);
configuration.setDatabaseSchemaUpdate("true");
configuration.setAsyncExecutorActivate(true);
configuration.setCustomPostDeployers(new ArrayList<EngineDeployer>(){
private static final long serialVersionUID = 4041439225480991716L;
{
add(new RulesDeployer());
}
});
return configuration;
}
}
配置一下数据库连接字符串,指向一个空库,启动App,就会开始自动创建所需表,如下图:

这里有两个地方值得注意一下:
1. 如果使用flowable-spring-boot-starter,就相当于引入了Flowable全家桶,运行程序后会将所有的表创建出来,如下图:

2. 不需要再像之前使用Spring的时候,将7大接口全都声明一遍,可以在项目中直接使用。
以后有空的话,再看看starter的源码。以上,如果有错误,欢迎探讨和指正。
