前言
随着信创工具不断发展,工作中我们经常遇到系统需要去适配信创软件情况,本文主要介绍了flowable工作流适配人大金仓数据库。
一、为什么需要适配
flowable支持的数据库有h2、mysql、Oracle、PostgreSQL和DB2。由此可见人大金仓数据库flowable本身是不支持的。flowable支持PostgreSQL数据库,同时人大金仓数据库也支持PostgreSQL,因此我们适配时只需要将人大金仓的配置修改为PostgreSQL即可
二、适配步骤
1.引入PostgreSQL
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.2.27</version>
</dependency>
2.修改数据源
driverClassName: org.postgresql.Driver
type: com.zaxxer.hikari.HikariDataSource
url: 数据库地址
username: 用户名
password: 密码
3.创建flowable配置类
创建抽象类FlowableConfig继承org.flowable.common.engine.AbstractEngineConfiguration,具体配置如下:
package com.flowable.config;
import org.flowable.common.engine.impl.AbstractEngineConfiguration;
import java.util.Properties;
/**
* @author baylor
* @date 2023/12/15
*/
public abstract class FlowableConfig extends AbstractEngineConfiguration {
public static Properties getDefaultDatabaseTypeMappings() {
Properties databaseTypeMappings = new Properties();
databaseTypeMappings.setProperty("H2", "h2");
databaseTypeMappings.setProperty("HSQL Database Engine", "hsql");
databaseTypeMappings.setProperty("MySQL", "mysql");
databaseTypeMappings.setProperty("MariaDB", "mysql");
databaseTypeMappings.setProperty("Oracle", "oracle");
databaseTypeMappings.setProperty("PostgreSQL", "postgres");
databaseTypeMappings.setProperty("Microsoft SQL Server", "mssql");
databaseTypeMappings.setProperty("db2", "db2");
databaseTypeMappings.setProperty("DB2", "db2");
databaseTypeMappings.setProperty("DB2/NT", "db2");
databaseTypeMappings.setProperty("DB2/NT64", "db2");
databaseTypeMappings.setProperty("DB2 UDP", "db2");
databaseTypeMappings.setProperty("DB2/LINUX", "db2");
databaseTypeMappings.setProperty("DB2/LINUX390", "db2");
databaseTypeMappings.setProperty("DB2/LINUXX8664", "db2");
databaseTypeMappings.setProperty("DB2/LINUXZ64", "db2");
databaseTypeMappings.setProperty("DB2/LINUXPPC64", "db2");
databaseTypeMappings.setProperty("DB2/LINUXPPC64LE", "db2");
databaseTypeMappings.setProperty("DB2/400 SQL", "db2");
databaseTypeMappings.setProperty("DB2/6000", "db2");
databaseTypeMappings.setProperty("DB2 UDB iSeries", "db2");
databaseTypeMappings.setProperty("DB2/AIX64", "db2");
databaseTypeMappings.setProperty("DB2/HPUX", "db2");
databaseTypeMappings.setProperty("DB2/HP64", "db2");
databaseTypeMappings.setProperty("DB2/SUN", "db2");
databaseTypeMappings.setProperty("DB2/SUN64", "db2");
databaseTypeMappings.setProperty("DB2/PTX", "db2");
databaseTypeMappings.setProperty("DB2/2", "db2");
databaseTypeMappings.setProperty("DB2 UDB AS400", "db2");
databaseTypeMappings.setProperty("CockroachDB", "cockroachdb");
return databaseTypeMappings;
}
}
总结
按照上面配置完成后,flowable就能够正常适配人大金仓数据库。因为flowable和人大金仓都适配PostgreSQL,因此适配的关键点在于将人大金仓相关配置修改为PostgreSQL的。