1,引入依赖:
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<!--flowable工作流依赖-->
<dependency>
<groupId>org.flowable</groupId>
<artifactId>flowable-spring-boot-starter-basic</artifactId>
<version>6.4.1</version>
</dependency>
引入工作流需要的依赖,这里为什么还引入了mybatis的依赖,我感觉我是被逼的,因为在使用flowable 启动项目生成工作流数据表的时候报错,也就是flowable还存在小坑。但是这并不影响开发,只要引入mybatis 依赖就可以了。
2,配置flowable
@Configuration
public class FlowableConfig implements EngineConfigurationConfigurer<SpringProcessEngineConfiguration> {
@Override
public void configure(SpringProcessEngineConfiguration springProcessEngineConfiguration) {
springProcessEngineConfiguration.setActivityFontName("宋体");
springProcessEngineConfiguration.setLabelFontName("宋体");
springProcessEngineConfiguration.setAnnotationFontName("宋体");
}
@Bean
public ProcessEngine getProcessEngine(){
ProcessEngineConfiguration pec = new StandaloneProcessEngineConfiguration();
pec.setJdbcDriver("****");
pec.setJdbcUrl("****");
pec.setJdbcUsername("***");
pec.setJdbcPassword("***");
pec.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE);
pec.setAsyncExecutorActivate(false);
// pec.setDatabaseSchema("base.");
//
// pec.setDatabaseTablePrefix("base.");
pec.setDatabaseSchemaUpdate("true");
ProcessEngine processEngine = pec.buildProcessEngine();
return processEngine;
}
}
这里说一下,有的人也许会问为什么不在配置文件里去配置flowable的参数,在这里抱歉的告诉客官 我尝试几次没成功,无奈只能在配置启动class。
但是还是存在问题。
问题描述:
1-1:pec.setDatabaseSchemaUpdate("true"); 刚开始我只配置了 这行代码,但是项目运行报错,【表或视图不存在】,根据参数描述 这可以自动生成工作流所需要的表结构的哇,为什么,不行呢?
1-2:pec.setDatabaseTablePrefix("base.");又配置了这个属性;从属性描述 上可以看出这是 表的前缀啊,开始我很单纯的配置了 base 但是没有点(注意这个base是我的数据库表前缀,不是你的哦,根据自己情况配置);然后兴高采烈的启动项目,duang,报错!!!!baseACT_ID_USER ......... 具体错误忘记了,我你妈,居然需要加上点,一个点;熊了;
经过这顿折腾,再试试;项目成功启动,工作流表也生成了。高兴啊;
1-3:配置不变,重启项目,duang!!!全是错误》》》》什么表已存在、索引已被使用等等 各种数据异常扑面而来;
这是怎么了??怎么了??我以为把这段配置pec.setDatabaseSchemaUpdate("true"); 改成false就可以了,但是又出现新问题 flowable版本不正确,这里我引入的是 6.4.1的,报错是db version 5.99.0.0的版本,数据库版本低了??然并不是,这个5.99.0.0 版本是人家默认的,咋办?
最终几经尝试这个配置是这样子的
如果工程数据库不存在工作流表,配置是这样的
@Bean
public ProcessEngine getProcessEngine(){
ProcessEngineConfiguration pec = new StandaloneProcessEngineConfiguration();
pec.setJdbcDriver("");
pec.setJdbcUrl("");
pec.setJdbcUsername("");
pec.setJdbcPassword("");
pec.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE);
pec.setAsyncExecutorActivate(false);
// pec.setDatabaseSchema("base.");
//
pec.setDatabaseTablePrefix("base.");
pec.setDatabaseSchemaUpdate("true");
ProcessEngine processEngine = pec.buildProcessEngine();
return processEngine;
}
把这行代码 pec.setDatabaseTablePrefix("base."); 放开,生成工作流表结构;
如果数据库存在了 工作流表结构,这行代码就注释掉;
总结:
这里只是我遇到的问题,仅供参考,如果客官有好的方法,请不吝赐教,在此拜谢了;