Activiti6系列(1)- 核心数据库表及字段注释说明

前言

本文是根据《疯狂工作流讲义-Activiti6.0》一书中提取过来的,有兴趣的可以去当当网买这本书,讲的很不错,最后还有实战案例。

虽然是提取过来的,但完全靠手打梳理,觉得有用的小伙伴可以给予一定支持,谢谢。


共分为六大部分

1、通用数据表
2、流程存储数据表
3、身份数据表
4、运行时数据表
5、历史数据表
6、DMN规则引擎数据表


一、通用数据表

1、资源表,act_ge_bytearray
用于保存和流程引擎相关的资源,只要调用了Activiti存储服务的API,涉及的资源均会被转换为byte数组保存到这个表中。
一般情况下,Activiti使用这个表来保存字符串、流程文件的内容、流程图片内容。

主要包含如下字段:

字段 注释
REV_ 数据版本,Activiti为一些有可能会被频繁修改的数据表,加入该字段,用来表示该数据被操作的次数。
Name_ 资源名称,类型为varchar,长度为255字节。
DEPLOYMENT_ID_ 一次部署可以添加多个资源,该字段与部署表act_re_deployment的主键相关联。
BYTES_ 资源内容,数据类型为longblob,最大可存4GB数据。
GENERATED_ 是否由Activiti自动产生的资源,0表示false,1为true。


2、属性表,act_ge_property
Activiti将全部的属性抽象为key-value对,每个属性都有名称和值,使用act_ge_property来保存这些属性,该表有以下三个字段。

字段 注释
NAME_ 属性名称,varchar类型。
VALUE_ 属性值,varchar类型。
REV_ 数据的版本号。


二、流程存储数据表

1、部署数据表,act_re_deployment。
部署信息会被保存在部署表中
主要包含字段:

字段 注释
NAME_ 部署的名称,可以调用Activiti的流程存储API来设置,类型为varchar,长度为255字节。
DEPLOYMENT_TIME_ 部署时间,类型为timestamp。


2、流程定义表,act_re_procdef。
Activiti在部署添加资源时,如果发布部署的文件是流程文件(.bpmn或者.BPMN20.xml),则除了会解析这些流程文件,将内容保存到资源表外,还会解析流程文件的内容,形成特定的流程定义数据,写入流程定义表中。
主要包含字段:

字段 注释
GATEGORY_ 流程定义的分类,读取流程XML文件中的targetNamespace值。
NAME_ 流程定义名称,读取流程文件中process元素的name属性。
KEY_ 流程定义的key,读取流程文件中process元素的id属性。
DEPLOYMENT_ID_ 流程定义对应的部署数据ID
RESOURCE_NAME_ 流程定义对应的资源名称,一般为流程文件的相对路径。
DGRM_RESOURCE_NAME_ 流程定义对应的流程图资源名称
SUSPENSION_STATE_ 表示流程定义的状态是激活还是中止,激活状态时该字段值为1,中止时字段值为2,如果流程定义被设置为中止状态,那么将不能启动流程。


三、身份数据表

1、用户表,act_id_user。
流程引擎的用户信息被保存在act_id_user表中
主要包含字段:

字段 注释
FIRST_ 人名
LAST_ 姓氏
EMAIL_ 用户邮箱
PWD_ 用户密码
PICTURE_ID_ 用户图片,对应资源中的数据ID。


2、用户账号信息表,act_id_info。
Activiti将用户、用户账号和用户信息分为三种数据,其中用户表保存用户的数据,而用户账号和用户信息,则被保存到act_id_info表中。
主要包含字段:

字段 注释
USER_ID_ 对应用户表的数据ID,但没有强制做外键关联。
TYPE_ 信息类型,当前可以设置用户账号(account)、用户信息(userinfo)和NULL三种值。
KEY_ 数据的键,可以根据该键来查找用户信息的值。
VALUE_ 数据的值,类型为varchar,长度为255字节。
PASSWORD_ 用户账号的密码字段,不过当前版本的Activiti并没有使用该字段。
PARENT_ID_ 该信息的父信息ID,如果一条数据设置了父信息ID,则表示该数据时用户账号(信息)的明细数据,例如一个账号有激活日期,那么激活日期就是该账号的明细数据,此处使用了自关联来实现。


3、用户组表,act_id_group。
保存用户组的数据
主要包含字段:

字段 注释
NAME_ 用户组名称
TYPE_ 用户组类型,类型不由Activiti提供,但是在某些业务中,Activiti会根据该字段的值进行查询,字段值由Activiti定义(如Activiti的webservice)。


