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。
Activiti6系列(1)- 核心数据库表及字段注释说明的更多相关文章
- Java 通过JDBC查询数据库表结构(字段名称,类型,长度等)
Java 通过JDBC查询数据库表结构(字段名称,类型,长度等) 发布者:唛唛家的豆子 时间:2012-11-20 17:54:02 Java 通过JDBC查询数据库表结构(字段名称,类型,长 ...
- 关于Oracle.ManagedDataAccess数据库表加字段后,必须重启的问题
关于Oracle.ManagedDataAccess数据库表加字段后,必须重启的问题,解决方法如下:在数据库连接字串中,增加一个参数:Metadata Pooling=false如“Data Sour ...
- 一、数据库表中字段的增删改查,二、路由基础.三、有名无名分组.四、多app共存的路由分配.五、多app共存时模板冲突问题.六、创建app流程.七、路由分发.八、路由别名,九、名称空间.十、反向解析.十一、2.x新特性.十二、自定义转换器
一.数据库表中字段的增删改查 ''' 直接在modules中对字段进行增删改查 然后在tools下点击Run manage.py Task执行makemigrations和migrate 注意在执行字 ...
- Yii2给数据库表添加字段后对应模型无法识别到该属性的原因和解决办法
Yii2给数据库表添加字段后对应模型无法识别到该属性的原因和解决办法 应为数据库表的结构被缓存了.删除runtime文件夹或者执行 //清理指定表结构缓存数据 Yii::$app->db-> ...
- sqlserver添加表、字段注释
引用 :http://begoodluck.blog.163.com/blog/static/20450728020141191412788/ 1.sqlserver用语句给表注释EXECUTE sp ...
- sqlserver添加查询 表、字段注释(转)
环境:xp sp3,sql server2008 .sqlserver用语句给表注释 EXECUTE sp_addextendedproperty N'MS_Description', N'表注释', ...
- [转]基于SQL脚本将数据库表及字段提取为C#中的类
开发时,勉不了需要使用SQL直接与数据库交互,这时对于数据库中的表名及字段名会使用的比较多.如果每使用一次都复制一个,实在蛋疼.所以就考虑将其做成const常量.但是数据库中的表和字段相当多,一个一个 ...
- java获取mysql数据库表、字段、字段类型、字段注释
最近想要写一个根据数据库表结构生成实体.mapper接口.mapping映射文件.service类的简单代码生成工具,所以查阅了一些资料,怎样获取数据库的表.表中字段.字段类型.字段注释等信息. 最后 ...
- MySQL数据库中查询数据库表、字段总数量,查询数据总量
最近要查询一些数据库的基本情况,由于以前用oracle数据库比较多,现在换了MySQL数据库,就整理了一部分语句记录下来. 1.查询数据库表数量 #查询MySQL服务中数据库表数据量 SELECT C ...
随机推荐
- 带你全面了解高级 Java 面试中需要掌握的 JVM 知识点
目录 JVM 内存划分与内存溢出异常 垃圾回收算法与收集器 虚拟机中的类加载机制 Java 内存模型与线程 虚拟机性能监控与故障处理工具 参考 带你全面了解高级 Java 面试中需要掌握的 JVM 知 ...
- HDU 2896:病毒侵袭(AC自动机)
http://acm.hdu.edu.cn/showproblem.php?pid=2896 题意:中文题意. 思路:AC自动机模板题.主要在于字符有128种,输出还要排序和去重! 注意是“total ...
- .NET Core CSharp初级篇 1-1
.NET Core CSharp初级篇 1-1 本节内容是对于C#基础类型的存储方式以及C#基础类型的理论介绍 基础数据类型介绍 例如以下这句话:"张三是一名程序员,今年15岁重50.3kg ...
- JAVA AES文件加解密
AES加解密算法,代码如下: /** * Created by hua on 2017/6/30. */ import javax.crypto.Cipher; import javax.crypto ...
- Python 为什么要继承 object 类?
自己搬运自己在知乎上的回答,感觉破乎吃枣药丸,哪天挂了这里就是个备份. 链接:https://www.zhihu.com/question/19754936/answer/229327803 2017 ...
- MediatR-进程内的消息通信框架
MediatR是一款进程内的消息订阅.发布框架,提供了Send方法用于发布到单个处理程序.Publish方法发布到多个处理程序,使用起来非常方便.目前支持 .NET Framework4.5..NET ...
- bzoj2431 || 洛谷P1521 求逆序对
考虑一下插⼊法 n<=100n<=100n<=100 f[i][j]f[i][j]f[i][j]表⽰111~iii的全排列有j个逆序对的⽅案数 f[i][j]=Σf[i−1][j−k ...
- React躬行记(9)——组件通信
根据组件之间的嵌套关系(即层级关系)可分为4种通信方式:父子.兄弟.跨级和无级. 一.父子通信 在React中,数据是自顶向下单向流动的,而父组件通过props向子组件传递需要的信息是组件之间最常见的 ...
- Excel催化剂图表系列之一键完成IBCS国际商业标准图表
在数据分析领域,最后一公里的图表输出,是一片十分广阔的领域.一直以来,笔者深知不是这一方面的能手,学习上也仅仅是浅尝而止.没有往其深入研究并有所产出.很幸运地在数据圈子能够结识到其他的志同道合的伙伴, ...
- codewars[7]-python Friend or Foe?
list中保留四字母的,然后return. 解 def friend(x): i = len(x) ii = [] a = 0 while a < i: if len(x[a]) == 4: i ...