工作流Activiti7适配人大金仓数据库

发布时间 2023-09-28 12:06:27作者: 摩斯
参考https://blog.csdn.net/qq_43617977/article/details/128099822
参考https://help.kingbase.com.cn/v8/development/client-interfaces-frame/activiti/index.html
参考https://blog.csdn.net/weixin_39827145/article/details/106664921
activiti依赖是
<dependency>
<groupId>org.activiti.dependencies</groupId>
<artifactId>activiti-dependencies</artifactId>
<version>7.1.0.M2</version>
<scope>import</scope>
<type>pom</type>
</dependency>
金仓数据库依赖是
<dependency>
<groupId>com.kingbase8</groupId>
<artifactId>kingbase8</artifactId>
<scope>system</scope>
<version>8.6.0</version>
<systemPath>${basedir}\src\lib\kingbase8-8.6.0.jar</systemPath>
</dependency>
修改activiti-engine-7.1.0.M2.jar,以适配金仓数据库
1、下载源码activiti-engine-7.1.0.M2-sources.jar,解压后只保留org源码包和里面的pom.xml文件,用idea打开项目
2、进行部分源码修改(添加国产数据库类型)
a.修改三个类在org.activiti.engine.impl.cfg.ProcessEngineConfigurationImpl,增加成员变量 <504行>
b.修改org.activiti.engine.impl.cfg.ProcessEngineConfigurationImpl类的getDefaultDatabaseTypeMappings()方法 <758行>
c.修改org.activiti.engine.impl.AbstractQuery类的addOrder(String column, String sortOrder, NullHandlingOnOrder nullHandlingOnOrder)方法 <147行>
d.在create文件夹下创建数据库表相关的文件activiti.kingbase.create.engine.sql
在create文件夹下创建数据库表相关的文件activiti.kingbase.create.history.sql
在drop目录中创建删除数据库表的文件 activiti.kingbase.drop.engine.sql
在drop目录中创建删除数据库表的文件 activiti.kingbase.drop.history.sql
e.在properties目录中追加人大金仓数据库配置文件kingbase.properties,如果缺少该文件,启动项目时会报异常
3、替换activiti-engine-7.1.0.M2.jar相应的class和sql等文件,项目中使用本地方式引入jar包依赖
4、如果运行项目提示org.activiti.engine.ActivitiException: couldn't deduct database type from database product name 'KingbaseES'
第2部的b点需要使用databaseTypeMappings.setProperty("KingbaseES", "kingbase"),而不是databaseTypeMappings.setProperty("kingbase", "kingbase")
5、数据库源配置添加如下配置:
spring.activiti.database-type=kingbase
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.url=jdbc:kingbase8://*.*.*.*:54321/db
spring.datasource.username=flow
spring.datasource.password=flow@2023
spring.datasource.driver-class-name=com.kingbase8.Driver
spring.datasource.druid.driver-class-name=com.kingbase8.Driver