一、前言
工作流(Workflow),就是“业务过程的部分或整体在计算机应用环境下的自动化”。在工作中慢慢接触的业务流程,就向流程控制语言一样,一步一步都对应的不同的业务,但整体串联起来就是一个完整的业务。而且实际工作中尤其是在企业内部系统的研发中,确实需要对应许多审批流程的管理。而工作流就是能够在程序中,将这些支离破碎的流程,通过配置的方式管理起来,整体作为一个流程,方便修改,也方便维护。
demo:
我们在学生时代,肯定会遇到请假写请假条的情况,如果学校的请假抓得非常严,就需要经过多层的同意才能确定能不能请假…
班主任->任课老师->教学总监->校长这么一个流程,首先我们先明确一点:我们作为一个学生,不可能直接跳过老师,去找校长申请请假的.因此我们请假的流程是一步一步的,并不能做跳跃。对上面的请假流程进行分析**,如果我们没有使用框架,而把这么一个请假流程写到我们的网站中,我们会怎么做呢???
二、什么是Activiti工作流框架?
Activiti是一个比较出名的框架,或者说就是一个工作流引擎,通俗的说,就是Activiti引擎我们只要按照它已有的配置,来进行现有业务的对应,它就能够自动帮助我们完成以前不好控制的流程问题。
官网通用打包下载:http://www.activiti.org/
源代码github:https://github.com/Activiti/Activiti
三、采用工作流框架优点
1、提高系统的柔性,适应业务流程的变化
2、实现更好的业务过程控制,提高顾客服务质量
3、降低系统开发和维护成本
四、快速入门Activiti
1.Activiti的开发步骤:
1.首先就要把这个工作流定义出来(Activiti支持以“图”的方式来定义)
2.定义完工作流,就要部署到起来
3.随后我们就执行该工作流!
但是在实际开发中,让用户来画Activiti定义图,是要学习的成本的。所以我们会以一个更简单的方式来定义流程,比如选好流程审批节点对应的用户,这样就定义好了一个流程。
2.数据库相关(23张表)
Activiti的后台是有数据库的支持,所有的表都以ACT_开头。 第二部分是表示表的用途的两个字母标识。 用途也和服务的API对应。
- ACT_RE_*: 'RE’表示repository。 这个前缀的表包含了流程定义和流程静态资源 (图片,规则,等等)。
- ACT_RU_*: 'RU’表示runtime。 这些运行时的表,包含流程实例,任务,变量,异步任务,等运行中的数据。 Activiti只在流程实例执行过程中保存这些数据, 在流程结束时就会删除这些记录。 这样运行时表可以一直很小速度很快。
- ACT_ID_*: 'ID’表示identity。 这些表包含身份信息,比如用户,组等等。
- ACT_HI_*: 'HI’表示history。 这些表包含历史数据,比如历史流程实例, 变量,任务等等。
- ACT_GE_*: 通用数据, 用于不同场景下,如存放资源文件。
资源库流程规则表
- 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_hi_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属性数据表存储整个流程引擎级别的数据,初始化表结构时,会默认插入三条记录。
把这些东西了解清楚了,那接下我们开始怎么在Activiti框架上实现我们的工作流呢???
地址:https://destinywang.github.io/blog/2018/11/26/Activiti%E5%B7%A5%E4%BD%9C%E6%B5%81%E5%BC%95%E6%93%8E/