springboot集成activiti6.0多數據源的配置


    最近公司開始開發springboot的項目,需要對工作流進行集成。目前activiti已經發布了7.0的版本,但是考慮到6.0版本還是比較新而且穩定的,決定還是選擇activiti6.0的版本進行集成。由於目前需要將工作流做成一個獨立的數據源,所以在集成的時候需要配置雙數據源。

首先我們需要對springboot的配置文件applicantion.yml進行配置。

spring:
primary: master #設置默認的數據源或者數據源組,默認值即為master datasource: master: jdbc-url: jdbc:mysql://192.168.1.1:3306/qd_pmsys_db?characterEncoding=UTF-8
&useUnicode=true&useSSL=false username: root password: admin driver-class-name: com.mysql.jdbc.Driver activiti: jdbc-url: jdbc:mysql://192.168.1.1:3306/activiti?characterEncoding=UTF-8&useUnicode=true&useSSL=false username: root password: admin driver-class-name: com.mysql.jdbc.Driver

如圖可見配置了兩個數據源,默認數據源是master,這個可以作為業務數據源,工作流數據源為activiti。

接下來我們需要增加數據源的配置文件,如圖

@Configuration//聲名為配置類,繼承Activiti抽象配置類
public class ActivitiConfig extends AbstractProcessEngineAutoConfiguration {
    
    @Bean
    @Primary
    @ConfigurationProperties(prefix = "spring.datasource.master")
    public DataSource masterDataSource() {
        return DataSourceBuilder.create().build();
    }
    
    @Bean
    @ConfigurationProperties(prefix = "spring.datasource.activiti")
    public DataSource activitiDataSource() {
        return DataSourceBuilder.create().build();
    }

    @Bean
    public SpringProcessEngineConfiguration springProcessEngineConfiguration(
            PlatformTransactionManager transactionManager,
            SpringAsyncExecutor springAsyncExecutor) throws IOException {

        return baseSpringProcessEngineConfiguration(
                activitiDataSource(),
                transactionManager,
                springAsyncExecutor);
    }

這樣一來即可解決springboot集成雙數據源的問題。

常見問題:1.Caused by: java.lang.ArrayStoreException:sun.reflect.annotation.TypeNotPresentExceptionProxy

解決辦法:項目一啟動就報這個錯誤,折騰了很久都沒有解決這個問題,最后在一篇博客上找到解決辦法,但是遺憾的是忘記了作者的博客鏈接。解決辦法是直接在啟動類上加上  @SpringBootApplication(exclude = SecurityAutoConfiguration.class) 即可。SecurityAutoConfiguration.class來自於類 org.activiti.spring.boot.SecurityAutoConfiguration。第一次我引錯了類,導致該問題無法解決。我還認為我的錯誤不是用這個方法解決。哎,小心仔細啊。

     2.如果項目pom.xml配置了mybatis-plus的包,則需要對activiti的包進行修改如下

     <dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-spring-boot-starter-basic</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.mybatis</groupId>
                    <artifactId>mybatis</artifactId>
                </exclusion>
            </exclusions>
<version>6.0.0</version>
</dependency>

去除此包中對mybatis的引入,可解決jar包沖突問題。

          3.如果pom.xml中配置了hibernate或者Spring-jpa 的jar包

<!-- Hibernate -->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
                        <version>5.4.2.Final</version>
            <exclusions>
                <exclusion>
                    <groupId>commons-collections</groupId>
                    <artifactId>commons-collections</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

則需要刪除掉version版本號,即可解決。

以上就是我在集成activiti6.0中遇到的問題,如果有其他問題,歡迎各位留言討論。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM