商业版集成国产数据库:电科金仓

# 前置条件

# 安装金仓数据库(V8R6C9B14),支持金仓数据库Mysql模式

docker run -tid --privileged --name kingbase  -p 54321:54321 -e ENABLE_CI=no -e NEED_START=yes -e DB_USER=root -e DB_PASSWORD=root -e DB_MODE=mysql 686e0dfb177e

# 安装金仓数据库(V8R6C9B14),支持金仓数据库Postgresql模式

docker run -tid --privileged --name kingbase  -p 54321:54321 -e ENABLE_CI=no -e NEED_START=yes -e DB_USER=root -e DB_PASSWORD=root -e DB_MODE=pg 686e0dfb177e
  1. 安装JDBC(kingbase8-8.6.0.jar)驱动到Maven私服,若没有可以安装到本地,执行如下命令:
mvn install:install-file -Dfile="kingbase8-8.6.0.jar" "-DgroupId=cn.com.kingbase"  "-DartifactId=kingbase8" "-Dversion=8.6.0" "-Dpackaging=jar"
  1. 安装好数据库之后,打开数据库开发工具,创建数据库flyflow,新建模式flyflow

# 修改代码配置

  1. 默认分支是不支持金仓数据库的,需要切换到分支:**-gcdb
  2. 先将主分支代码合并到国产数据库分支:**-gcdb
  3. 打开module:flyflow-flowable的pom.xml文件,注释掉达梦模块的依赖
<!--        <dependency>-->
<!--            <groupId>cc.flyflow.flowable.dm</groupId>-->
<!--            <artifactId>flyflow-flowable-dm</artifactId>-->
<!--        </dependency>--> 

打开金仓的模块依赖:

     <dependency>
            <groupId>cc.flyflow.flowable.kingbase</groupId>
            <artifactId>flyflow-flowable-kingbase8</artifactId>
        </dependency>
  1. 打开module:flyflow-biz的pom.xml文件,注释掉达梦模块的依赖
<!--        <dependency>-->
<!--            <groupId>org.anyline</groupId>-->
<!--            <artifactId>anyline-data-jdbc-dm</artifactId>-->
<!--        </dependency>-->

打开金仓的模块依赖:

         <dependency>
    <groupId>org.anyline</groupId>
    <artifactId>anyline-data-jdbc-kingbase</artifactId>
</dependency>
  1. 打开application.yml文件,修改数据源配置为金仓数据库,这里要注意下方的三个flyflow,一定要配置一样,大小写也一样
  datasource:
    url: jdbc:kingbase8://192.168.31.86:54321/flyflow?currentSchema=flyflow
    driver-class-name: com.kingbase8.Driver
    ##数据库账号
    username: root
    ##数据库密码
    password: root
    hikari:
      connection-timeout: 10000
      validation-timeout: 3000
      idle-timeout: 60000
      login-timeout: 5
      max-lifetime: 60000
      maximum-pool-size: 30
      minimum-idle: 10
      read-only: false
      schema: flyflow  #金仓数据库 指定schema 并且 currentSchema 和database一致

# 导入数据库表

  1. 打开根目录下的 /sql/kingbase/执行导入对应模式的脚本即可

# 修改代码配置

默认的配置是支持mysql模式,若需要支持pg模式,以下几点需要修改

  1. org/flowable/common/engine/impl/AbstractEngineConfiguration.java:193:修改为databaseTypeMappings.setProperty("KingbaseES", "postgres");
  2. 修改liquibase.database.core.MySQLDatabase文件里涉及到kingbase相关的代码改成别的,比如kingbase1,主要有三处修改:getDefaultDatabaseProductName,getShortName,PRODUCT_NAME,找到上面几个地方,将kingbase改为kingbase1(不用区分大小写)
  3. 修改liquibase.database.core.PostgresDatabase文件里涉及到kingbase1或者KingbaseES1的单词删除最后的1
  4. 打开\flyflow-upms\src\main\resources\mapper\DeptMapper.xml文件,搜索关键词kingbase,可以看到每个sql里都有两个注释mysql模式pg模式,注释掉mysql相关sql,打开pg相关sql

# 注意事项

  1. 若项目中有达梦相关的报错,可以自行引入达梦相关的包来消除或者删除达梦相关的代码和引入
  2. 若删除代码,别遗漏此处MessageConverterConfig中达梦相关的代码