朋也的博客 » 首页 » 文章
作者:朋也
日期:2019-04-24
类别:activiti学习笔记
版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)
springboot集成非常的简单,基本上不需要做配置, 而且项目启动时自动会部署流程
依赖如下
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-spring-boot-starter-basic</artifactId>
<version>6.0.0</version>
</dependency>
</dependencies>
注意这里要用6.0, 如果不写这个版本号的话, springboot会自动下载7.0的activiti, 我在启动的时候报了一个错, jdk1.8没法用, 至少要将jdk升级到9才能用activiti7.0
原链接文:https://atjiu.github.io/2019/04/24/activiti-spring-boot/
application.yml
spring:
datasource:
username: root
password:
url: jdbc:mysql:///activiti-demo?useSSL=false&characterEncoding=utf8&serverTimezone=GMT%2B8
activiti:
database-schema-update: true
另外还要把流程图文件放在 src/main/resources/processes
下, springboot默认是到这个文件夹里去找流程图进行部署的
而且还要把图片的文件名修改一下, 假如流程图名是 AskLeave.bpmn
那么在springboot项目中对应的图片名就应该是 AskLeave.AskLeave.png
这样启动它会报个错, 错误信息 java.lang.ArrayStoreException: sun.reflect.annotation.TypeNotPresentExceptionProxy
这个问题当初我找了好久才找到啥问题, 是因为springboot的自动配置把 SecurityAutoConfiguration
在项目启动的时候也配置了, 这货会导致报这个错
解决办法是在启动为上的 @SpringBootApplication(exclude = SecurityAutoConfiguration.class)
配置不去自动配置即可
再次启动就没有问题了
今天又碰到一个问题, 在启动项目的时候, activiti不自动创建表, 网上找文章发现在数据库连接url后面加上一个参数 nullCatalogMeansCurrent=true
然后就好了, 也不知道啥原因
jdbc:mysql:///activiti-demo?useSSL=false&characterEncoding=utf8&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true
正式集成项目的时候, 又出问题了, 报错信息: Caused by: java.lang.IllegalStateException: No typehandler found for property inTime
解决办法: 在pom.xml里加上下面依赖即可
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-typehandlers-jsr310</artifactId>
<version>1.0.1</version>
</dependency>
然后重新启动项目, 还是有异常, 只是异常信息变了, 现在长这个样 Caused by: java.lang.NoSuchFieldError: INSTANCE
原因是mybatis-plus里引入的mybatis跟activiti里引入的mybatis版本冲突了, 有两种解决办法
<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.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.0</version>
</dependency>
再启动就没有问题了
PS: 出现这个问题 Caused by: java.lang.NoSuchFieldError: INSTANCE
的原因是在项目里使用 @Select
来写查询sql了,如果你项目里没有使用mybatis里的这个注解, 就不会出现这个异常
springboot项目启动之后, 流程也就自动部署了, 如果流程在开发中间有变动的话, 再次启动springboot项目的时候, 这个流程会重新部署, 即使定义的流程的名字没变, 它也会重新部署一份, 后面再使用流程定义的Key来启动流程就走的是新的流程了
写博客不易,转载请保留原文链接,谢谢!