activiti5.15.1兼容kingbase和达梦数据库

/ 0条评论 / 0 个点赞 / 119人阅读

重写DbSqlSessionFactory类

类路径保持源码jar中一致,在static中增加以下代码

// kingbase
	databaseSpecificLimitBeforeStatements.put("kingbase", "select * from ( select a.*, ROWNUM rnum from (");
	databaseSpecificLimitAfterStatements.put("kingbase",
			"  ) a where ROWNUM < #{lastRow}) where rnum  >= #{firstRow}");
	databaseSpecificLimitBetweenStatements.put("kingbase", "");
	databaseOuterJoinLimitBetweenStatements.put("kingbase", "");
	databaseSpecificOrderByStatements.put("kingbase", defaultOrderBy);
	addDatabaseSpecificStatement("kingbase", "selectExclusiveJobsToExecute",
			"selectExclusiveJobsToExecute_integerBoolean");
	addDatabaseSpecificStatement("kingbase", "selectUnlockedTimersByDuedate",
			"selectUnlockedTimersByDuedate_oracle");
	addDatabaseSpecificStatement("kingbase", "insertEventLogEntry", "insertEventLogEntry_oracle");
	
	// dm
    databaseSpecificLimitBeforeStatements.put("dm", "");
    databaseSpecificLimitAfterStatements.put("dm", "LIMIT #{maxResults} OFFSET #{firstResult}");
    databaseSpecificLimitBetweenStatements.put("dm", "");
    databaseOuterJoinLimitBetweenStatements.put("dm", "");
    databaseSpecificOrderByStatements.put("dm", defaultOrderBy);
    addDatabaseSpecificStatement("dm", "selectExclusiveJobsToExecute",
			"selectExclusiveJobsToExecute_integerBoolean");
	addDatabaseSpecificStatement("dm", "selectUnlockedTimersByDuedate",
			"selectUnlockedTimersByDuedate_oracle");
	addDatabaseSpecificStatement("dm", "insertEventLogEntry", "insertEventLogEntry_oracle");
	
	
	databaseSpecificLimitBeforeStatements.put("DM DBMS", "");
    databaseSpecificLimitAfterStatements.put("DM DBMS", "LIMIT #{maxResults} OFFSET #{firstResult}");
    databaseSpecificLimitBetweenStatements.put("DM DBMS", "");
    databaseOuterJoinLimitBetweenStatements.put("DM DBMS", "");
    databaseSpecificOrderByStatements.put("DM DBMS", defaultOrderBy);
    addDatabaseSpecificStatement("DM DBMS", "selectExclusiveJobsToExecute",
			"selectExclusiveJobsToExecute_integerBoolean");
	addDatabaseSpecificStatement("DM DBMS", "selectUnlockedTimersByDuedate",
			"selectUnlockedTimersByDuedate_oracle");
	addDatabaseSpecificStatement("DM DBMS", "insertEventLogEntry", "insertEventLogEntry_oracle");

重写ProcessEngineConfigurationImpl类

路径和源码jar保持一致,在getDefaultDatabaseTypeMappings方法中增加以下代码

databaseTypeMappings.setProperty("KingbaseES", "kingbase");
    databaseTypeMappings.setProperty("H2", "h2");
    databaseTypeMappings.setProperty("DM DBMS", "dm");

调整activiti-engine-5.15.1.jar

调整org.activiti.db.mapping.entity  里面的Job.xml文件 selectJobsByConfiguration方法

select * from ${prefix}ACT_RU_JOB
      where HANDLER_TYPE_ = '${parameter.handlerType}'
      and HANDLER_CFG_ =  '${parameter.handlerConfiguration}'