更多nbcio-boot功能请看演示系统
gitee源代码地址
后端代码: https://gitee.com/nbacheng/nbcio-boot
前端代码:https://gitee.com/nbacheng/nbcio-vue.git
在线演示(包括H5) : http://122.227.135.243:9888
前言:
要对flowable的表先有全面的认识,需要我们深入研究flowable的各个表意义。整合网上各个来源,加上自己实践过程中的认识整理出来以下内容。
表名规则:
目前一共38张表
Activiti 使用到的表都是 ACT_ 开头的。表名的第二部分用两个字母表明表的用途。
- ACT_GE_ (GE) 表示 general 全局通用数据及设置,各种情况都使用的数据。
- ACT_HI_ (HI) 表示 history 历史数据表,包含着程执行的历史相关数据,如结束的流程实例,变量,任务,等等
- ACT_ID_ (ID) 表示 identity 组织机构,用户记录,流程中使用到的用户和组。这些表包含标识的信息,如用户,用户组,等等。
- ACT_RE_ (RE) 表示 repository 存储,包含的是静态信息,如,流程定义,流程的资源(图片,规则等)。
- ACT_RU_ (RU) 表示 runtime 运行时,运行时的流程变量,用户任务,变量,职责(job)等运行时的数据。Activiti 只存储实例执行期间的运行时数据,当流程实例结束时,将删除这些记录。这就保证了这些运行时的表小且快。
注: 要删除流程任务运行实例与历史表,可以删除ACT_HI_和ACT_RU_的表数据。
1、act_evt_log
Flowable引入了事件日志机制。日志机制基于Flowable引擎的事件机制,并默认禁用。总的来说,来源于引擎的事件会被捕获,并创建一个包含了所有事件数据(甚至更多)的map,提供给org.flowable.engine.impl.event.logger.EventFlusher,由它将这些数据保存其他地方。默认情况下,使用简单的基于数据库的事件处理器/保存器,用Jackson将上述map序列化为JSON,并将其作为EventLogEntryEntity实例存入数据库。默认会在数据库中创建ACT_EVT_LOG表保存事件日志。如果不使用事件日志,可以删除这个表。
2、act_ge_bytearray
每个流程的部署记录,bytes_字段中存储流程的具体内容。每次启动时都会默认部署process目录下的流程文件,执行
repositoryService.createDeployment().deploy方法也会部署流程。
注:流程定义除了上面这个表,还与下面三个表act_re_deployment,act_re_model,act_re_procdef,act_ge_property相关,要清除相关内容,首先需要进行act_ru相关表删除,才能删除这些表内容。
3、act_ge_property
flowable自身的一些变量,主要是版本号。
4、act_hi_actinst
历史执行的所有流程节点的内容。
5、act_hi_attachment
流程历史附件表。
附件自身主要是带上了url。
可以对任务添加附件。
6、act_hi_comment
流程的历史评论表
评论嘛,就带了个string的fullMessage
7、act_hi_detail
流程中历史产生的变量详情。
(在流程中指定变量,流程流转时传入变量,作业务处理,比如判断审核通过还是拒绝)
8、act_hi_entitylink
历史参与的人员表
内部是维护一个scopeId及其关联的scopeId。
每一个task任务属于一个scopeId(需要再研究一下)
9、act_hi_identitylink
记录每一个历史节点的用户(可能是group可能是user)。
10、act_hi_procinst
每一个历史流程,创建时就生成,一条流程实(process)例对应一个记录。
11、act_hi_taskinst
记录每一个历史节点,一个task对应一个记录。
12、act_hi_tsk_log
每一次执行(execution)可能会带上数据,存在这里(data),没有生成过。
HistoricTaskLogEntry类
13、act_hi_varinst
维护所有的历史变量
14、act_id_bytearray
用户组的部署内容
15、act_id_group
所有用户组的信息
16、act_id_info
所有用户的信息,账号密码
17、act_id_membership
用户和用户组的关系
18、act_id_priv
权限表
19、act_id_priv_mapping
用户权限关系表
20、act_id_property
用户的变量,存了版本号。
21、act_id_token
用户访问记录
22、act_id_user
用户基本信息,包括邮箱等
以上几张用户表是对flowable idm的用户管理体系,可以配置用户对api的调用权限。
23、act_procdef_info
流程定义信息,对流程的说明
24、act_re_deployment
流程部署记录,每次服务重启会部署一次,这边新增一条记录。
25、act_re_model
创建模型时,额外定义的一些模型相关信息,存在这张表,默认不存。
26、act_re_procdef
记录流程的变更,流程每变更一次存一条,version_加1
27、act_ru_actinst
act_ru_actinst相比于act_ru_taskinst数据更全一些,为记录工作流中的所有活动(包括开始、任务、结束等)。
28、act_ru_deadletter_job
作业死信表-作业失败超过重试次数,正常情况下,不会有数据
29、act_ru_entitylink
此表存储有关实例的父子关系的信息。例如,如果流程实例启动子案例实例,则此关系存储在此表中。这样可以轻松查询关系
30、act_ru_event_subscr
运行时事件 throwEvent、catchEvent 时间监听信息表(目前我们这边都没用到过哈。。)
31、act_ru_execution
执行实例表:这个表和act_ru_task表,一起控制了用户任务的产生与完成等。
32、act_ru_external_job
Flowable 引擎使用作业表来实现异步逻辑、计时器或历史处理。这些表存储每个作业所需的数据
33、act_ru_history_job
当前流程所有历史执行的任务
但是因为如果流程结束,就查不到这些任务
所以虽然是历史,但是也命名成了act_ru。
What act_ru_history_job is used for? - Flowable Engine - Flowable
34、act_ru_identitylink
此表存储有关用户或组的数据及其与(流程/案例/等)实例相关的角色。该表也被其他需要身份链接的引擎使用。
35、act_ru_job
运行时定时任务数据表,没有定时任务这个也是空的
36、act_ru_suspended_job
运行时作业暂停表,通常也为空
37、act_ru_task
运行时任务节点表,此表包含正在运行的实例的每个未完成用户任务的条目。然后在查询用户的任务列表时使用此表。
38、act_ru_timer_job
- ServiceTask异步任务会产生异步任务,存放在一般工作表act_ru_job中。
- 定时任务会产生定时的任务,在定时时间未到达之前会存放在定时工作表act_ru_timer_job中。
- 挂起任务,比如将未到时间的定时任务手动暂停,则会存放在挂起任务表act_ru_suspended_job中。
- 不可执行任务,如果任务执行失败,并且在重试次数用完的情况下也没有成功执行,则任务会存放到不可执行任务表act_ru_deadletter_job中。
- **后会把数据再放回act_ru_timer_job表中。
39、act_ru_variable
同上act_hi对应表,此表存储与实例相关的变量。。
总结:
通过整理表,发现flowable还:
对task提供了很多配置,包括添加附件、评论,以及设置tenant多租户区分权限;
对自动任务作了完善的机制(包括多次失败、重新**等类型任务的记录维护);
同时也维护了一套用户管理权限,可以基于它实现一套工作流构建的服务。
参考: