Activiti7 国产达梦数据库兼容改造
编辑本文参考 《Activiti支持达梦数据库》 加以详细补充说明,阅读本文前请先阅读参考文章。不同的是我才用修改Activiti源码二次打包的方式适配。
一、通过 githup 下载相应版本源码
我这里下载的是 7.1.0.M6 版本,下面就以这个版本为例子演示改造过程。
下载完源码后使用IDE工具打开,源码为Maven项目耐心等待项目初始化完成。
二、修改相关代码
Ps:下面代码有很多省略部分,可以根据 搜索 DATABASE_TYPE_ORACLE 来快速定位到修改代码的位置,因为达梦数据库的接口大多是仿照Oracle的,所以基本上达梦的配置和Oracle保持一致
在org.activiti.engine.impl.cfg.ProcessEngineConfigurationImpl,增加成员变量。
...
public static final String DATABASE_TYPE_ORACLE = "oracle";
//Yahocen 适配达梦数据库,追加成员变量
public static final String DATABASE_TYPE_DM = "dm";
public static final String DATABASE_TYPE_POSTGRES = "postgres";
...
修改org.activiti.engine.impl.cfg.ProcessEngineConfigurationImpl 类的 getDefaultDatabaseTypeMappings()方法
public static Properties getDefaultDatabaseTypeMappings() {
Properties databaseTypeMappings = new Properties();
...
databaseTypeMappings.setProperty("Oracle", DATABASE_TYPE_ORACLE);
//Yahocen 适配达梦数据库,追加修改
databaseTypeMappings.setProperty("DM DBMS", DATABASE_TYPE_DM);
databaseTypeMappings.setProperty("PostgreSQL", DATABASE_TYPE_POSTGRES);
...
return databaseTypeMappings;
}
修改org.activiti.engine.impl.db.DbSqlSessionFactory 类的 initBulkInsertEnabledMap(String databaseType)方法
protected void initBulkInsertEnabledMap(String databaseType) {
...
// Only Oracle is making a fuss in one specific case right now
//Yahocen 适配达梦数据库,追加修改
if ("oracle".equals(databaseType) || "dm".equals(databaseType)) {
bulkInsertableMap.put(EventLogEntryEntityImpl.class, Boolean.FALSE);
}
}
修改org.activiti.engine.impl.AbstractQuery 类的 addOrder(String column, String sortOrder, NullHandlingOnOrder nullHandlingOnOrder)方法
protected void addOrder(String column, String sortOrder, NullHandlingOnOrder nullHandlingOnOrder) {
...
if (nullHandlingOnOrder != null) {
if (nullHandlingOnOrder.equals(NullHandlingOnOrder.NULLS_FIRST)) {
if (...
|| ProcessEngineConfigurationImpl.DATABASE_TYPE_ORACLE.equals(databaseType)
//Yahocen 适配达梦数据库,追加修改
|| ProcessEngineConfigurationImpl.DATABASE_TYPE_DM.equals(databaseType)) {
orderBy = orderBy + defaultOrderByClause + " NULLS FIRST";
} ...
} else if (nullHandlingOnOrder.equals(NullHandlingOnOrder.NULLS_LAST)) {
if (...
|| ProcessEngineConfigurationImpl.DATABASE_TYPE_ORACLE.equals(databaseType)
//Yahocen 适配达梦数据库,追加修改
|| ProcessEngineConfigurationImpl.DATABASE_TYPE_DM.equals(databaseType)) {
orderBy = orderBy + column + " " + sortOrder + " NULLS LAST";
} ...
}
} ...
}
三、修改资源文件
将 create、drop 所有关于Oracle的数据库文件都复制到原目录文件名中的oracle改为dm即可
我是新项目不需要从旧版本的Activiti升级,所以upgrade目录中的SQL没做改变。
如果你是从低版本的Activiti升级上来那么也和上面目录一样将upgrade目录中所有关于Oracle的SQL文件都复制一份
在properties目录下新建 dm.properties 文件,填写下方内容:
limitAfter=LIMIT #{maxResults} OFFSET #{firstResult}
至此所有的修改已经完成
使用Maven将其打包后引入项目即可
- 0
- 0
-
分享