1.简述
项目中对于多表单提交、多角色审核的业务流程可以用工作流框架进行简化,目前业界最主流工作流技术就是Activiti,由于Activiti是由BPMN语言定义的,语言比较陌生,可使用BPMN设计器基于bpmn-js来实现工作流的开发,设计器网址:GitHub - Activiti/activiti-modeling-app: Activiti Modeling Application
2.环境搭建(SpringBoot集成了Activiti)
2.1 activiti7以后导入依赖需要引入安全框架
依赖:activiti-spring-boot-starter与spring-boot-starter-security
2.2 application.yml中activiti的配置如check-process-definitions关闭流程自动部署,需要手动部署流程
3.数据表快速了解
配置启动类,启动后会自动生成以ACT开头的25张表与项目中的表加以区分
GE 为通用信息
RE 为流程定义
RU 为运行时的表
HI 为历史记录
25张表对应的表操作封装了对应的Service
RepositoryService、RuntimeService、TaskService、HistoryService
快速入门可重点掌握4张表,2张用于流程定义,2张用于具体流程实例
act_re_deployment act_re_procdef act_ru_execution act_ru_task观察每个流程后其中字段的变化
4.bpmn-js图形化流程绘制
注意整个流程编号(代码用)和名称(给人看)的填写
代理人可以是UEL表达式分配,即人的占位符占位
也可以采用监听器,监听(如create事件)后进行具体执行人分配
也可采用候选人机制(可以是候选人也可以是候选组)
整个流程按流程走向,遇到流程网关,会根据网关判断下个流程的分流走向
流程网关分:排他网关、并行网关、包容网关
绘制完毕后导出相应的bpmn文件,最好png也截图存好(js重开无历史记录)
5.代码流程思路
5.1部署流程
repositoryService加载bpmn文件,对应名字为之前图形化界面流程编号名字
deploy开始部署
5.2启动流程实例
runtimeService获取各个执行流程的执行人信息,给流程中的变量进行赋值,流程人根据具体业务而定.
taskService各执行人按流程填写信息,后台获取,走流程即可
其中候选人机制还需拾取任务,如过不想操作可归还和交接任务