关于整合DM,上一篇帖子我发现比较复杂,一般人难以接收,所以是尝试了一种完美解决DM兼容问题,不会报任何错误的一种方法
Activiti 6.0-7.0-8.0文件可能略有不同但是应该都是可以的
1.替换连接池
alibaba druid 1.1.3以下的版本对达梦部分语法不是很支持,所以项目中使用连接池1.1.3以下版本的建议直接替换掉成最新版本,对DM的语法支持度比较好
<!--阿里数据库连接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.23</version>
</dependency>
这边我替换成1.2.23
2.增加对DM数据库的支持
因为国产数据库的完善,他的JDBC.JAR已经上传到MAVEN仓库,所以我们直接获取即可
<!-- https://mvnrepository.com/artifact/com.dameng/DmJdbcDriver18 -->
<dependency>
<groupId>com.dameng</groupId>
<artifactId>DmJdbcDriver18</artifactId>
<version>8.1.3.140</version>
</dependency>
3.Activiti代码改造
因为DM对Oracle语法兼容度是相当不错的,所以我们想办法让Activiti将DM数据库当成Oracle即可
这边就改造一个文件即可,我们在上面图中的maven里面找到org.activiti.engine.impl.cfg底下的
ProcessEngineConfigurationImpl.class文件
找到他之后idea右上角可能会提示可以下载源码,
我们把源码下载下来之后直接复制,在自己的项目中依据同目录下java打包的时候会自动替换相同名称文件的原则,把这个包在自己项目中建立并把源码复制进去像这样,
之后更改他的源码,之更改这一句,DM DBMS原来写的是Oracle,这里将他改为DM DBMS,这是DM的数据类型,改完之后activiti就改造这一个地方即可
上面搞完了之后这句话大概率会报错,原因是找不到javax包中的实体类
我们将JAR包中添加如下maven
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
</dependency>
先加上上面的看看原来项目有没有引用,没有引用的话在加版本号,一般就有,这是JPA的东西,Activiti本身就是有的,最好用它默认的,实在没有你就加下面的:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.3.7.Final</version>
</dependency>
4.yml改造
增加jpa支持
# 数据源配置
spring:
jpa:
properties:
hibernate:
dialect: org.hibernate.dialect.Oracle10gDialect
show-sql: ture
open-in-view: false
修改DM驱动密码,根据自己原有的,我这里因为有主从,不要copy,就换换四大件就行:
# 数据源配置
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driverClassName: dm.jdbc.driver.DmDriver
druid:
# 主库数据源
master:
url: jdbc:dm://127.0.0.1:5236/xxx?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf-8&nullCatalogMeansCurrent=true
username: xxx
password: wyj980206
值得注意的是username和数据库名最好是一样的,不然DM每一条SQL语句都得写数据库名指定,挺麻烦
好了,这样Activiti会被完美支持!创作不易,望一键三连
关注公众号:资小库,问题快速答疑解惑