最近公司开始开发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>

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>

以上就是我在集成activiti6.0中遇到的问题,如果有其他问题,欢迎各位留言讨论。
原文地址:https://www.cnblogs.com/noahpk/p/10717724.html版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。