4、关系表,act_id_membership。
一个用户组下有多个用户,一个用户可以属于不同的用户组,那么这种多对多的关系,就使用关系表来进行描述,关系表为act_id_membership。
主要包含字段:

PS:act_id_membership的两个字段均做了外键约束,写入该表的数据,必须要有用户和用户组数据与之关联。
字段 注释
USER_ID_ 用户ID,不能为NULL。
GROUP_ID_ 用户组ID,不能为NULL。


四、运行时数据表

1、流程实例表,act_ru_execution。
流程启动后,会产生一个流程实例,同时会产生相应的执行流,流程实例和执行流数据均被保存在act_ru_execution表中,如果一个流程实例只有一条执行流,那么该表中只产生一条数据,该数据既表示执行流,也表示流程实例。
主要包含字段:

字段 注释
PROC_INST_ID_ 流程实例ID,一个流程实例有可能会产生多个执行流,该字段表示执行流所属的流程实例。
BUSINESS_KEY_ 启动流程时指定的业务主键
PARENT_ID_ 父执行流的ID,一个流程实例有可能会产生执行流,该字段保存父执行流ID。
PROC_DEF_ID_ 流程定义数据的ID
ACT_ID_ 当前执行流行为的ID,ID在流程文件中定义。
IS_ACTIVE_ 该执行流是否活跃的标识
IS_CONCURRENT_ 执行流是否正在并行
SUSPENSION_STATE_ 标识流程的中断状态


2、流程任务表,act_ru_task。
流程在运行过程中所产生的任务数据保存在act_ru_task表中
主要包含字段:

字段 注释
EXECUTION_ID_ 任务所在的执行流ID
PROC_INST_ID_ 对应的流程实例ID
PROC_DEF_ID_ 对应流程定义数据的ID
NAME_ 任务名称,在流程文件中配置。
DESCRIPTION_ 任务描述,在流程文件中配置。
TASK_DEF_KEY_ 任务定义的ID值,在流程文件中定义。
OWNER_ 任务拥有人,没有做外键关联。
ASSIGNEE_ 被指派执行该任务的人,没有做外键关联。
PRIORITY_ 任务优先级数值
DUE_DATE_ 任务预定日期,类型为datetime。


3、流程参数表,act_ru_variable。
存放流程中的参数,这类参数包括流程实例参数、执行流参数和任务参数,参数有可能会有多种类型,因此该表使用多个字段来存放参数值。
主要包含字段:

字段 注释
TYPE_ 参数类型,该字段值可以为boolean、bytes、serializable、date、double、integer、jap-entity、long、null、short、string,这些字段值均为Activiti提供,还可以通过扩展来自定义参数类型。
NAME_ 参数名称
EXECUTION_ID_ 该参数对应的执行ID,可以为null。
PROC_INST_ID 该参数对应的流程实例ID,可以为null。
TASK_ID_ 如果该参数是任务参数,就需要设置任务ID。
BYTEARRAY_ID_ 如果参数值是序列化对象,那么可以将该对象作为资源保存到资源表中,该字段保存资源表中数据的ID。
DOUBLE_ 参数类型为double的话,则值会保存到该字段中。
LONG_ 参数类型为long的话,则值会保存到该字段中。
TEXT_ 用户保存文本类型的参数值,该字段为varchar类型,长度为4000字节。
TEXT2_ 与TEXT_字段一样,用于保存文本类型的参数值、


4、流程与身份关系表,act_ru_identitylink。
用户或者用户组与流程数据之间的关系,使用act_ru_identitylink来保存。
主要包含字段:

字段 注释
GROUP_ID_ 该关系数据中的用户组ID
TYPE_ 该关系数据的类型,当前提供了3个值:assignee、candidate和owner,表示流程数据的指派人(组)、候选人(组)和拥有人。
USER_ID_ 关系数据中的用户ID
TASK_ID_ 关系数据中的人物ID
PROC_DEF_ID_ 关系数据中的流程定义ID


5、工作数据表,一共4个。
act_ru_job:一般工作表
act_ru_deadletter_job:无法执行工作表,用于存放无法执行的工作。
act_ru_suspended_job:中断工作表,中断工作产生后,会将工作保存到该表中。
act_ru_timer_job:定时器工作表,用于存放定时器工作。


6、事件描述表,act_ru_event_subscr。
如果流程到达某类事件节点,Activiti会往act_ru_event_subscr表中加入事件描述数据,这些事件描述数据将会决定流程事件的触发。
主要包含字段:

