工作流引擎Activiti与SpringBoot2整合

来源 | urlify.cn/u2mUNf
工作流引擎Activiti与SpringBoot2整合文章插图
为什么选择Activiti最常用的工作流引擎Activiti和JBPM , 我当初是如何选择的呢?要考虑学习成本、现有功能、兼容性、版本稳定性、可扩展性等等 。
(1)Activiti的创始人Tom Baeyens是JBPM之前版本的核心人物 , 从这个层面出发Activiti工作流引擎的是站在巨人的肩膀上打造的 , 肯定会积累很多之前的经验 , 并解决很多之前遇到的问题 。
(2)Activiti使用了我们更常用的技术 , 例如IOC、AOP、MyBatis、WebService、Restful , 核心引擎则是基于之前版本的PVM , 接口设计优雅;而JBPM完全舍弃了之前的引擎 , 基于JBoss的Drools Flow实现 , 接口层面的设计十分混乱 。
(3)Activiti做了更多的扩展功能 , 比如相对完整的表单设计 , 流程的热部署、更加丰富的IDE插件 。
Acitviti框架下面来说说Activiti框架的核心功能
1、7个接口:工作流引擎可以想象成一个服务端 , 部署好以后 , 是需要客户端的调用才能实现对工作流程的操作 。
工作流引擎Activiti与SpringBoot2整合文章插图

  • RepositoryService:提供一系列管理流程部署和流程定义的API 。
  • RuntimeService:在流程运行时对流程实例进行管理与控制 。
  • TaskService:对流程任务进行管理 , 例如任务提醒、任务完成和创建任务等 。
  • IdentityService:提供对流程角色数据进行管理的API , 这些角色数据包括用户组、用户等 。
  • ManagementService:提供对流程引擎进行管理和维护的服务 。
  • HistoryService:对流程的历史数据进行操作 , 包括查询、删除这些历史数据 。
  • FormService:表单服务 。
2、28张表:表记录了用户信息、流程信息、历史信息等各种数据
工作流引擎Activiti与SpringBoot2整合文章插图
资源库流程规则表act_re_deployment 部署信息表act_re_model 流程设计模型部署表act_re_procdef 流程定义数据表运行时数据库表act_ru_execution 运行时流程执行实例表act_ru_identitylink 运行时流程人员表 , 主要存储任务节点与参与者的相关信息act_ru_task 运行时任务节点表act_ru_variable 运行时流程变量数据表历史数据库表act_hi_actinst 历史节点表act_hi_attachment 历史附件表act_ih_comment 历史意见表act_hi_identitylink 历史流程人员表act_hi_detail 历史详情表 , 提供历史变量的查询act_hi_procinst 历史流程实例表act_hi_taskinst 历史任务实例表act_hi_varinst 历史变量表组织机构表act_id_group 用户组信息表act_id_info 用户扩展信息表act_id_membership 用户与用户组对应信息表act_id_user 用户信息表通用数据表act_ge_bytearray 二进制数据表act_ge_property 属性数据表存储整个流程引擎级别的数据
3、BPMN业务流程模型:可以通过流程图的方式配置业务流程、分支、条件等 , 最终生成引擎可识别的xml文件
工作流引擎Activiti与SpringBoot2整合文章插图
BPMN2.0是一套建立工作流程模型的标准 。 下面说几个重点的元素和符号 。
(1)事件:常用的是开始事件、结束事件 , 用于标识流程的开始和结束
(2)活动:常用的是任务 , 用于描述流程节点中的一项工作
(3)网关:常用包括并行网关、排他网关 , 并行即同时流转多个分支 , 排他即只流转其中一个分支
与SpringBoot整合(1)修改POM添加依赖
org.activitiactiviti-spring-boot-starter-basic6.0.0(2)将BPMN2.0规范的XML文件拷贝到项目目录下:/resources/processes
(3)构建表结构 , 修改springBoot主配置文件application.properties
spring.activiti.database-schema-update=true设置成true以后 , 会在项目启动的时候自动创建Activiti表结构 , 首次数据表建好后建议改成false
(4)Activiti相关配置 , 修改springBoot主配置文件application.properties
#保存历史数据得级别 , 分为none、activity、audit(默认)、fullspring.activiti.history-level=full#是否校验流程文件 , 默认校验resources下的processes文件夹里的流程文件spring.activiti.check-process-definitions=false#修改默认的流程文件存储位置spring.activiti.process-definition-location-prefix=classpath:/processes/(5)通过注解方式访问常用接口
@Autowiredprivate RuntimeService runtimeService; @Autowiredprivate TaskService taskService; @Autowiredprivate IdentityService identityService; @Autowiredprivate RepositoryService repositoryService; @Autowiredprivate ProcessEngine processEngine; @Autowiredprivate HistoryService historyService;