SpringBoot整合Activiti

这里主要介绍整合Activiti6.0版本,其他版本暂且没有整合过,如若需要整合其他版本,可以搜索参考网上其他博主的文章

目录

1.pom文件加入依赖

2.配置文件配置activiti相关配置项

3.数据库配置项中还有一个地方需要注意!!

4.启动类上禁用activiti安全策略

5.资源目录下添加processes目录(流程存放目录)

6.安装插件

 常见问题

1.org/springframework/security/config/annotation/authentication/configurers/GlobalAuthenticationConfigurerAdapter.class] cannot be opened because it does not exist

2.Parameter 0 of method springAsyncExecutor in org.activiti.spring.boot.AbstractProcessEngineAutoConfiguration required a single bean, but 4 were found

3.nested exception is java.io.FileNotFoundException: class path resource [processes/] cannot be resolved to URL because it does not exist

4.去除security异常 


1.pom文件加入依赖

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

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.20</version>
        </dependency>
        <!--activiti modeler start-->
        <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-json-converter</artifactId>
            <version>6.0.0</version>
            <exclusions>
                <exclusion>
                    <groupId>org.activiti</groupId>
                    <artifactId>activiti-bpmn-model</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

2.配置文件配置activiti相关配置项

        注意层级关系,在spring下,和datasource同级

# activiti 模块
  activiti:
    # 解决启动报错:class path resource [processes/] cannot be resolved to URL because it does not exist
    check-process-definitions: false
    # 检测身份信息表是否存在
    db-identity-used: true
      # 默认为false
      # false:项目启动时,如果数据库中没有表将抛出异常(上线后使用)
    # true:项目启动时,如果数据库中没有表将自动生成(开发和测试时使用)
    database-schema-update: true

3.数据库配置项中还有一个地方需要注意!!

url后面加上&nullCatalogMeansCurrent=true

因为mysql使用schema标识库名而不是catalog,因此mysql会扫描所有的库来找表, 如果其他库中有相同名称的表,activiti就以为找到了,本质上这个表在当前数据库中并不存在。 解决办法就是在数据库链接的配置后面加上 nullCatalogMeansCurrent=true,标识之搜索当前链接的库。

我看网上其他人说数据库版本如果是5.*的默认是true,如果是8.*的默认是false,大家有兴趣可以试下

4.启动类上禁用activiti安全策略

 

@SpringBootApplication(exclude = {
        org.activiti.spring.boot.SecurityAutoConfiguration.class
})

5.资源目录下添加processes目录(流程存放目录)

接下来启动项目,就会发现数据库中新增了activit相关的28张表了

 

 

6.安装插件

安装插件: activiti BPMN visualizer

然后你就可以在idea中processes目录下新建 bpmn20.xml文件,新建流程图文件

打开编辑器,开始绘图 

 

 常见问题

1.org/springframework/security/config/annotation/authentication/configurers/GlobalAuthenticationConfigurerAdapter.class] cannot be opened because it does not exist

原因:SpringBoot 2.0的start中默认有一个"spring-boot-autoconfigure-2.0..RELEASE.jar",如果你还引用了activiti的"activiti-spring-boot-starter-rest-api.jar"包,需要将两个包中的 SecurityAutoConfiguration.class 其中之一排除。我选择禁用activiti安全策略。

也就是第四步中写的操作

2.Parameter 0 of method springAsyncExecutor in org.activiti.spring.boot.AbstractProcessEngineAutoConfiguration required a single bean, but 4 were found

原因:Activiti自动配置类中的错误。它依赖于它们TaskExecutor在应用程序上下文中唯一的一个bean,或者如果有多个bean,则它们中的一个是主要的。可以通过声明自己的TaskExecutorbean并将其标记为@Primary:解决该问题。

解决方案:在项目的Application启动类中添加以下代码即可。

    @Primary
    @Bean
    public TaskExecutor primaryTaskExecutor() {
        ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
        return executor;
    }

3.nested exception is java.io.FileNotFoundException: class path resource [processes/] cannot be resolved to URL because it does not exist

解决方案:
(1)在resource目录下添加processes文件夹
(2)在application.properties下配置

#启动报错class path resource [processes/] cannot be resolved to URL because it does not exist
spring.activiti.check-process-definitions=false

4.启动时没有创建表:

解决方案:
(1)检查yml文件中是否有如下配置:

spring:
  activiti:
    database-schema-update: true

 (2)修改数据库连接配置: 加上【nullCatalogMeansCurrent=true】
在使用mysql-connect 8.+以上版本的时候需要添加nullCatalogMeansCurrent=true参数,否则在使用mybatis-generator生成表对应的xml等时会扫描整个服务器里面的全部数据库中的表,而不是扫描对应数据库的表。

dynamic:
  datasource:
    slave1:
      driver-class-name: com.mysql.cj.jdbc.Driver
      url: jdbc:mysql://192.168.1.4:3308/database?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true


"常见错误"中的解答方案来自于这篇文章
原文链接:https://blog.csdn.net/weixin_41830501/article/details/107930730


4.去除security异常 

因为原项目比较老,用的shiro,但是activiti中有集成security.

原本是在启动类中排除了org.activiti.spring.boot.SecurityAutoConfiguration.class

但是却不起作用,swagger都进不去,所有接口都被security拦截了

解决方案:

        继续排除security配置类

        @SpringBootApplication(exclude ={
                org.activiti.spring.boot.SecurityAutoConfiguration.class,
                SecurityAutoConfiguration.class
        })

注意包别弄错了

 打开显示正常

需要注意的是: 我之前有一个项目本身就是用的Security,当时就只排除了activiti的安全策略,并没有排除Spring的Security也能用. 因此,这个解决方案目前只适用于当前情况

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值