activiti7.0集成人大金仓数据库

说明

人大金仓数据库和mysql数据库比较相似,部分语法也类似。activiti中默认集成的是mysql数据源,而且并没有集成过人大金仓数据库。所以想要集成人大金仓数据库就要将该类的的数据源配置到其中去。这里的思路就是在流程引擎初始化数据库datasource的时候将配置文件重写。在工作流源码中我们不难看出:SpringProcessEngineConfiguration是处理工作流引擎的配置类,所以我们将AbstractProcessEngineAutoConfiguration中的ActivitiDatasourceProperties重写即可。

附录:传送门----人大金仓数据库和mysql的语法。

1、pom文件

bash 复制代码
<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
<!-- 工作流集成springboot基础包 -->
		<dependency>
			<groupId>org.activiti</groupId>
			<artifactId>activiti-spring-boot-starter</artifactId>
			<version>7.1.0.M4</version>
		</dependency>
<!-- 工作流生成流程图片支持包 -->
		<dependency>
			<groupId>org.activiti</groupId>
			<artifactId>activiti-image-generator</artifactId>
			<version>7.1.0.M4</version>
		</dependency>
<!-- 人大金仓驱动和数据库包 -->
		<dependency>
			<groupId>org.postgresql</groupId>
			<artifactId>postgresql</artifactId>
			<version>42.2.9</version>
		</dependency>

		<dependency>
			<groupId>cn.com.kingbase</groupId>
			<artifactId>kingbase8</artifactId>
			<version>8.6.0</version>
		</dependency>


		<!-- 阿里 druid 数据源 -->
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>druid</artifactId>
			<version>1.2.3</version>
		</dependency>
<!-- 配置文件支撑包 -->
		<dependency>
			<groupId>org.activiti</groupId>
			<artifactId>activiti-spring-boot-starter-basic</artifactId>
			<version>6.0.0</version>
		</dependency>

2、application.yml

bash 复制代码
spring:
  datasource:
    url: jdbc:kingbase8://127.0.0.1:54321/activiti_test?characterEncoding=UTF-8&serverTimezone=GMT%2B8
    username: activiti
    password: 123456
    driver-class-name: com.kingbase8.Driver
    type: com.alibaba.druid.pool.DruidDataSource
    druid:
      driver-class-name: com.kingbase8.Driver
      test-while-idle: false
      validation-query: select 1
#重要配置
  activiti:
    database-type: postgres
    database-schema: public
    database-schema-update: true   
    db-history-used: true  
    history-level: full   
  application:
    name: activiti_demo
  main:
    allow-bean-definition-overriding: true
#分页支持
pagehelper:
  helperDialect: postgresql
logging:
  level:
    org.activiti.engine.impl.persistence.entity: debug

3、配置类ActivitiConfig和ActivitiDatasourceProperties

bash 复制代码
@Configuration
@AutoConfigureAfter({DataSourceAutoConfiguration.class})
@AutoConfigureBefore({JpaProcessEngineAutoConfiguration.class})
public class ActivitiConfig {


    @Configuration
    @EnableConfigurationProperties({ActivitiProperties.class})
    public static class ActivitiConfiguration extends AbstractProcessEngineAutoConfiguration {
        private ActivitiDatasourceProperties activitiDatasourceProperties;

        public ActivitiDatasourceProperties getActivitiDatasourceProperties() {
            return activitiDatasourceProperties;
        }

        @Autowired
        public void setActivitiDatasourceProperties(ActivitiDatasourceProperties activitiDatasourceProperties) {
            this.activitiDatasourceProperties = activitiDatasourceProperties;
        }

        @Bean
        @ConditionalOnMissingBean
        public SpringProcessEngineConfiguration springProcessEngineConfiguration(DataSource dataSource,
                                                                                 PlatformTransactionManager transactionManager, SpringAsyncExecutor springAsyncExecutor)
                throws IOException {
            SpringProcessEngineConfiguration config = baseSpringProcessEngineConfiguration(dataSource,
                    transactionManager, springAsyncExecutor);

            return config;
        }
		//重新构造数据源
        private SpringProcessEngineConfiguration baseSpringProcessEngineConfiguration(DataSource dataSource, PlatformTransactionManager transactionManager, SpringAsyncExecutor springAsyncExecutor) {
            SpringProcessEngineConfiguration config = new SpringProcessEngineConfiguration();
            config.setDataSource(dataSource);
            config.setTransactionManager(transactionManager);
            config.setAsyncExecutor(springAsyncExecutor);
            config.setDatabaseType(this.activitiDatasourceProperties.getDatabaseType());
            config.setDatabaseSchemaUpdate("true");
            config.setAsyncExecutorActivate(false);
            config.setAsyncExecutorCorePoolSize(1);
            config.setAsyncExecutorMaxPoolSize(1);
            return config;
        }


    }

}
bash 复制代码
@ConfigurationProperties(prefix = "spring.activiti")
@Component
public class ActivitiDatasourceProperties {


    private String databaseType;
    public String getDatabaseType() {
        return databaseType;
    }
    public void setDatabaseType(String databaseType) {
        this.databaseType = databaseType;
    }
}```
相关推荐
WikeSoft5 天前
.net core workflow流程定义
.net·.net core·workflow·流程引擎·工作流
yuanlve36291 个月前
电商企业如何实现流程精细化?日事清「标准化+可视化+自动化」全流程管理实战解析
流程引擎·流程管理·流程自动化·电商企业·流程标准化·流程可视化·流程精细化
WikeSoft1 个月前
1.net core 工作流WorkFlow流程(介绍)
.net·.net core·workflow·流程引擎
安防视频中间件/视频资源汇聚平台2 个月前
svmspro如何切换数据库
数据库·mysql·sqlite·达梦·人大金仓·瀚高·svmspro
为美好的生活献上中指3 个月前
java每日精进 2.13 MySql迁移人大金仓
mysql·kingbase·人大金仓
帅喵5 个月前
流程引擎Activiti性能优化方案
性能优化·activiti·工作流引擎·流程引擎
 嘘 6 个月前
Centos使用人大金仓ksql
linux·运维·centos·人大金仓
战神刘玉栋7 个月前
《 LiteFlow 规则引擎(1) - 入门篇》
spring·springboot·流程引擎·liteflow
老友@8 个月前
Camunda流程引擎并发性能优化
网络·数据库·性能优化·流程引擎·工作流·camunda