前言:
个人使用Activiti工作流引擎断断续续差不多快半年了,关于Activiti我的个人感受就是系统且全面的教程太少了,除了咖啡兔的教程大多都是零零散散的几篇文章,非常不利于系统化的学习Activiti,所以我希望通过出这样一个简单的教程来迫使自己更加深入的学习Activiti。由于本人能力所限,文中难免会有错误,还请大家指出,我会及时更改。同时非常感谢咖啡兔所著的《Activiti实战》一书,我在入门阶段主要参考此书来学习的。
什么是Activiti
我们先来看看官方是如何介绍的吧
Activiti是一个轻量级的工作流程和业务流程管理(BPM)平台,面向业务人员,开发人员和系统管理员。它的核心是使用Java开发的极速且稳定的的BPMN 2流程引擎。它是开源的,并在Apache许可下分发。Activiti可在任何Java应用程序,服务器,群集或云中运行。它与Spring完美集成,非常轻巧。
关于bpm和bpmn2.0的相关概念这里就不做具体介绍了。
Activiti发展情况:
Activiti是Tijs Rademakers 领导的团队开发的,直到Activiti6.0后开发团队内部出现了比较大的分歧,所有原有开发团队在Activiti6.0上新开了一个分支叫做Flowable,在写这篇文章的时候Flowable 已经更新到6.4 beta了,而Activiti已经更新到了Activiti7了。
作为一个吃瓜群众我的看法就是Activiti5.22 Activiti6.0以及Flowable6.X 应该都是一个血脉的。所以大家可以先学习Activiti6.0后续切换到Flowable也不是什么大问题。
希望详细了解Activiti和Flowable的区别的可以阅读这篇文章 Activiti和Flowable的区别
Activiti的特点
1. 七大Service接口
这七个Service可以说是整个Activiti的核心了,几乎你能用到的所有功能都需要调用它们,它们就是我们目前学习的主要目标。
接口名 | 作用 |
---|---|
RepositoryService | 流程仓库Service,用于管理流程仓库,例如:部署,删除,读取流程资源 |
IdentityService | 身份Service,可以管理,查询用户,组之间的关系 查询任务的候选组/人 |
HistoryService | 历史Service,可以查询所有历史数据,例如:流程实例,任务,活动,变量,附件等 |
RuntimeService | 运行时Service,可以处理所有正在运行状态的流程实例,任务等 |
FormService | 表单Service,用于读取和流程,任务相关的表单数据 |
ManagementService | 引擎管理Service,和具体业务无关,主要是可以查询引擎配置,数据库,作业等 |
2. 流程设计器
目前一共有3款流程编辑器,Eclipse的插件,IDEA 的插件,还有一个Web编辑器Activiti modeler 需要下载这个编辑器项目运行,或者集成到自己的项目。
- Eclipse 流程设计插件在线安装地址已经失效了,可以在GitHub的官方地址下载离线安装包
- IDEA 在插件仓库搜索actiBPM安装即可(这个插件,我非常想吐槽,画个直线是真的难,即便在编辑器里面是直线,后面用Activiti的API生成的图也是弯的。)
- Activiti modeler的集成教程后续更新。
3. 原生支持Spring
咳咳,这一点我感觉没啥好说的了,总之就是非常方便的和Spring集成,只需要简单配置几个Bean实例,就可以启动Activiti流程引擎,下一个小节中就会讲解如何与Spring整合。
4. 当前和历史数据的分离
Activiti在数据库表结构设计上将不同类型的数据分表存放,尤其是正在运行的流程和已经结束的流程是分成两大类表的,所以这将大幅度的提高查询效率,即使一个系统使用了很久之后大量流程数据也不会对正在运行的流程产生太大的影响。
Activiti 数据库设计
数据库表的创建可以在第一次启动流程引擎的时候由Activiti自动创建,也可以手动创建,后续会有一篇数据库详解的文章,这里只需大概知道有几种分类,以及他们的作用。
表分类 | 表名 | 详情解释 |
---|---|---|
通用数据 | 1.ACT_GE_BYTEARRAY | 通用的流程定义和流程资源 |
2.ACT_GE_PROPERTY | 系统相关属性 | |
历史流程 | 3.ACT_HI_ACTINST | 历史的活动节点表 |
4.ACT_HI_ATTACHMENT | 历史的流程附件 | |
5.ACT_HI_COMMENT | 历史的说明性信息 | |
6.ACT_HI_DETAIL | 历史的流程运行中的细节信息 | |
7.ACT_HI_IDENTITYLINK | 历史的流程运行过程中用户关系 | |
8.ACT_HI_PROCINST | 历史的流程实例 | |
9.ACT_HI_TASKINST | 历史的任务实例 | |
10.ACT_HI_VARINST | 历史的流程运行中的变量信息 | |
用户组表 | 11.ACT_ID_GROUP | 身份信息-用户组信息表 |
12.ACT_ID_INFO | 身份信息-用户扩展信息表 | |
13.ACT_ID_MEMBERSHIP | 身份信息-用户和组关系的中间表 | |
14.ACT_ID_USER | 身份信息-用户信息 | |
15.ACT_RE_DEPLOYMENT | 部署信息表 | |
16.ACT_RE_MODEL | 模型信息表 | |
17.ACT_RE_PROCDEF | 已部署的流程定义表 | |
运行实例表 | 18.ACT_RU_DEADLETTER_JOB | 作业死信表-作业失败超过重试次数 |
19.ACT_RU_EVENT_SUBSCR | 运行时事件 | |
20.ACT_RU_EXECUTION | 运行时流程执行实例 | |
21.ACT_RU_IDENTITYLINK | 运行时人员表 | |
22.ACT_RU_JOB | 运行时作业 | |
23.ACT_RU_SUSPENDED_JOB | 运行时作业暂停表 6.0新增 | |
24.ACT_RU_TASK | 运行时任务 | |
25.ACT_RU_TIMER_JOB | 运行时定时器作业表 6.0新增 | |
26.ACT_RU_VARIABLE | 运行时变量表 | |
其他表 | 27.ACT_EVT_LOG | 流程引擎的通用事件日志记录表 |
28.ACT_PROCDEF_INFO | 流程定义的动态变更信息 6.0新增 |
网友评论