Flowable 生成的表都是干嘛的?(一)

news2024/11/27 16:25:38

一.简介

Flowable 默认一共生成了 79 张数据表,了解这些数据表,有助于我们更好的理解 Flowable 中的各种 API。

接下来我们就对这 79 张表进行一个简单的分类整理。

  1. ACT_APP_*(5)
  2. ACT_CMMN_*(12)
  3. ACT_CO_*(3)
  4. ACT_DMN_*(6)
  5. ACT_EVT_*(1)
  6. ACT_FO_*(6)
  7. ACT_GE_*(2)
  8. ACT_HI_*(10)
  9. ACT_ID_*(9)
  10. ACT_PROCDEF_*(1)
  11. ACT_RE_*(3)
  12. ACT_RU_*(13)
  13. FLW_CHANNEL_*(1)
  14. FLW_EV_*(2)
  15. FLW_EVENT_*(3)
  16. FLW_RU_*(2)
  • 是通配符,后面的数字表示这种类型的表有多少个。

大致看一下,其实还是有很多规律的。最明显的规律就表名通过两个 _ 隔开成了三部分,接下来就以此,一部分一部分来讲。

二.表名前缀

表的前缀,分了两种:

  1. ACT_
  2. FLW_

具体来说,与 Flowable 开源代码库相关的数据库表名以 ACT_ 开头。特定于 Flowable Work 或 Engage 的数据库表以 FLW_ 前缀开头。

三.表名中间部分

紧跟着 ACT_ 或者 FLW_ 后面的内容,基本上也都是简称,例如:

  1. APP 表示这都是跟应用程序相关的表。
  2. CMMN 表示这都是跟 CMMN 协议相关的表。
  3. CO(CONTENT)表示这都是跟内容引擎相关的表。
  4. DMN 表示这都是跟 DMN 协议相关的表。
  5. EVT(EVENT)表示这都是跟事件相关的表。
  6. FO(FORM)表示这都是跟表单相关的表。
  7. GE(GENERAL)表示这都是通用表,适用于各种用例的。
  8. HI(HISTORY)这些是包含历史数据的表。当从运行时表中删除数据时,历史表仍然包含这些已完成实例的所有信息。
  9. ID(IDENTITY)表示这都是跟用户身份认证相关的表。
  10. PROCDEF(PROCESSDEFINE) 表示这都是跟记录流程定义相关的表。
  11. RE(REPOSITORY)表示这都是跟流程的定义、流程的资源等等包含了静态信息相关的表。
  12. RU(RUNTIME)代表运行时,这些是包含尚未完成的流程、案例等的运行时数据的运行时表。Flowable 仅在执行期间存储运行时数据,并在实例结束后删除记录,这使运行时表保持小而快。
  13. CHANNEL 表示这都是跟泳道相关的表。
  14. EV 表示这个是跟 FLW_ 搭配的,在这里似乎并没有一个明确的含义,相关的表也都是跟 Liquibase 相关的表。
  15. EVENT 表示这都是跟事件相关的表。

表名是由三部分构成的,我们现在已经分析了前两部分了,接下来我们来看第三部分。

三.表名后缀

表名的后缀,有一些是通用的后缀名词,例如:

  1. DATABASECHANGELOG:
    表名中包含这个单词的,表示这个表是 Liquibase 执行的记录,Liquibase 是一个数据库脚本管理的工具。包含 DATABASECHANGELOG 后缀的表一共是 6 张。
  2. DATABASECHANGELOGLOCK:
    表名中包含这个单词的,表示这个表记录 Liquibase 执行锁的,用以确保一次只运行一个 Liquibase 实例,包含 DATABASECHANGELOGLOCK 后缀的表也是 6 张。

这两个加起来就 12 张表了,一共 79 张,现在还剩 67 张,我们来详细看下。

在后面的介绍中,凡是涉及到 DATABASECHANGELOG 和 DATABASECHANGELOGLOCK 的表,就直接省略了。

3.1 ACT_APP_*

ACT_APP_* 开头的表负责应用引擎存储和应用部署定义。相关的表一共是五张,截图如下:
在这里插入图片描述

ACT_APP_APPDEF

应用程序模型产生应用程序定义。此定义,如流程/案例/等。是成功部署到应用引擎的应用模型的表示。

ACT_APP_DEPLOYMENT

当通过应用引擎部署应用模型时,会存储一条记录以保存此部署。部署的实际内容被存储在 ACT_APP_DEPLOYMENT_RESOURCE 表中,并从该表中引用。

ACT_APP_DEPLOYMENT_RESOURCE

此表包含构成应用程序部署的实际资源(存储为字节)。当引擎需要实际模型时,将从该表中获取资源。

3.2 ACT_CMMN_*

