Activiti6系列(1)

Wesley13
• 阅读 443

###前言 本文是根据《疯狂工作流讲义-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。


点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Wesley13 Wesley13
2年前
java将前端的json数组字符串转换为列表
记录下在前端通过ajax提交了一个json数组的字符串,在后端如何转换为列表。前端数据转化与请求varcontracts{id:'1',name:'yanggb合同1'},{id:'2',name:'yanggb合同2'},{id:'3',name:'yang
Easter79 Easter79
2年前
swap空间的增减方法
(1)增大swap空间去激活swap交换区:swapoff v /dev/vg00/lvswap扩展交换lv:lvextend L 10G /dev/vg00/lvswap重新生成swap交换区:mkswap /dev/vg00/lvswap激活新生成的交换区:swapon v /dev/vg00/lvswap
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Stella981 Stella981
2年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Stella981 Stella981
2年前
Python之time模块的时间戳、时间字符串格式化与转换
Python处理时间和时间戳的内置模块就有time,和datetime两个,本文先说time模块。关于时间戳的几个概念时间戳,根据1970年1月1日00:00:00开始按秒计算的偏移量。时间元组(struct_time),包含9个元素。 time.struct_time(tm_y
Stella981 Stella981
2年前
Android蓝牙连接汽车OBD设备
//设备连接public class BluetoothConnect implements Runnable {    private static final UUID CONNECT_UUID  UUID.fromString("0000110100001000800000805F9B34FB");
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
6个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这