1. 自定义类继承SpringProcessEngineConfiguration类,重写initDatabaseType方法。
package com.ydtf.cbda.module.cbdacim.improcess.config;import org.activiti.engine.ActivitiException;
import org.activiti.spring.SpringProcessEngineConfiguration;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.SQLException;/*** @author 自定义activiti的数据库连接* @date 2023/9/14 14:31*/
public class CustomConnectionSpringProcessEngineConfiguration extends SpringProcessEngineConfiguration {private static Logger log = LoggerFactory.getLogger(CustomConnectionSpringProcessEngineConfiguration.class);@Overridepublic void initDatabaseType() {Connection connection = null;try {connection = this.dataSource.getConnection();DatabaseMetaData databaseMetaData = connection.getMetaData();String databaseProductName = databaseMetaData.getDatabaseProductName();log.debug("database product name: '{}'", databaseProductName);this.databaseType = databaseTypeMappings.getProperty(databaseProductName);if (databaseProductName.contains("DM DBMS")) {databaseProductName = "Oracle";}databaseType = databaseTypeMappings.getProperty(databaseProductName);if (this.databaseType == null) {throw new ActivitiException("couldn't deduct database type from database product name '" + databaseProductName + "'");}log.debug("using database type: {}", this.databaseType);if ("mssql".equals(this.databaseType)) {this.maxNrOfStatementsInBulkInsert = this.DEFAULT_MAX_NR_OF_STATEMENTS_BULK_INSERT_SQL_SERVER;}} catch (SQLException var12) {log.error("Exception while initializing Database connection", var12);} finally {try {if (connection != null) {connection.close();}} catch (SQLException var11) {log.error("Exception while closing the Database connection", var11);}}}
}
2. 修改Activiti启动项配置
package com.ydtf.cbda.module.cbdacim.improcess.config;import org.activiti.spring.SpringProcessEngineConfiguration;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.core.task.TaskExecutor;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.transaction.PlatformTransactionManager;import javax.sql.DataSource;/*** @author 修改activiti启动配置项* @date 2023/9/14 14:38*/
@Configuration
public class ActivitiConfigguration {@Autowiredprivate DataSource dataSource;@Autowiredprivate PlatformTransactionManager transactionManager;@Beanpublic SpringProcessEngineConfiguration getProcessEngineConfiguration() {SpringProcessEngineConfiguration configuration = new CustomConnectionSpringProcessEngineConfiguration();configuration.setDataSource(dataSource);configuration.setTransactionManager(transactionManager);configuration.setDatabaseSchemaUpdate("true");return configuration;}@Bean@Primarypublic TaskExecutor primaryTaskExecutor(){return new ThreadPoolTaskExecutor();}
}