概述
什么是工作流
工作流就是通过计算机对业务流程自动化执行管理。<br>它主要解决的是“使在多个参与者 之间按照某种预定<br>义的规则自动进行传递文档、信息或任务的过程,从而<br>实现某个预期的业务目标, 或者促使此目标的实现”
为什么使用工作流引擎<br>
工作流引擎能够统一管理系统使用的流程,并可以<br>根据绘制好的流程图,执行跳转流程节点,并且常<br>见的工作流引擎都自带数据持久化功能,还提供了<br>丰富的API能够去操作持久化的数据,实现业务上<br>的功能
工作流引擎最常见用于审批流程中,现在一线互联网公司也开始使用,<br>并有快速推广的趋势,复杂繁多的业务流程如果采用if else实现那将是崩溃的,<br>代码不可维护,业务流程在代码中可读性很差,所以高人设计了业务流程<br>模型图示BPMN2.0,我们要做到就是把业务场景抽象为标准流程图,<br>把流程图丢到流程引擎中按流程定义约定逐步流转,很显然扩展性和业务<br>可描述性会好很多,所以工作流引擎主要用于解决复杂的业务,目前经常<br>被提起的中台系统抽象业务为服务,也涉及大量智能的业务流程引擎做支撑。<br>
BPMN
业务流程模型和符号 是由 BPMI(Business Process Management Initiative)<br>开发的一套标准的业务流程建模符号,使用 BPMN 提供的符号可以 创建业务流程<br>,是目前被各 BPM 厂商广泛接受的 BPM 标准
BPMN提供了清晰而精准的执行语义来描述元素的操作。<br>它还确保设计为业务流程执行的XML语言(如WS-BPEL)<br>,能够用这套以业务为中心的符号所可视化表示
常见的工作流开源框架
Flowable
基于Activiti5.0版本单独开发的一套流程引擎
Activiti
市面上比较常见的工作流引擎开源框架
相同点
数据库表名基本相同,核心API也基本相同,只是包名可能不同<br>,学习Acitivi时的demo可直接在Flowable环境下去运行<br>
Flowable已经修复了activiti6很多的bug,可以实现零成本从activiti迁移到flowable
框架发展前景
Flowable
Flowable今后的版本可能跟多偏向商业化版本,开源版本可能会维护较少
基础入门
1.集成Spring Boot,启动项目,生成流程引擎相关的数据库表
2.根据流程需求绘制并生成BPMN标准格式的XML文件(可用引擎自带的流程设计器完成)
基本开始结束节点创建
用户节点创建
节点之间连线,可设置连线中的条件
设置节点变量,节点用户等等
排他网关,并行网关了解与使用
生成流程图BPMN20.XML文件(流程设计器自带下载功能)
3.调用核心API,部署发布创建好的流程(可根据XML创建),也可放到工程指定目录下,由流程引擎自己发现并发布<br>
4.通过代码调用核心API,启动创建一个流程实例,完成一个用户任务节点,观察核心数据表数据变化
5.走完流程,再观察数据库表数据变化
工作流设计
流程设计
流程设计器
Flowable
Flowable-Modeler
Activiti
Activiti-Modeler
表单设计
数据库表
ACT_RE_*
'RE'表示repository。 这个前缀的表包含了流程定义和流程静态资源 (图片,规则,等等)
核心表
act_re_deployment
部署信息表,流程部署发布成功时会在该表插入一条记录
act_re_procdef<br>
流程定义数据表,流程部署发布成功时会在该表插入一条记录<br>
ACT_RU_*
'RU'表示runtime。 这些运行时的表,包含流程实例,任务,变量,异步任务,等运行中的数据
核心表
act_ru_execution<br>
运行时流程执行实例表,当用户发起流程时会在该表插入记录<br>
act_ru_variable<br>
运行时变量表,记录流程运行时传递使用的变量信息
ACT_ID_*
'ID'表示identity。 这些表包含身份信息,比如用户,组等等
ACT_HI_*
'HI'表示history。 这些表包含历史数据,比如历史流程实例, 变量,任务等等
核心表
ACT_HI_PROCINST<br>
历史流程实例表,可查询运行过的流程实例信息
ACT_HI_TASKINST<br>
历史任务表,可用于查询用户流程历史记录<br>
ACT_GE_*
通用数据, 用于不同场景下,如存放资源文件
核心表
act_ge_bytearray
通用信息表,存储流程发布的资源信息<br>