Flowable 快速入門教程:SpringBoot 集成 Flowable + Flowable Modeler 導致自身 XML 掃描不到解決方案

Flowable 快速入門教程:SpringBoot 集成 Flowable + Flowable Modeler 導致自身 XML 掃描不到解決方案

前言

本文承接:Flowable 快速入門教程:SpringBoot 集成 Flowable + Flowable Modeler 流程配置可視化(超詳細)

建議:流程引擎與業務代碼分開成兩個分開,如果一定要再流程引擎項目中寫自己的代碼,發現自己 xml 掃描不到,請往下看。

手動創建 DataSource Bean

如果缺少 DataSourceBean,可以選擇手動創建

DruidDatsSourceConfig.java 部分

新建 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 包下

發佈了103 篇原創文章 · 獲贊 387 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章