Flowable CMMN Engine 的数据库名称都以 ACT_CMMN_ 开头。这里涉及到一个东西就是 CMMN,CMMN 与 BPMN 协议一致,也是一种流程内容的规范,CMMN 这类表一般用于存储处理 BPMN 所不能适用的业务场景数据,CMMN 通常与 BPMN 搭配使用,不过只有符合 CMMN 规范的模型数据才会使用这类表。

这里涉及到的相关表一共是 12 张,截图如下:
在这里插入图片描述

  1. ACT_CMMN_CASEDEF
  2. ACT_CMMN_DEPLOYMENT
  3. ACT_CMMN_DEPLOYMENT_RESOURCE

这三个都是没有附加前缀的表,主要定义了静态信息,例如 case 的定义和部署和以及相关的资源等。

接下来这些以 ACT_CMMN_HI_ 开头的表代表历史数据,例如过去的案例实例、计划项目等

ACT_CMMN_HI_CASE_INST

此表记录由 CMMN 引擎启动的每个案例实例的数据。

ACT_CMMN_HI_MIL_INST

此表记录了在案例实例中达到的每个里程碑的数据。

ACT_CMMN_HI_PLAN_ITEM_INST

此表记录了作为案例实例执行的一部分创建的每个计划项实例的数据。

接下来以 ACT_CMMN_RU_ 开始的表代表运行时的数据,这些数据包含案例实例、计划项等的运行时数据。Flowable 仅在案例实例执行期间存储运行时数据,并在案例实例结束时删除记录,这使运行时表保持小且查询速度快。

ACT_CMMN_RU_CASE_INST

此表包含每个已启动但尚未完成的案例实例的条目。

ACT_CMMN_RU_MIL_INST

此表包含作为运行案例实例的一部分达到的每个里程碑的条目。

ACT_CMMN_RU_PLAN_ITEM_INST

案例实例执行由案例定义中定义的计划项的多个实例组成,此表包含在案例实例执行期间创建的每个实例的条目。

ACT_CMMN_RU_SENTRY_PART_INST

计划项目实例可以有守卫状态转换的哨兵,这样的哨兵在状态改变之前可以包含多个部分,这个表就是专门用来存储这种哨兵。

3.3 ACT_DMN_*

Flowable DMN 的数据库名称都以 ACT_DMN_ 开头,这里涉及到的表一共是 6 张,截图如下:
在这里插入图片描述

  1. ACT_DMN_DEPLOYMENT
  2. ACT_DMN_DEPLOYMENT_RESOURCE

这里部署的是 DMN。

ACT_DMN_DECISION

此表包含已部署决策表的元数据,并与来自其他引擎的定义相对应。

ACT_DMN_HI_DECISION_EXECUTION

此表包含有关 DMN 决策表执行的审计信息。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

chatgpt赋能Python-pycharm取消所有断点

Pycharm取消所有断点:提高编程效率的必备技巧 Pycharm作为Python程序员必备的开发工具之一,其强大的调试功能广受好评。但是,在开发过程中,我们可能会设置过多的断点或者设置了错误的断点,这样会让程序的运行速度变慢…

Java面向对象程序设计实验报告(实验四 抽象类的练习)

✨作者:命运之光 ✨专栏:Java面向对象程序设计实验报告 ​ 目录 ✨一、需求设计 ✨二、概要设计 ✨三、详细设计 ✨四、调试结果 ✨五、测试结果 ✨附录:源程序代码(带注释) demo4类 Car类 Circle类 Shape…

谷歌chrome浏览器无法自动播放video标签视频的问题

问题根源详见:Chrome中的自动播放政策>> https://developer.chrome.com/blog/autoplay/ The Autoplay Policy launched in Chrome 66 for audio and video elements and is effectively blocking roughly half of unwanted media autoplays in Chrome. For t…

基于数组实现的顺序表(SeqList)

顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。 它的详细定义如下: 顺序表是一种数据结构,用于存储一组具有相同数据类型的元素,并按照元素在内存中的…

数据库【库,表操作】

目录 简单了解1.连接数据库服务器2.创建数据库3.创建表4.使用数据库5.数据库框架6.SQL的分类7.存储引擎 库操作1.创建数据库2.查看系统默认字符集以及校验规则3.查看数据库支持的字符集和校验规则4.查看数据库5.显示数据库语句6.删除数据库7.修改数据库8.备份和恢复9.查看连接情…

20 SQL——多表查询 (消除无效笛卡尔积)

