我这是在springboot的基础上引入activiti,springboot的配置很简单就不说了,整合activiti互不影响
安装插件
我使用的是IDEA,首先需要安装插件
settings搜索actiBPM,找不到搜索就好了,我这里已经安装好了。
引入依赖
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-spring-boot-starter-basic</artifactId>
<version>6.0.0</version>
</dependency>
其实这样就可以了,接下来启动
启动
问题1
一开始我引入依赖不是上面那个,是下面这个,少了个basic,版本也不一样,具体可以上maven查看
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-spring-boot-starter</artifactId>
<version>7.1.0.M2</version>
</dependency>
如果引入这个依赖,会出现一个问题,就是
每次启动会出现这个,然后psotman访问回401,关于401网上基本都是说引入了‘spring-boot-starter-security’,但我会这里没有引入security包也出现了,怎么解决呢?我也不知道,因为后来我换成一开始那个依赖,就没有这个问题了,但出现其他问题。
题外话:这个‘spring-boot-starter-security’非常有意思,用网页打开你的项目会出现一个登录页面,而且这个页面还不是你写的,
输入用户名:user
密码:(启动时会提供密码,随机的,截图红色框内那个)
就可以正常访问了,不然访问会被拦截,但用postman就不知道如何处理了,以后有兴趣可以了解下。
问题2
变回一开始那个依赖,启动会报以下问题:
org.springframework.beans.factory.BeanCreationException:
Error creating bean with name 'requestMappingHandlerMapping' defined in class path resource [org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$EnableWebMvcConfiguration.class]: Invocation of init method failed; nested exception is java.lang.ArrayStoreException: sun.reflect.annotation.TypeNotPresentExceptionProxy
具体原因应该是少了security的问题
解决办法:
@SpringBootApplication( exclude = SecurityAutoConfiguration.class)
在springboot启动类上加上括号里面这句,让springboot排除掉security就好了。
问题3
启动之后查看数据库,没有新增表
解决方案:
在配置文件,数据库链接url后面加上
nullCatalogMeansCurrent=true
原因是:activiti5.0 默认true 6.0默认false
问题4
启动成功之后,你会发现你的数据库新增了很多表,网上有人说是25,但我只有17张表,是因为activiti版本不同,默认初始化生成的表不一样。如若少了表,
解决办法:
在配置文件application.yml加上配置
spring:
activiti:
db-history-used: true
再启动就有了
我这里是application.yml,跟application.properties是类似的,写法不同而已。但yml看起来更清爽
问题5
因为我一开始不知哪个版本号,就经常改版本,有一次启动出现一个问题
Could not update Activiti database schema: unknown version from database: ‘7.x.x.x‘
原因是: activiti 相关的jar版本和表 act_ge_property 中 schema.version 所存储的版本不一致导致报错的。因为之前版本生成的表,和新版本的表有冲突。
解决办法:
方案一、act_ge_property 表中的 schema.version 字段版本修改为和 activiti jar包版本一致即可。
方案二、简单直接,把之前生成的表删了,再启动生成一次,就好了。
其他细节
1.xx.bpmn 文件,activiti似乎有默认扫描路径,放在resources/processes文件下。
2.idea安装actiBPM插件,经常会报错,这个不用理他就好了。这点做得不如eclipse,希望官方能更新这个插件。