Flowable 快速入門教程:SpringBoot 集成 Flowable + Flowable Modeler 導致自身 XML 掃描不到解決方案
前言
本文承接:Flowable 快速入門教程:SpringBoot 集成 Flowable + Flowable Modeler 流程配置可視化(超詳細)
建議:流程引擎與業務代碼分開成兩個分開,如果一定要再流程引擎項目中寫自己的代碼,發現自己 xml 掃描不到,請往下看。
手動創建 DataSource Bean
如果缺少 DataSourceBean,可以選擇手動創建
新建 DatabaseAutoConfiguration.java
把 DatabaseConfiguration.java
文件中的 liquibase
這個方法複製到自己這,這個是進行數據錶轉換的部分
@Configuration
public class DatabaseAutoConfiguration {
private static final Logger LOGGER = LoggerFactory.getLogger(DatabaseAutoConfiguration.class);
protected static final String LIQUIBASE_CHANGELOG_PREFIX = "ACT_DE_";
@Bean
public Liquibase liquibase(DataSource dataSource) {
LOGGER.info("Configuring Liquibase");
Liquibase liquibase = null;
try {
DatabaseConnection connection = new JdbcConnection(dataSource.getConnection());
Database database = DatabaseFactory.getInstance().findCorrectDatabaseImplementation(connection);
database.setDatabaseChangeLogTableName(LIQUIBASE_CHANGELOG_PREFIX + database.getDatabaseChangeLogTableName());
database.setDatabaseChangeLogLockTableName(LIQUIBASE_CHANGELOG_PREFIX + database.getDatabaseChangeLogLockTableName());
liquibase = new Liquibase("META-INF/liquibase/flowable-modeler-app-db-changelog.xml", new ClassLoaderResourceAccessor(), database);
liquibase.update("flowable");
return liquibase;
} catch (Exception e) {
throw new InternalServerErrorException("Error creating liquibase database", e);
} finally {
closeDatabase(liquibase);
}
}
private void closeDatabase(Liquibase liquibase) {
if (liquibase != null) {
Database database = liquibase.getDatabase();
if (database != null) {
try {
database.close();
} catch (DatabaseException e) {
LOGGER.warn("Error closing database", e);
}
}
}
}
}
配置修改
mybatis:
# 新增 modeler-mybatis-mappings xml 掃描
mapper-locations: mapper/*/*.xml, classpath*:mapper/*.xml, classpath:/META-INF/modeler-mybatis-mappings/*.xml
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
# 參數配置
configuration-properties:
# 配置流程引擎參數,詳情可見 DatabaseConfiguration
blobType: BLOB
boolValue: TRUE
# 不要設置庫名,否則會出現雙庫名 bug
prefix: ''
啓動器修改
把引用的 DatabaseConfiguration
改爲 DatabaseAutoConfiguration
@Import(value={
// 引入修改的配置
ApplicationConfiguration.class,
AppDispatcherServletConfiguration.class,
// 引入 DatabaseConfiguration 表更新轉換
// DatabaseConfiguration.class,
// 引入 DatabaseAutoConfiguration 表更新轉換
DatabaseAutoConfiguration.class})
// 開啓註冊中心
@EnableDiscoveryClient
@ComponentScan(basePackages = {"com.springcloud.*"})
@MapperScan("com.springcloud.*.dao")
@SpringBootApplication(exclude={SecurityAutoConfiguration.class})
public class FlowableApplication {
public static void main(String[] args) {
SpringApplication.run(FlowableApplication.class, args);
}
}
效果
表更新
調用自己的接口
調用流程引擎接口
結尾
參考項目:https://gitee.com/linjinp-spring-cloud/linjinp-spring-cloud
文件位置:
DatabaseAutoConfiguration.java:flowable-demo 模塊下的 flowable.conf 包下
接口:flowable-demo 模塊下的 flowable.api 包下