flowable工作流適配KingbaseES V8


目前,flowable支持mysql、postgreSQL、DB2、Oracle等數據庫,官方暫不支持國產數據庫KingbaseES。因項目需要,嘗試修改flowable 6.4支持KingbaseES V8,配置方法如下文。

1、數據配置

nexus私服倉庫上傳kingbaseES V8的jdbc驅動,同時配置pom文件
項目中配置數據庫連接,因為項目使用的是spring boot,配置如下:

datasource:
	driver-class-name:com.kingbase8.Driver
	url:jdbc:kingbase8://127.0.0.1:54321/TEST
	username:SYSTEM
	password:111

2、工作流引擎初始化

工作流初始化的時候會加載數據庫配置,會根據數據庫類型,加載項目下的差異化sql腳本,具體流程:org.flowable.app.engine.AppEngineConfiguration中的init方法:

protected void init() {
        initEngineConfigurations();
        initConfigurators();
        configuratorsBeforeInit();
        initCommandContextFactory();
        initTransactionContextFactory();
        initCommandExecutors();
        initIdGenerator();
        initExpressionManager();
        
        if (usingRelationalDatabase) {
            initDataSource();
        }
        
        if (usingRelationalDatabase || usingSchemaMgmt) {
            initSchemaManager();
            initSchemaManagementCommand();
        }

        initVariableTypes();
        initBeans();
        initTransactionFactory();

        if (usingRelationalDatabase) {
            initSqlSessionFactory();
        }

        initSessionFactories();
        initServices();
        initDataManagers();
        initEntityManagers();
        initDeployers();
        initAppDefinitionCache();
        initAppResourceConverter();
        initDeploymentManager();
        initClock();
        initIdentityLinkServiceConfiguration();
        initVariableServiceConfiguration();
        configuratorsAfterInit();
        initBusinessCalendarManager();
    }

其中initDataSource會初始化數據庫類型,調用initDatabaseType,initDatabaseType中獲取數據庫類型的方式如下

databaseType = databaseTypeMappings.getProperty(databaseProductName);

databaseTypeMappings是一個定義的Properties,存儲數據庫類型的映射,之后在initSqlSessionFactory 中調用

properties.load(getResourceAsStream(pathToEngineDbProperties()));
public String pathToEngineDbProperties() {
    return "org/flowable/common/db/properties/" + databaseType + ".properties";
}

會根據數據庫的類型查找具體的配置文件,然后加載進initMybatisConfiguration的配置,而配置文件中的寫的就是具體的分頁方式,如下是mysql.properties文件的內容

limitAfter=LIMIT #{maxResults} OFFSET #{firstResult}

金倉的分頁方式和mysql的一樣,所以我們之后可以共用

3、更改代碼適配金倉

如上分析我們只需要增加一個金倉的映射,並把映射的值設置為與mysql一致

在org.flowable.common.engine.impl.AbstractEngineConfiguration中添加如下代碼

public static final String DATABASE_TYPE_KINGBASEES = "mysql";

在getDefaultDatabaseTypeMappings映射中添加

databaseTypeMappings.setProperty("KingbaseES", DATABASE_TYPE_KINGBASEES);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM