• 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 </span>= "spring.datasource.master"<span style="color: #000000;">)
    </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> DataSource masterDataSource() {
        </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> DataSourceBuilder.create().build();
    }
    
    @Bean
    @ConfigurationProperties(prefix </span>= "spring.datasource.activiti"<span style="color: #000000;">)
    </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> DataSource activitiDataSource() {
        </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> DataSourceBuilder.create().build();
    }
    
    @Bean
    </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> SpringProcessEngineConfiguration springProcessEngineConfiguration(
            PlatformTransactionManager transactionManager,
            SpringAsyncExecutor springAsyncExecutor) </span><span style="color: #0000ff;">throws</span><span style="color: #000000;"> IOException {
    
        </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> baseSpringProcessEngineConfiguration(
                activitiDataSource(),
                transactionManager,
                springAsyncExecutor);
    }</span></pre>
    
    复制代码

    这样一来即可解决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中遇到的问题,如果有其他问题,欢迎各位留言讨论。

    原文地址:https://www.cnblogs.com/noahpk/p/10717724.html
  • 相关阅读:
    实现微信朋友圈点击评论按钮时cell上移
    UITableView的横向使用
    用Xcode6的Leaks检测内存泄漏
    IOS8设备连接XCODE6真机调试报错"Could not inspect the application package"
    Implicit declaration of function 'ether_ntoa' is invalid in C99
    .xcodeprok cannot be opened because the project file cannot be parsed
    根据图片的链接获取图片的宽高
    关于UIWebView设置高度自适应的问题
    reason: 'data parameter is nil'
    CSS图标文字对齐和表单输入框文字对齐兼容
  • 原文地址:https://www.cnblogs.com/jpfss/p/11084155.html
Copyright © 2020-2023  润新知