最近项目中用到activiti工作流,项目具体项目中流程的东西不是本人负责,但多学点东西总归是好的,所以待项目空闲下来,自己学习一下。仅供自己及爱好学习者参考。
第一节:搭建activiti流程编辑器(Activiti Designer)
流程编辑可有三种方式:
eclipse在线安装
打开Eclipse -> Help -> Install New SoftWare-> Add
然后按照如下对话框输入:
http://www.activiti.org/designer/update/
后续下一步下一步即可,安装成功后,右键—new—other会出现如下:
点击activiti Diagram新建一个流程
下载离线包安装(自行百度)
Activity官网下载war包部署,通过activiti-explorer在线编辑
官网下载地址:https://www.activiti.org/get-started
点击下载即可,网上5.0版本教程比较多,自行下载版本学习即可,我下载的5.0版本。
解压下载下来的zip包
找到以下路径的war包,可以直接放到tomcat的webapps目录下,部署运行,默认采用的内存下H2数据库,如果想切换数据库,则解压war包,找到以下路径的db.properties文件,更改为自己的数据库即可:
更改完数据库后,将解压的文件夹直接放到tomcat的webapps目录下,启动tomcat,访问http://127.0.0.1:8088/activiti-explorer/,登录进入流程编辑器:
第二节:activiti工程搭建
activiti搭建环境:
jdk:1.8
mysql:5.7
activity:6.0.0
idea:eclipse
框架:springboot + maven
数据库配置,application.yml文件配置:
如果项目中配置多数据源,比如业务库和工作流库不在一起,以下配置可以指定工作流数据库:
对数据源配置如下:
注意:我的springboot是用的2.0.3版本的,所以自定义的activiti数据源是jdbc-url,而不是url,不同版本不同,请注意,否则会报java.lang.IllegalArgumentException: jdbcUrl is required with driverClassName.错误。
常用配置总结:
asyncExecutorEnabled属性设置设置true后将代替那些老的Job executor
spring.activiti.async-executor-enabled=false
spring.activiti.job-executor-activate=false
asyncExecutorActivate是指示activiti在流程引擎启动就激活AsyncExecutor,异步
spring.activiti.async-executor-activate=
校验流程文件,默认校验resources下的processes文件夹里的流程文件
spring.activiti.check-process-definitions=
使用自定义mybatis-mapper
spring.activiti.custom-mybatis-mappers=
spring.activiti.custom-mybatis-xmlmappers=
数据源指定
spring.activiti.database-schema=
建表规则
flase: 默认值。activiti在启动时,会对比数据库表中保存的版本,如果没有表或者版本不匹配,将抛出异常。
true: activiti会对数据库中所有表进行更新操作。如果表不存在,则自动创建。
create_drop: 在activiti启动时创建表,在关闭时删除表(必须手动关闭引擎,才能删除表)。
drop-create: 在activiti启动时删除原来的旧表,然后在创建新表(不需要手动关闭引擎)
spring.activiti.database-schema-update=false
检测历史表是否存在
spring.activiti.db-history-used=false
检测身份信息表是否存在
spring.activiti.db-identity-used=false
流程部署名称
spring.activiti.deployment-name=
记录历史等级 可配置的历史级别有none, acitivity, audit, all
spring.activiti.history-level=
spring jpa使用
spring.activiti.jpa-enabled=false
邮件发送服务配置
spring.activiti.mail-server-default-from=
spring.activiti.mail-server-host=
spring.activiti.mail-server-password=
spring.activiti.mail-server-port=
spring.activiti.mail-server-use-ssl=
spring.activiti.mail-server-use-tls=
spring.activiti.mail-server-user-name=
自定义流程文件位置
spring.activiti.process-definition-location-prefix=
spring.activiti.process-definition-location-suffixes=
activiti rest 配置
spring.activiti.rest-api-enabled=false
spring.activiti.rest-api-mapping=
spring.activiti.rest-api-servlet-name=
配置踩过的坑:
1.启动测试时。如果报错 class path resource [processes/] cannot be resolved to URL because it does not exist 时
解决办法:方法1:你要在resources新建一个processes 文件夹,然后画个流程图。 随便一个。然后放到processes/路径下。然后再启动就可以了。
方法2: 配置properties或yml时
加上 spring.activiti.check-process-definitions=false
2.启动报错org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘org.activiti.spring.boot.SecurityAutoConfiguration’: Initialization of bean failed; nested exception is java.lang.ArrayStoreException: sun.reflect.annotation.TypeNotPresentExceptionProxy;
解决办法:启动类上加上 @SpringBootApplication(exclude = SecurityAutoConfiguration.class)即可;因为activiti-spring-boot-starter-basic中引用了spring-boot-starter-security,前面启动类截图中也标明了。
好了,以上就是整个springboot集成activiti的简单配置,启动成功后,会在数据库自动创建表:
本文主要记录自己搭建activit项目的一个步骤和出错的点,项目搭建成功之后,后续内容就是画流程图和流程api的使用最后和具体业务对接使用了,待学习完后再行总结后续内容。