Activiti6.0扩展支持OSCAR神通数据库

前言

目前,一些国内公司被要求使用国内生产的IoE项目替代解决方案。数据从异构数据库迁移到OSCAR申通数据库,在更换应用程序中的数据库驱动程序后,使用Activiti工作流启动过程中发生错误

嵌套的异常是org.activiti。发动机ActivitiException:无法从数据库产品名称“OSCAR”生成数据库类型

原因是activiti6.0.0中内置的数据库类型不支持申通数据库

解决方案

将活动引擎6.0.0的相关源代码复制到项目src中,保持包路径不变,并进行相应的修改以支持大申通数据库

具体如下:

1.在org.activiti中添加成员变量。发动机impl。cfg。ProcessEngine配置Impl

公共静态最终字符串DATABASE_TYPE_OSCAR=“OSCAR”;

公共静态最终字符串DATABASE_TYPE_ H2=“H2”;

公共静态最终字符串DATABASE_TYPE_HSQL=“HSQL”;

公共静态最终字符串DATABASE_TYPE_MYSQL=“MYSQL”;

公共静态最终字符串DATABASE_TYPE_ORACLE=“ORACLE”;

2.在org.activiti。发动机impl。cfg。ProcessEngine Configuration Impl,modify

GetDefault数据库类型映射()

受保护的静态属性getDefultBaseTypeMapping(){

属性数据库类型映射=新属性();

数据库类型映射。setProperty(“OSCAR”,DATABASE-TYPE-OSCAR);

数据库类型映射。setProperty(“H2”,DATABASE-TYPE.H2);

3.在org.activiti。发动机impl。数据库。DbSqlSessionFactory,修改initBulkInsertEnabling映射(字符串

数据库类型

If(“oracle”.equals(databaseType)||“oscar”。等于(databaseType)){

BulkInsertableMap。put(EventLogEntryEntity.class,Boolean。FALSE);

4.创造一个新的奥斯卡奖。org.activiti路径中的属性。数据库。特性

LimitBefore=

LimitAfter=LIMITED#{maxResults}OFF SET#{firstResult}

5.在org.activiti中。发动机impl。AbstractQuery,修改addOrder(String列,String sortOrder,

NullHandlingOnOrder

如果(nullHandlingOnOrder.equals(nullHandlingOnOrder.NULLLS-FIRST)){

如果(ProcessEngine Configuration Impl.DATABASE-TYPE.H2。等于(数据库类型)

||ProcessEngine配置实现DATABASE_TYPE_HSQL。等于(数据库类型)

||ProcessEngine Configuration Impl DATABASE_TYPE_POSTGRES。等于(数据库类型)

||ProcessEngine配置实现DATABASE_TYPE_ORACLE。等于(数据库类型)

||ProcessEngine Configuration Impl DATABASE_TYPE_OSCAR。等于(数据库类型){

OrderBy=OrderBy+defaultOrderByClause+“NULLS FIRST”;

}否则,如果(ProcessEngine Configuration Impl.DATABASE-TYPE-MYSQL.equals(databaseType)){

OrderBy=OrderBy+“isull()+column+”)desc,“+defaultOrderByClause;

}否则,如果(ProcessEngine Configuration Impl.DATABASE-TYPE.DB2。等于(数据库类型)

||ProcessEngine配置实现DATABASE_TYPE_MSSQL。等于(数据库类型){

OrderBy=OrderBy+“当”+column+“为null时大小写,然后0 else 1结束,”+defaultOrderByClause;

}Else{

OrderBy=OrderBy+defaultOrderByClause;

}

}Else if(nullHandlingOnOrder.equals(nullHandlingOnOrder.NULLLS-LAST)){

如果(ProcessEngine Configuration Impl.DATABASE-TYPE.H2。等于(数据库类型)

||ProcessEngine配置实现DATABASE_TYPE_HSQL。等于(数据库类型)

||ProcessEngine Configuration Impl DATABASE_TYPE_POSTGRES。等于(数据库类型)

||ProcessEngine配置实现DATABASE_TYPE_ORACLE。等于(数据库类型)

||ProcessEngine Configuration Impl DATABASE_TYPE_OSCAR。等于(数据库类型){

OrderBy=OrderBy+column+“”+sortOrder+“NULLS LAST”;

}否则,如果(ProcessEngine Configuration Impl.DATABASE-TYPE-MYSQL.equals(databaseType)){

OrderBy=OrderBy+isull()+column+asc,+defaultOrderByClause;

}否则,如果(ProcessEngine Configuration Impl.DATABASE-TYPE.DB2。等于(数据库类型)

||ProcessEngine配置实现DATABASE_TYPE_MSSQL。等于(数据库类型){

OrderBy=OrderBy+“如果”+column+“为null,则1 else 0结束,”+defaultOrderByClause;

}Else{

OrderBy=OrderBy+defaultOrderByClause;

}

}

完成以上修改,重新编译活动引擎6.0.0.jar即可启动。

  • 19
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值