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

可以专门存放审批过程中的评论数据。

博客园【朱季谦】同步更新:https://www.cnblogs.com/zhujiqian/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/253921.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C/C++ STL提供的关联式容器之unordered_set

unordered_set 容器,直译为[无序set容器]。 unordered_set容器和set容器很像,唯一的区别就在于 set 容器会自行对存储的数据进行排序,而unordered_set容器不会。 unordered_set的几个特性: 1. 不再以键值对的形式存储数据&#x…

数据科学知识库

​ 我的博客是一个技术分享平台,涵盖了机器学习、数据可视化、大数据分析、数学统计学、推荐算法、Linux命令及环境搭建,以及Kafka、Flask、FastAPI、Docker等组件的使用教程。 在这个信息时代,数据已经成为了一种新的资源,而机…

基于.NetCore开发评论系统(转)

博客前台以及后端涉及的代码主要在以下文件: StarBlog.Web/Services/CommentService.csStarBlog.Web/Apis/Comments/CommentController.csStarBlog.Web/Views/Blog/Widgets/Comment.cshtmlStarBlog.Web/wwwroot/js/comment.js 管理后台的代码在以下文件&#xff1…

Linux学习教程(第十三章 Linux数据备份与恢复)

第十三章 Linux数据备份与恢复 不知道大家有没有丢失过重要的数据呢? 丢失数据的理由是多种多样的,有人是因为重装系统时,没有把加密文件的密钥导出,重装系统后密钥丢失,导致所有的加密数据不能解密;也有人…

C语言—小小圣诞树

这个代码会询问用户输入圣诞树的高度&#xff0c;然后根据输入的高度在控制台上显示相应高度的圣诞树。 #include <stdio.h>int main() {int height, spaces, stars;printf("请输入圣诞树的高度: ");scanf("%d", &height);spaces height - 1;st…

使用Halcon实现模板匹配

图片: 代码: read_image (Image, C:/Users/14348/Desktop/mobanpipei.jpg) get_image_size (Image, Width, Height) dev_close_window() dev_open_window (0, 0, Width, Height, black, WindowHandle) dev_display (Image) draw_rectangle1 (WindowHandle, Row1, Column1, Ro…

字符设备驱动框架的编写

一. 简介 我们在学习裸机或者 STM32 的时候关于驱动的开发就是初始化相应的外设寄存器&#xff0c;在 Linux 驱动开发中&#xff0c;肯定也是要初始化相应的外设寄存器。 只是在 Linux 驱动开发中&#xff0c; 我们需要按照其规定的框架来编写驱动&#xff0c;所以说学 …

Docker介绍,Docker安装

docker镜像仓库官网 一、Docker的基本概念 1.Docker的三大核心组件 docker 镜像 --------docker images docker 仓库---------docker registeries docker 容器---------docker containers 2.Docker 镜像 Docker镜像是运行docker容器时的只读模板&#xff0c;每一个镜像由一…

设计模式——迭代器模式

引言 迭代器模式是一种行为设计模式&#xff0c; 让你能在不暴露集合底层表现形式 &#xff08;列表、 栈和树等&#xff09; 的情况下遍历集合中所有的元素。 问题 集合是编程中最常使用的数据类型之一。 尽管如此&#xff0c; 集合只是一组对象的容器而已。 大部分集合使用…

springboot221酒店管理系统

springboot221酒店管理系统 源码获取&#xff1a; https://docs.qq.com/doc/DUXdsVlhIdVlsemdX

CentOS7安装教程

1.准备工作 安装虚拟机软件 VMware Workstation 17 Player下载CentOS7 镜像 2. 安装VMware Workstation 17 Player 官网 下载链接 下载好了安装包&#xff0c;双击安装包&#xff0c;傻瓜式安装一直下一步&#xff0c;安装即可。 3. 安装CentOS7 官网 推荐下载地址&…

Vue 按键修饰符

常用按键修饰符&#xff1a;enter【回车】、delete【删除】、esc【退出】、space【空格】、tab【缩进】、up【上】、down【下】、left【左】、right【右】 。 系统按键修饰符&#xff1a;ctrl、alt、shift、meta【四个小方块】 。 鼠标修饰符&#xff1a;left【左键】、right…

计算机服务器中了mkp勒索病毒怎么办,mkp勒索病毒解密恢复

在计算机技术飞速发展的今天&#xff0c;越来越多的企业走向了数字化办公模式&#xff0c;极大地方便了企业的生产运营&#xff0c;为企业带来了更高的效率。但网络威胁无处不在&#xff0c;网络威胁手段随着计算机技术的不断发展也在不断增加。近期&#xff0c;云天数据恢复中…

【MySQL】存储过程/参数验证/函数

文章目录 存储过程是什么&#xff1f;创建存储过程&#xff1a;creat procedure…begin…end修改默认分隔符&#xff1a;dilimiter调用存储过程&#xff1a;call删除存储过程&#xff1a;drop procesure if exists练习 存储过程中添加参数&#xff1a;(形参 数据类型)示例练习 …

RocketMQ系统性学习-SpringCloud Alibaba集成RocketMQ以及批量发送消息、消息过滤实战

文章目录 批量发送消息消息过滤 批量发送消息 批量发送消息可以减少网络的 IO 开销&#xff0c;让多个消息通过 1 次网络开销就可以发送&#xff0c;提升数据发送的吞吐量 虽然批量发送消息可以减少网络 IO 开销&#xff0c;但是一次也不能发送太多消息 批量消息直接将多个消…

docker-harbor仓库

Docker 镜像 容器 仓库 仓库&#xff1a;保存镜像 私有&#xff1a;自定义用户的形式登录仓库&#xff0c;拉取或者上传镜像&#xff08;内部管理的用户&#xff09; Harbor&#xff1a;是VMware公司开发的&#xff0c;开源的企业级的docker register项目 帮助用户快速的搭建…

对DataFrame中每列的数值进行限值 指定最小值和最大值:超过最大值的数据,则改为最大值小于最小值的数据,则改为最小值 DataFrame.clip()

【小白从小学Python、C、Java】 【计算机等级考试500强双证书】 【Python-数据分析】 对DataFrame中每列的数值进行限值 指定最小值和最大值&#xff1a; 超过最大值的数据&#xff0c;则改为最大值 小于最小值的数据&#xff0c;则改为最小值 DataFrame.clip() [太阳]选择题 请…

GoLang 学习 (入门)

go run 1.go 执行命令 go build 1.go 打包为exe 快速 并且无依赖 在开始项目 需要 生成 go.mod go mod init mod 终端执行 go: creating new go.mod: module mod go: to add module requirements and sums:go mod tidy go的基本目录结构 src ------gocode ------------项…

整合SpringSecurity

目录 前言 数据库设计 用户表 角色表 用户角色表 权限表 角色权限表 插入数据 表的实体类 用户表实体类 角色表实体类 权限表实体类 mapper层接口 UserMapper RoleMapper AuthorityMapper 封装登录信息 统一响应结果 上下文相关类 jwt令牌工具类 依赖导入…

Win11极速安装Tensorflow-gpu+CUDA+cudnn

文章目录 0.pip/conda换默认源1.Anacondapython虚拟环境2.安装CUDA以及cudnn测试tensorflow的GPU版本安装成功的办法参考文献 不要使用官网版本&#xff0c;直接使用conda版本&#xff0c;有对应的包&#xff0c;安装很方便 0.pip/conda换默认源 为了高效下载&#xff0c;建议…
最新文章