create table dept(id int primary key auto_increment,name varchar(15))comment 部门;insert into dept(id, name) values (1,研发部),(2,市场部),(3,财务部),(4,销售部),(5,总经办),(6,人事部);create table staff (id int primary key auto_increment commentID,name …

【面试篇】Redis持久化面试题

文章目录 Redis持久化🙎‍♂️面试官:什么是Redis持久化? AOF日志AOF日志原理🙎‍♂️面试官:AOF日志是怎么工作的/AOF写入磁盘的流程?🙎‍♂️面试官: 刚刚说到了Redis先执行写入的…

Discourse Math 插件

概述Discourse Math 使用 MathJax (默认) 或者 KaTeX 来让你在你的 Discourse 中使用数学公式。 仓库链接GitHub - discourse/discourse-math: Official MathJax support for Discourse Install Guide如何在 Discourse 中安装插件 这个插件是 Discourse 官方提供的插件&#x…

javascript基础一:Javscript数组的常用方法有哪些?

在日常开发中,我们对数组可以说操作最多,这里我们来整理下数组的一下最常用的方法 数组基本操作可以归纳为 增、删、改、查,需要留意的是哪些方法会对原数组产生影响,哪些方法不会 下面对数组常用的操作方法做一个归纳 一、基本…

ChatGPT国内免费使用的方法有哪些?

目录 一、ChatGpt是什么? 二、ChatGPT国内免费使用的方法: 第一点:电脑端 第二点:手机端 三、结语: 一、ChatGpt是什么? ChatGPt是美国OpenAI [1] 研发的聊天机器人程序 。更是人工智能技术驱动的自然语…

【C++数据结构】二叉搜索树的使用和模拟实现及其应用--K模型和KV模型

文章目录 一、二叉搜索树的概念二、二叉搜索树的操作及其实现(非递归)1.二叉搜索树节点和类的定义2.二叉搜索树的构造函数3.二叉搜索树的拷贝构造4.二叉树搜索树的赋值重载5.二叉搜索树的析构函数6.二叉搜索树的中序遍历7.二叉搜索树的查找8.二叉搜索树的插入9.二叉搜索树的删除…

瑞吉外卖 - 分页查询分类功能(12)

某马瑞吉外卖单体架构项目完整开发文档,基于 Spring Boot 2.7.11 JDK 11。预计 5 月 20 日前更新完成,有需要的胖友记得一键三连,关注主页 “瑞吉外卖” 专栏获取最新文章。 相关资料:https://pan.baidu.com/s/1rO1Vytcp67mcw-PD…

【Android 面经分享】阿里技术专家的 5年 Android 开发的求职之路

作者:yechaoa 来源:https://juejin.cn/post/6996551155220217869 前言 前段时间在看机会,本文就是我对求职过程的一个总结。 同时,也作为一个面试官,来说说求职中需要注意的点。 各大厂的面试会考核哪些知识点5年开发应该具备哪些技术要点…

chatgpt赋能Python-pycharm取消venv

PyCharm取消venv:一种更简便的虚拟环境管理方式 虚拟环境是Python开发中的重要组成部分之一。它可以让您在同一台机器上使用不同的Python版本、不同的库以及不同的项目而不会干扰彼此之间的功能独立性。而在Python开发中,venv是创建虚拟环境的常用方式之…

chatgpt赋能Python-pycharm怎么关联

Pycharm怎么关联——提高Python开发效率的关键步骤 作为一名有10年Python编程经验的工程师,我深知在日常开发中如何提高Python的编程效率至关重要。而Pycharm则是Python领域最常用的IDE之一,其强大的代码编辑和调试功能,深受开发者的喜爱。 …

Linux驱动开发 --- CCF时钟框架

0. CCF时钟框架概览 linux内核的CCF时钟框架可以分为三层,每一层的职责以及彼此的关系如下图所示 对CCF框架的分析也将以如下几个方向入手: consumer(也就是device driver)如何使用CCFprovider如何借助CCF管理系统的时钟资源CC…

前端BFC

一、首先我们要先了解常见的定位方案,总共3种(普通流、浮动、绝对定位) 而BFC是属于普通流的 我们可以把BFC看作为页面的一块渲染区域,他有着自己的渲染规则 简单来说BFC可以看作元素的一种属性,当元素拥有了BFC属性…

ChatGPT:2. 使用OpenAI创建自己的AI网站:1. 初探API

使用OpenAI创建自己的AI网站 如果你还是一个OpenAI的小白,有OpenAI的账号,但想调用OpenAI的API搞一些有意思的事,那么这一系列的教程将仔细的为你讲解如何使用OpenAI的API制作属于自己的AI网站。博主只能利用下班时间更新,进度慢…

自学spring个人笔记

目录 如何学习spring? 如何查看自己电脑是否安装了spring boot Spring Boot CLI安装成功 springboot的版本2.7.12(SNAPSHOT)与2.7.11有什么区别? 报错解决 Plugin org.springframework.boot:spring-boot-maven-plugin:not found 在maven pom.xml中…

【AFNetWorking源码(二)AFURLSessionManger和AFHTTPSessionManager】

前言 学习了Mananger的初始化和以GET请求为例的过程,发现整个过程离不开AFHTTPSessionManager和AFURLSessionManger的某些方法。这两个是AFN的重要的网络通信模块内容,对它们作揖详细的学习。 AFURLSessionManager和AFHTTPSessionManager都是AFNetwork…