JBPM流程部署之部署数据表分析
JBPM流程部署之部署数据表分析
JBPM流程部署xml格式的流程定义,虽然引擎默认的在发布完后就直接将流程定义实体缓存,以方便以后的流程运行流转使用,避免不必要的数据库访问,但是这些缓存直接存储在内存中,很容易就会丢失掉,比如重启服务器等,所以最终我们还是需要持久化到数据库里。今天我们来了解一下JBPM与流程部署相关的数据库表。
JBPM的持久化层使用的是Java中被广泛使用的ORM框架Hibernate,下面我们看一下JBPM流程部署实体-数据表关系,其关系如下图所示
本来打算使用visio好好的画个图,但是无奈自己能力有限,只能画了个简单的图,下面我们简单的介绍一下
DeploymentImpl 是流程部署的主表,只是简单的记录了一下流程的名称、唯一标示和部署的状态
Lob 是保存xml格式流程定义的,流程部署时的流程xml最终都会序列化成二进制形式保存到这个表里;但是这个表同时也保存运行时的变量数据。
一个部署可以对应多个流程定义数据,即是DeploymentImpl和Lob是一对多的关系
DeploymentProperty 记录流程部署的相关信息,比如流程定义(ProcessDefinitionImpl)的pdid,流程定义的pdkey、流程定义的langid、流程定义的
pdversion;一个流程部署对应一组流程定义相关信息实体,即Deploymentimpl和DeploymentProperty是一对一的关系,但是一个DeploymentImpl
对应四个DeploymentProperty记录
综上所述,我们可以知道JBPM4_DEPLOYMENT的主键是JBPM4_DEPLOYPROP和JBPM4_Lob的外键
下面我们列表分析一下个表字段以及对应的实体字段的意义
JBPM4_DEPLOYMENT 对应实体DeploymentImpl
字段名称 | 数据类型 | 是否主键 | 是否外键 | 是否可为null | 实体字段 | 业务意义 |
DBID_ | bigint | PK | not | dbid | 主键标示 | |
NAME_ | longtext | name | 流程名称 | |||
TIMESTAMP_ | bigint | timestamp | 部署时间 | |||
STATE_ | varchar(255) | state | 部署状态 |
JBPM4_DEPLOYPROP 对应实体为DeploymentProperty
字段名称 | 数据类型 | 是否主键 | 是否外键 | 是否可为null | 实体字段 | 业务意义 |
DBID_ | bigint | PK | not | dbid | 主键标示 | |
DEPLOYMENT_ | bigint | FK | deployment | 部署标示 | ||
OBJNAME_ | varchar(255) | bjectName | 部署名称 | |||
KEY_ | varchar(255) | key | 标示本条记录的属性,值为langid、pdid、pdkey、pdversion之一 | |||
STRINGVAL_ | varchar(255) | stringValue | 保存非pdversion对应的值 | |||
LONGVAL_ | bigint | longValue | 保存Pdversion对应的版本号 |
JBPM4_LOB 对应实体为Lob
字段名称 | 数据类型 | 是否主键 | 是否外键 | 是否可为null | 实体字段 | 业务意义 |
DBID_ | bigint | PK | not | dbid | 主键标示 | |
DBVERSION_ | integer | not | dbversion | 乐观并发控制 | ||
BLOB_VALUE | longblob | blob | 保存流程定义或者变量的二进制形式的资源 | |||
DEPLOYMENT_ | bigint | FK | deployment | 部署标示 | ||
NAME_ | longtext | text | 流程定义或者变量的资源的名称 |
-- |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现