字段 注释
EVENT_TYPE_ 事件类型,不同的事件会产生不同类型的事件描述,并不是所有的事件都会产生事件描述。
EVENT_NAME_ 事件名称,在流程文件中定义。
EXECUTION_ID_ 事件所在的执行流ID
PROC_INST_ID_ 事件所在的流程实例ID
ACTIVITY_ID_ 具体事件的ID,在流程文件中定义。
CONFIGURATION_ 事件的配置属性,该字段中有可能存放流程定义ID、执行流ID或者其他数据。


五、历史数据表

1、流程实例表,act_hi_procinst。
流程实例的历史数据会保存在act_hi_procinst表中,只要流程被启动,就会将流程实例的数据写入act_hi_procinst表中。除了基本的流程字段外,与运行时数据表不同的是,历史流程实例表还会记录流程的开始活动ID、结束活动ID等信息。
主要包含字段:

PS:该表的其他字段含义与运行时的流程视力表字段类似,在此不再赘述。
字段 注释
START_ACT_ID_ 开始活动的ID,一般是流程开始事件的ID,在流程文件中定义。
END_ACT_ID_ 流程最后一个活动的ID,一般是流程结束事件的ID,在流程文件中定义。
DELETE_REASON_ 该流程实例被删除的原因


2、流程明细表,act_hi_detail。
记录流程执行过程中的参数或者表单数据,由于在流程执行过程中,会产生大量这类数据,因此默认情况下,Activiti不会保存流程明细数据,除非将流程引擎的历史数据配置为null。


3、历史任务表,act_hi_taskinst。
当流程到达某个任务节点时,就会向历史任务表中写入历史任务数据,该表与运行时的任务表类似。


4、历史行为表,act_hi_actinst。
记录没一个流程活动的实例,一个流程活动将会被记录为一条数据,根据该表可以追踪最完整的流程信息。


5、附件表,act_hi_attachment。
使用任务服务(TaskService)的API,可以添加附件,这些附件的数据将会被保存到act_hi_attachment表中。
主要包含字段:

字段 注释
USER_ID_ 附件对应的用户ID,可以为NULL。
NAME_ 附件名称
DESCRIPTION_ 附件描述
TYPE_ 附件类型
TASK_ID_ 该附件对应的任务ID
PROC_INST_ID_ 对应的流程实例ID
URL_ 连接到该附件的URL
CONTENT_ID_ 附件内容ID,附件的内容将会被保存到资源表中,该字段记录资源数据ID。


6、评论表,act_hi_comment。
不只保存评论数据,还会保存某些事件数据,但它的表名为COMMENT,因此更倾向把它叫做评论表。
主要包含字段:

字段 注释
TYPE_ 评论的类型,可以设值为event或者comment,表示事件记录数据或者评论数据。
TIME_ 数据产生的时间
USER_ID_ 产生评论数据的用户ID
TASK_ID_ 该评论数据的任务ID
PROC_INST_ID_ 数据对应的流程实例ID
ACTION_ 该评论数据的操作标识
MESSAGE_ 该评论数据的信息
FULL_MSG_ 该字段同样记录评论数据的信息


六、DMN规则引擎数据表

1、决策部署表,act_dmn_deployment。
保存决策数据,类似于流程定义部署,每一次部署,可以添加多份决策文件,向部署表中写入一条部署数据。
主要包含字段:

PS:只启动流程引擎,并不会创建规则引擎表。
字段 注释
NAME_ 部署名称
CATEGORY_ 部署的目录名称
PARENT_DEPLOYMENT_ID_ 父部署ID


2、决策表,act_dmn_decision_table。
可以先将决策看做流程定义,决策文件中保存着决策表,部署时会解析决策文件中的决策模型并将其保存到act_dmn_decision_table中。
主要包含字段:

字段 注释
KEY_ 决策业务主键
DEPLOYMENT_ID_ 所属的部署数据ID


3、部署资源表,act_dmn_deployment_resource。
规则引擎相关的资源,例如决策文件、图片等,被保存在act_dmn_deployment_resource表中,该表类似于流程引擎的资源表。
主要包含字段:

字段 注释
NAME_ 资源名称
DEPLOYMENT_ID_ 所属的部署数据ID
RESOURCE_BYTES_ 资源内容,longblob类型。


结语

Activiti6.0的表相较于Activiti5有所不同,但核心的内容实质上还是一样,数据库这一块没有太大差别,对于这么多表,大体过一遍有个印象即可,Activiti6.0的重点仍在核心API。


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,013评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,205评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,370评论 0 342
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,168评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,153评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,954评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,271评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,916评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,382评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,877评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,989评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,624评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,209评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,199评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,418评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,401评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,700评论 2 345