文/朱季谦

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工作流框架学习(一)之通用数据表详细介绍的更多相关文章

  1. Activiti工作流框架学习(一)——环境的搭建和数据表的了解

    一.什么是工作流 工作流(Workflow),就是“业务过程的部分或整体在计算机应用环境下的自动化”,它主要解决的是“使在多个参与者之间按照某种预定义的规则传递文档.信息或任务的过程自动进行,从而实现 ...

  2. Activiti工作流框架学习笔记(二)之springboot2.0整合工作流Activiti6.0

    以前在工作当中做过不少与工作流Activiti有关的工作,当时都是spring集成activiti5.22的项目,现在回过头去看,其实版本已经稍微老了,因此,基于先前的工作经验,决定用较新版本的技术来 ...

  3. Activiti工作流框架学习(二)——使用Activiti提供的API完成流程操作

    可以在项目中加入log4j,将logj4.properties文件拷入到src目录下,这样框架执行的sql就可以输出到到控制台,log4j提供的日志级别有以下几种: Fatal  error  war ...

  4. activiti工作流入门学习

    工作流一般在OA系统用的比较多,当然,只要有流程审批的地方都会用到,activiti只是开源的工作流中比较流行的一个,还有其他的开源的工作流,这里学习activiti工作流:前面部分是关于activi ...

  5. 项目结合activiti工作流框架使用

    项目结合activiti工作流框架使用: 1.项目与工作流框架的结合. 2.状态:草稿(待审批).审批中.审批通过.审批失败 3. 提交审批: 0 草稿(待审批),记录绑定工作流执行id,审批状态设置 ...

  6. activiti工作流数据库表详细介绍 (23张表)

    Activiti的后台是有数据库的支持,所有的表的表名都以ACT_开头,表名的第二部分是用来表示表的用途的两个字母标识. 用途也和服务的API对应. ACT_RE_*: 'RE'表示repositor ...

  7. Activiti工作流数据库表详细介绍

    Activiti的后台是有数据库的支持,所有的表都以ACT_开头. 第二部分是表示表的用途的两个字母标识. 用途也和服务的API对应. ACT_RE_*: 'RE'表示repository. 这个前缀 ...

  8. 孤荷凌寒自学python第四十九天继续研究跨不同类型数据库的通用数据表操作函数

    孤荷凌寒自学python第四十九天继续研究跨不同类型数据库的通用数据表操作函数 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 今天继续建构自感觉用起来顺手些的自定义模块和类的代码. 不同类型 ...

  9. vue第四单元(初识vue-在页面中直接引入vue框架-学习使用vue语法-vue的指令-介绍data用法-methods用法)

    第四单元(初识vue-在页面中直接引入vue框架-学习使用vue语法-vue的指令-介绍data用法-methods用法) #课程目标 了解 vue 框架的特点 掌握创建 vue 实例 掌握 data ...

随机推荐

  1. 小白 Python 爬虫部署 Linux

    前言 前面国庆节的时候写过一个简易的爬虫. <Python 简易爬虫实战> 还没看过的同学可以先看一下,这只爬虫主要用来爬取各个博客平台的阅读量等数据,一直以来都是每天晚上我自己手动在本地 ...

  2. ios swift多线程的实现 Multithreading

    1.多线程的概念 Multithreading多线程是指从软件或硬件上,实现多个线程并发执行的技术.使得能够同步完成多项任务,提高资源使用效率. 1.1 任务.进程和线程 任务Task:应用程序完成的 ...

  3. Java 数据类型和初始值

    Java 基本数据类型 byte.short.int.long.float.double.boolean.char byte 数据类型是8位.有符号的,以二进制补码表示的整数 short 数据类型是 ...

  4. vue学习之深入响应式原理

    vue的响应式原理 当你把一个普通的 JavaScript 对象传入 Vue 实例作为 data 选项,Vue 将遍历此对象所有的属性,并使用 Object.defineProperty 把这些属性全 ...

  5. MySQL批量插入的分析以及注意事项

    目录 1.背景 2.两种方式对比 2.1.一次插入一条数据 2.2.一次插入多条数据 3.拓展一下 4.Other 1.背景 我们在工作中基本都会碰到批量插入数据到DB的情况,这个时候我们就需要根据不 ...

  6. [py2neo]Ubuntu14 安装py2neo失败问题解决

    环境 1.操作系统Ubuntu14 2.py2neo版本4.1 3.python版本python3.4 问题 pip install py2neo==4.1  安装失败,提示: Cannot unin ...

  7. 关于发送邮件,错误“命令顺序不正确。 服务器响应为:Error: need EHLO and AUTH first !”问题

    最近做了一个小程序,通过QQ邮箱服务器发送邮件, 代码写完后,运行调试,出现“命令顺序不正确. 服务器响应为:Error: need EHLO and AUTH first !”的问题, 上网查询发现 ...

  8. P3105 [USACO14OPEN]公平的摄影(正解是乱搞,我却二分了)(+二分答案总结)

    照例化简题意: 给定一个01区间,可以把0改成1,问其中最长的01数量相等的区间长度. 额很容易想到前缀和,把w弄成1,h弄成-1,然后求前缀和,然后乱搞就行了. 但是一直不太会乱搞的我却直接想到了二 ...

  9. arduino体感控制简单版

    https://learn.sparkfun.com/tutorials/apds-9960-rgb-and-gesture-sensor-hookup-guide/all 硬件连线 关键 VCC=  ...

  10. fpm打包神奇rpm包升级python2.7.16

    fpm打包神器参考文档:https://www.cnblogs.com/flintlovesam/p/6594635.html FPM的安装:安装ruby环境和gem命令: yum -y instal ...