暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Activiti 支持SUNDB

原创 科蓝SUNDB编辑部 2022-11-16
611

1. 背景

在项目适配过程中,所使用的框架是Activiti5.17.0,在配置SUNDB数据库时,出现如下报错信息:
image.png

2. 解决思路

通过图片中的报错信息,我们可以很清楚的获取到2点内容。

  • 识别不到SUNDB的数据库类型。
  • 抛出的错误的文件在那里(……activiti.engine.……)

3. 解决办法:

1、下载源码包

2、对源码包进行相应的改写操作,通过上面报错的图片信息,我们只需要“activiti-engine”进行修改即可。

`变动文件1:

activiti-engine\src\main\java\org\activiti\engine\impl\cfg\ProcessEngineConfigurationImpl.java 添加如下内容:


public static final String DATABASE_TYPE_H2 = "h2";

public static final String DATABASE_TYPE_MYSQL = "mysql";

public static final String DATABASE_TYPE_ORACLE = "oracle";

public static final String DATABASE_TYPE_POSTGRES = "postgres";

public static final String DATABASE_TYPE_MSSQL = "mssql";

public static final String DATABASE_TYPE_DB2 = "db2";

public static final String DATABASE_TYPE_SUNDB = "sundb";` //新增部分

protected static Properties getDefaultDatabaseTypeMappings() {

Properties databaseTypeMappings = new Properties();

databaseTypeMappings.setProperty("SUNDB", DATABASE_TYPE_SUNDB); //新增

databaseTypeMappings.setProperty("H2", DATABASE_TYPE_H2);

添加完后,相关变动部分如下图:

image.png

变动文件2:

activiti-engine\src\main\java\org\activiti\engine\impl\db\DbSqlSessionFactory.java

在//oracle下面新增SUNDB相关部分


databaseSpecificLimitBeforeStatements.put("sundb", "");

databaseSpecificLimitAfterStatements.put("sundb", "LIMIT #{maxResults} OFFSET #{firstResult}");

databaseSpecificLimitBetweenStatements.put("sundb", "");

databaseOuterJoinLimitBetweenStatements.put("sundb", "");

databaseSpecificOrderByStatements.put("sundb", defaultOrderBy);

最终的效果如下图所示:

image.pngimage

变动文件3:

activiti-engine\src\main\java\org\activiti\engine\impl\AbstractQuery.java

在protected void addOrder 相关部分,添加SUNDB相关(一定要和Oracle在一起),新增内容如下:


if (ProcessEngineConfigurationImpl.DATABASE_TYPE_H2.equals(databaseType)

    || ProcessEngineConfigurationImpl.DATABASE_TYPE_POSTGRES.equals(databaseType)

    || ProcessEngineConfigurationImpl.DATABASE_TYPE_ORACLE.equals(databaseType)

    || ProcessEngineConfigurationImpl.DATABASE_TYPE_SUNDB.equals(databaseType)){  //新增

 …………………………
} else if (nullHandlingOnOrder.equals(NullHandlingOnOrder.NULLS_LAST)) {

 if (ProcessEngineConfigurationImpl.DATABASE_TYPE_H2.equals(databaseType)

     || ProcessEngineConfigurationImpl.DATABASE_TYPE_POSTGRES.equals(databaseType)

     || ProcessEngineConfigurationImpl.DATABASE_TYPE_ORACLE.equals(databaseType)

      || ProcessEngineConfigurationImpl.DATABASE_TYPE_SUNDB.equals(databaseType)) {   //新增

最终内容如下图所示:

image.png
在修改完上面的所有文件后,打包验证即可。

最后修改时间:2023-07-17 14:52:41
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论