Activiti工作流框架学习(一)之通用数据表详细介绍
文/朱季谦
Activiti工作流引擎自带了一套数据库表,这里面有一个需要注意的地方:
低于5.6.4的MySQL版本不支持时间戳或毫秒级的日期。更糟糕的是,某些版本在尝试创建此类列时将引发异常,而其他版本则不会。执行自动创建/升级时,引擎将在执行DDL时更改它。使用DDL文件方法时,既可以使用常规版本也可以使用其中带有mysql55的特殊文件(这适用于低于5.6.4的任何版本)。后一个文件将具有没有毫秒精度的列类型。
笔者曾经在5.6.0版本做过试验,发现是无法自动生成23张表的,但在5.6.4版本以上便可,因此,最好保证mysql版本在5.6.4以上。
一.数据库表名称说明
Activiti的数据库表分5大部分,名称以ACT开头,第二部分是表用例的两个字符的标志,该用例与服务API的大致匹配:
二.ACT_GE_ *通用数据表
通用数据表用于存放一些通用的数据,这些表本身不关心特定的流程或者业务,只用于存放这些业务或者流程所使用的资源。通用数据表有两个,分别是ACT_GE_BYTEARRAY与ACT_GE_PROPERTY,它们都是以ACT_GE_*开头的。
2.1 ACT_GE_BYTEARRAY资源表
表ACT_GE_BYTEARRAY资源表用于保存于流程引擎相关的资源,流程文件进行部署时,流程定义的图片以及XML文件等数据,都会转换成byte数组保存到这个表中。该表设计了一个byte字段,用来保存资源的内容,该表包含以下字段:
注:Activiti为了保证整个流程引擎表中所产生的数据主键在整个流程引擎中是唯一的,使用了一个DbIdGenerator类生成主键,该类中保存了下一条数据的ID值和当前ID块最后一个ID值。
2.2 ACT_GE_PROPERTY属性表
Activiti将全部的属性抽象为key-value对,每个属性都有名称和值。
注:在初始化流程数据库时,会默认加入3条属性数据:next.dbid、schema.history和schema.version。
next.dbid:属性值为1时,表示Activiti数据库表ID生成时,当前ID块最大值为1(即数据库里还没有任何数据)。前面也提到,流程引擎是使用一个DbIdGenerator类来生成主键的,该类保存了下一条数据的ID值和当前ID块的最后一个ID值,所谓ID块就是Activiti数据产生时ID值时,就会从1开始到101进行取值作为数据ID,那么该ID块的最大值为101。DbIdGenerator在产生数据ID时,会判断当前ID值是否大于101(ID块最大值)。如果大于,则请求重新生成一个ID块,那么此时属性中的next.dbid属性值将会为201。
schema.history:属性表示数据表结构的更新历史,例如——
create(5.22.0.0)即表示使用了5.22版本的初始化脚本创建。
schema.version:表示当前Activiti数据结构的版本。
三.ACT_RE_ *流程存储表
存储表名称以ACT_RE开头,RE是repository单词的前两个字母,流程使用存储表来保存流程定义和部署信息相关的数据。
3.1.ACT_RE_DEPLOYMENT部署数据表
在流程引擎中,一次部署可以添加多个资源,即可以有图片与XML之类的资源,这些资源数据会保存到资源表(ACT_GE_BTYEARRAY),剩余部署信息,则保存到部署表中,部署名为ACT_RE_DEPLOYMENT,包含以下三个字段:
3.2.ACT_RE_PROCDEF流程定义表
Activiti在部署流程文件时(.bpmn或者.bpmn20.xml),其除了会将内容保存到资源表外,还会解析流程文件的内容,形成特定的流程定义数据,写入到流程定义表(ACT_RE_PROCDEF)中,该表包含了以下的字段:
注:该表的主键与其他数据表不同的是,ACT_RE_PROCDEF表的主键是组合主键,其值为流程定义的KEY_字段值加流程定义的VERSION_字段值再加ID生成器生成的ID值,其中这三个值以冒号为分隔符。例如,KEY_值为baoxiaoProcess,VERSION_值为1,ID生成器生成的ID值为722504,则该主键为baoxiaoProcess:1:722504,如以下截图所示:
四.ACT_ID_ *身份数据表
Activiti的整个身份证数据模块,可以独立于流程引擎而存在,身份数据表并没有保存流程相关的数据以及关联,身份表名称使用ACT_ID关联,ID是单词identity的前两个字母。
4.1.ACD_ID_USER用户表
流程引擎用户的信息被保存在ACT_ID_USER表中,该表有以下字段:
4.2.ACD_ID_GROUP用户组表
使用ACT_ID_GROUP表来保存用户组的数据,该表有以下几个字段:
4.3.ACD_ID_MEMBERSHIP关系表
关系表用来描述用户表与用户组表的对应关系:
注:该表的两个字段均做了外键约束,写入该表的数据时,必须要有用户和用户组数据与之关联。
五.ACT_RU_ *运行时数据表
运行时数据表用来保存流程在运行过程中所产生的数据,例如流程实例、执行流和任务等,以ACT_RU开头,RU是单词runtime的前两个字母。
5.1.ACT_RU_EXECUTION流程实例表
流程启动后,会产生一个流程实例,同时产生相应的执行流,流程实例和执行流数据均被保存在ACT_RU_EXECUTION表中。如果一个流程实例只要一条执行流,那么该表中只产生一条数据,该数据既表示执行流,也表示流程实例。
5.2.ACT_RU_TASK流程任务表
流程在运行过程中所产生的任务数据保存在ACT_RU_TASK,字段如下:
5.3.ACT_RU_VARIABLE流程参数表
流程引擎提供了ACT_RU_VARIABLE表来存放流程中的参数,这类参数包括流程实例参数、执行流参数和任务参数,各参数可以有多种类型。
5.4.ACT_RU_IDENTITYLINK流程与身份关系表
用户组与用户之间存在的关系,使用ACT_ID_MEMBERSHIP表保存。用户或者用户组与流程数据之间的关系,则使用ACT_RU_IDENTITYLINK表进行保存。
5.5.ACT_RU_JOB工作数据表
在流程执行的过程中,会有一些工作需要定时或者重复执行,这类工作数据被保存到ACT_RU_JOB表中。
5.6.ACT_RU_EVENT_SUBSCR事件描述表
如果流程到达某类事件节点,Activiti会往ACT_RU_EVENT_SUBSCR表中加入事件描述数据,这些事件描述数据将会决定流程事件的触发。
六.ACT_HI_ *历史数据表
历史数据表就像流程引擎的日志表。被操作过的流程元素,将会被记录到李四表中。历史表名称以ACT_HI开头,HI是单词history的前两个字母。
6.1.ACT_HI_PROCINST流程实例表
流程实例的历史数据会被保存到ACT_HI_PROCINST表中,只要流程启动,Activiti就会将流程实例的数据写入ACT_HI_PROCINST表中。除了基本的流程字段外,与运行时数据表不同的是,历史流程实例表还会记录流程的开始活动ID的、活动结束ID等信息。
6.2.ACT_HI_ACTINST历史行为表
历史行为表会记录每一个流程活动的实例,一个 流程活动将会被记录成一条数据,例如,流程中有开始事件,用户任务,结束事件各一个,当流程结束后,该表就会产生3条历史行为数据。
6.3.附件表ACT_HI_ATTACHMENT
使用任务服务(TaskService)的API,可以添加附件,这些附件数据将会保存到ACT_HI_ATTACHMENT表中。
6.4.评论表ACT_HI_COMMENT
可以专门存放审批过程中的评论数据。
Activiti工作流框架学习(一)之通用数据表详细介绍的更多相关文章
- Activiti工作流框架学习(一)——环境的搭建和数据表的了解
一.什么是工作流 工作流(Workflow),就是“业务过程的部分或整体在计算机应用环境下的自动化”,它主要解决的是“使在多个参与者之间按照某种预定义的规则传递文档.信息或任务的过程自动进行,从而实现 ...
- Activiti工作流框架学习笔记(二)之springboot2.0整合工作流Activiti6.0
以前在工作当中做过不少与工作流Activiti有关的工作,当时都是spring集成activiti5.22的项目,现在回过头去看,其实版本已经稍微老了,因此,基于先前的工作经验,决定用较新版本的技术来 ...
- Activiti工作流框架学习(二)——使用Activiti提供的API完成流程操作
可以在项目中加入log4j,将logj4.properties文件拷入到src目录下,这样框架执行的sql就可以输出到到控制台,log4j提供的日志级别有以下几种: Fatal error war ...
- activiti工作流入门学习
工作流一般在OA系统用的比较多,当然,只要有流程审批的地方都会用到,activiti只是开源的工作流中比较流行的一个,还有其他的开源的工作流,这里学习activiti工作流:前面部分是关于activi ...
- 项目结合activiti工作流框架使用
项目结合activiti工作流框架使用: 1.项目与工作流框架的结合. 2.状态:草稿(待审批).审批中.审批通过.审批失败 3. 提交审批: 0 草稿(待审批),记录绑定工作流执行id,审批状态设置 ...
- activiti工作流数据库表详细介绍 (23张表)
Activiti的后台是有数据库的支持,所有的表的表名都以ACT_开头,表名的第二部分是用来表示表的用途的两个字母标识. 用途也和服务的API对应. ACT_RE_*: 'RE'表示repositor ...
- Activiti工作流数据库表详细介绍
Activiti的后台是有数据库的支持,所有的表都以ACT_开头. 第二部分是表示表的用途的两个字母标识. 用途也和服务的API对应. ACT_RE_*: 'RE'表示repository. 这个前缀 ...
- 孤荷凌寒自学python第四十九天继续研究跨不同类型数据库的通用数据表操作函数
孤荷凌寒自学python第四十九天继续研究跨不同类型数据库的通用数据表操作函数 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 今天继续建构自感觉用起来顺手些的自定义模块和类的代码. 不同类型 ...
- vue第四单元(初识vue-在页面中直接引入vue框架-学习使用vue语法-vue的指令-介绍data用法-methods用法)
第四单元(初识vue-在页面中直接引入vue框架-学习使用vue语法-vue的指令-介绍data用法-methods用法) #课程目标 了解 vue 框架的特点 掌握创建 vue 实例 掌握 data ...
随机推荐
- 常用 UML 类图
一. 类 类图分三层: 第一层是类的名称,如果是抽象类,则用斜体显示. 第二层是类的特性,通常就是字段和属性. 第三层是类的操作,通常是方法或行为.注意 '+' 表示 public,'-' 表示 pr ...
- GStreamer基础教程12 - 常用命令工具
摘要 GStreamer提供了不同的命令行工具用于快速的查看信息以及验证Pipeline的是否能够正确运行,在平时的开发过程中,我们也优先使用GStreamer的命令行工具验证,再将Pipeline集 ...
- 用Python编写简单的发红包程序和计算器原理
用Python编写简单的发红包程序: 第一种解法:数轴方法解决 import random def red_packet(money,num): money = money * 100 #将钱数转换成 ...
- mysql 主从同步(转)
教程开始:一.安装MySQL 说明:在两台MySQL服务器192.168.21.169和192.168.21.168上分别进行如下操作,安装MySQL 5.5.22 二.配置MySQL主服务器(19 ...
- 基于UGUI的框架
这个框架简单易懂,上手就可以直接拿来用,主要是单例管理类,界面和界面之间的互相交流通过单例去实现,个人感觉不是很好,但是我特别喜欢他的管理层级非常分明. 之后会发一个广播机制,结合上这套UI框架,但是 ...
- Java自动化测试框架-11 - TestNG之annotation与并发测试篇 (详细教程)
1.简介 TestNG中用到的annotation的快速预览及其属性. 2.TestNG基本注解(注释) 注解 描述 @BeforeSuite 注解的方法只运行一次,在当前suite所有测试执行之前执 ...
- java数组、字符串拼接
1. 数组实现拼接 int[] arr ={11,22,33,44,55,66}; System.out.print("["); for (int i = 0; i <arr ...
- 利用爬虫爬取LOL官网上皮肤图片
今天在浏览网页时,看到一篇很有意思的文章,关于网络爬虫的.该文章是讲述如何利用request爬取英雄联盟官网皮肤图片.看过文章后觉得挺有用的,把代码拿过来运行了一下,果真爬取成功.下面给大家分享一下代 ...
- nyoj 65-另一种阶乘问题 (Java 高精度)
65-另一种阶乘问题 内存限制:64MB 时间限制:3000ms 特判: No 通过数:16 提交数:18 难度:1 题目描述: 大家都知道阶乘这个概念,举个简单的例子:5!=1*2*3*4*5.现在 ...
- 领扣(LeetCode)单词模式 个人题解
给定一种 pattern(模式) 和一个字符串 str ,判断 str 是否遵循相同的模式. 这里的遵循指完全匹配,例如, pattern 里的每个字母和字符串 str 中的每个非空单词之间存在着双向 ...