Activiti整合国产数据库

Activiti整合国产数据库


国产数据库整合activiti网上看到的资料其实并不怎么多,其实大多数国产数据库都是仿照oracle来的。那么其实很多整合问题也就显得没那么困难了。今天来说说我遇到的activiti6整合国产数据库有哪些,达梦数据库(DM),人大金仓(Kingbase),神通数据库(Oscar)。

整合的话,吾非就是创建数据库语句的不同,还是数据库的支持不同。
还有就是我们可能需要改activiti源码

初学小白可能听到源码有点慌,没啥好慌的,就好比你要改你同事写的代码一样,都是人写的,只不过人家团队比较NB,但是也就改几句话,问题并不大。

现在在一家小公司工作,前段时间正好在做这个需求,小公司是真的忙啊,哈哈,为了写个博客让大家少走点弯路,也是给你们还原了一下bug

下面我以达梦数据库为例子,说下具体步骤。

Activiti整合国产数据库_第1张图片

如果什么都不做,直接连接达梦数据库运行项目,那么肯定会报这个错。找不到DM DBMS 数据库类型

那么就开始改源码
首先在github上面把activiti源码下来,然后我们只需要打开 activiti-engine 模块就可以了
Activiti整合国产数据库_第2张图片
然后找到ProcessEngineConfigurationImpl.java这个类,位置在org.activiti.engine.impl.cfg.ProcessEngineConfigurationImpl

Activiti整合国产数据库_第3张图片
Activiti整合国产数据库_第4张图片
从这里我们可以看到所有activiti支持的数据库类型,显然没有国产的一些数据库

添加我们自己的达梦数据库

public static final String DATABASE_TYPE_DM = "dm";
databaseTypeMappings.setProperty("DM DBMS", DATABASE_TYPE_DM);

光这样还不行,因为你会发现创建activiti自己表的时候报sql语句异常。这个解释起来有点难,简单地说,虽然达梦数据库仿照Oracle来开发的,但是我们在activiti这里还是采用除Oracle外的建表方式。
Activiti整合国产数据库_第5张图片
acitiviti建表的方式分为两种,Oracle和不是Oracle。
所以我还需要写sql

Activiti整合国产数据库_第6张图片
Activiti整合国产数据库_第7张图片
Activiti整合国产数据库_第8张图片
直接复制oracle的sql,然后改一下名字就行了。

然后别忘了我们之前改了ProcessEngineConfigurationImpl.java,改完了重新编译acitivit-engine,打成jar包。替换原来项目中的jar

至此应该就可以了,还有其他两个数据库也这样做即可。值得一提的是

神通数据库,只需要改一个地方就可以了,不要需要改sql文件,然后还是编译打包

databaseTypeMappings.setProperty("OSCAR", DATABASE_TYPE_ORACLE);

你可能感兴趣的:(达梦,activiti)