flowable 整合 人大金仓数据库

flowable不支持人大金仓数据库,需要做一些自定义处理。

一、springboot2.x + flowable6.8 + kingbase

1、liquibase金仓数据库支持

import liquibase.database.DatabaseConnection;
import liquibase.database.core.PostgresDatabase;
import liquibase.exception.DatabaseException;

/**
 * liquibase 金仓数据库支持
 */
public class Kingbase8Database extends PostgresDatabase {
    public static final String PRODUCT_NAME = "KingbaseES";
    private static final int DEFAULT_TCP_PORT_NUMBER = 54321;

    @Override
    public String getShortName() {
        return "kingbase8"; // 返回一个标识符
    }

    @Override
    public Integer getDefaultPort() {
        return DEFAULT_TCP_PORT_NUMBER;
    }

    @Override
    protected String getDefaultDatabaseProductName() {
        return PRODUCT_NAME;
    }

    @Override
    public boolean isCorrectDatabaseImplementation(DatabaseConnection conn) throws DatabaseException {
        return PRODUCT_NAME.equalsIgnoreCase(conn.getDatabaseProductName());
    }

    @Override
    public String getDefaultDriver(String url) {
        if (url.startsWith("jdbc:kingbase8:")) {
            return "com.kingbase8.Driver";
        }
        return null;
    }
}

2、flowable配置里设置金仓数据库的数据库类型,根据金仓数据库安装的哪种兼容模式来设置,这里以Mysql为例。
liquibase注册金仓数据库支持。

import com.baomidou.mybatisplus.annotation.DbType;
import liquibase.database.DatabaseFactory;
import org.flowable.app.spring.SpringAppEngineConfiguration;
import org.flowable.common.engine.impl.AbstractEngineConfiguration;
import org.flowable.engine.impl.db.DbIdGenerator;
import org.flowable.spring.SpringProcessEngineConfiguration;
import org.flowable.spring.boot.EngineConfigurationConfigurer;
import org.springframework.context.annotation.Configuration;


/**
 * Flowable配置
 */
@Configuration
public class FlowableConfig implements EngineConfigurationConfigurer<SpringProcessEngineConfiguration> {
    @Override
    public void configure(SpringProcessEngineConfiguration engineConfiguration) {
        engineConfiguration.setActivityFontName("宋体");
        engineConfiguration.setLabelFontName("宋体");
        engineConfiguration.setAnnotationFontName("宋体");
        // 流程id生成处理
        engineConfiguration.setIdGenerator(new DbIdGenerator());

        if (DataSourceUtils.getCurrentDbType() == DbType.KINGBASE_ES) {
            // flowable设置金仓数据库的数据库类型
            SpringAppEngineConfiguration appEngineConfiguration = SpringUtils.getBean(SpringAppEngineConfiguration.class);
            appEngineConfiguration.setDatabaseType(AbstractEngineConfiguration.DATABASE_TYPE_MYSQL);
            // liquibase添加金仓数据库支持
            DatabaseFactory.getInstance().register(new Kingbase8Database());
        }
    }
}

3、application.yml 配置文件禁用flowable数据库自动建表

# flowable配置
flowable:
  # 是否自动建表
  databaseSchemaUpdate: false

二、springboot3.x + flowable7.1 + kingbase

1、flowable配置里设置金仓数据库的数据库类型,根据金仓数据库安装的哪种兼容模式来设置,这里以Mysql为例。

import com.baomidou.mybatisplus.annotation.DbType;
import org.flowable.app.spring.SpringAppEngineConfiguration;
import org.flowable.common.engine.impl.AbstractEngineConfiguration;
import org.flowable.engine.impl.db.DbIdGenerator;
import org.flowable.spring.SpringProcessEngineConfiguration;
import org.flowable.spring.boot.EngineConfigurationConfigurer;
import org.springframework.context.annotation.Configuration;

/**
 * Flowable配置
 */
@Configuration
public class FlowableConfig implements EngineConfigurationConfigurer<SpringProcessEngineConfiguration> {
    @Override
    public void configure(SpringProcessEngineConfiguration engineConfiguration) {
        engineConfiguration.setActivityFontName("宋体");
        engineConfiguration.setLabelFontName("宋体");
        engineConfiguration.setAnnotationFontName("宋体");
        engineConfiguration.setIdGenerator(new DbIdGenerator());

        if (DataSourceUtils.getCurrentDbType() == DbType.KINGBASE_ES) {
            // flowable设置金仓数据库的数据库类型
            SpringAppEngineConfiguration appEngineConfiguration = SpringUtils.getBean(SpringAppEngineConfiguration.class);
            appEngineConfiguration.setDatabaseType(AbstractEngineConfiguration.DATABASE_TYPE_MYSQL);
        }
    }
}

2、application.yml 配置文件禁用flowable数据库自动建表

# flowable配置
flowable:
  # 是否自动建表
  databaseSchemaUpdate: false

我来吐槽

*

*