当前位置: 首页 > news >正文

Activiti 5.22 二十五张表都存了啥?一张图帮你理清核心数据流转

Activiti 5.22 数据库表结构深度解析从静态定义到运行时流转当我们打开Activiti的数据库映入眼帘的是25张以ACT_开头的表。这些表并非孤立存在而是构成了一个精密的流程数据生态系统。本文将带您深入探索这些表背后的设计哲学揭示流程数据从定义到归档的完整生命周期。1. 静态与动态三类核心表的角色划分Activiti的表结构设计体现了清晰的层次划分主要分为三类核心表ACT_RE_Repository流程定义的静态存储ACT_RU_Runtime流程实例的运行时数据ACT_HI_History流程执行的历史记录这种三分法设计反映了流程引擎的核心思想定义与执行分离。让我们看一个典型流程的数据流转示例-- 部署流程定义时数据流向 INSERT INTO ACT_RE_DEPLOYMENT -- 部署记录 INSERT INTO ACT_RE_PROCDEF -- 流程定义 INSERT INTO ACT_GE_BYTEARRAY -- 流程资源文件 -- 启动流程实例时数据流向 INSERT INTO ACT_RU_EXECUTION -- 执行实例 INSERT INTO ACT_RU_TASK -- 当前任务 INSERT INTO ACT_RU_VARIABLE -- 流程变量提示运行时表(ACT_RU_)的设计遵循用完即弃原则确保引擎在运行期保持最佳性能。2. 流程实例的生命周期数据如何流动理解表结构的关键是跟踪一个流程实例的完整生命周期。以下是典型BPMN流程的数据流转路径部署阶段ACT_RE_DEPLOYMENT记录部署操作ACT_RE_PROCDEF存储解析后的流程定义ACT_GE_BYTEARRAY保存BPMN/PNG文件启动阶段ACT_RU_EXECUTION创建执行实例ACT_RU_TASK生成首个用户任务ACT_RU_VARIABLE初始化流程变量运行阶段ACT_RU_IDENTITYLINK记录任务参与者ACT_RU_EVENT_SUBSCR管理事件订阅ACT_RU_JOB处理定时任务完成阶段运行时数据从ACT_RU_表删除ACT_HI_PROCINST记录流程实例历史ACT_HI_TASKINST保存任务历史下表展示了关键表在生命周期各阶段的状态变化表类型部署阶段运行阶段完成阶段ACT_RE_写入只读只读ACT_RU_空频繁读写清空ACT_HI_空部分写入完整记录3. 核心运行时表的协作机制运行时表构成了Activiti的工作记忆它们的高效协作保证了流程的顺利执行。其中最关键的三个表是ACT_RU_EXECUTION- 流程执行实例存储当前执行的流程路径维护父子执行实例关系记录当前活动节点ACT_RU_TASK- 用户任务任务定义信息名称、优先级等任务状态新建、进行中、完成任务候选人/办理人ACT_RU_VARIABLE- 流程变量支持多种变量类型String, Integer, Serializable等作用域控制流程实例级、任务级提供变量历史追踪它们的协作关系可以通过这个Java代码示例理解// 启动流程时核心表的交互 ProcessInstance instance runtimeService.startProcessInstanceByKey(leaveProcess); // → 创建 ACT_RU_EXECUTION 记录 // → 根据流程定义创建 ACT_RU_TASK // → 初始化 ACT_RU_VARIABLE Task task taskService.createTaskQuery().processInstanceId(instance.getId()).singleResult(); // → 查询 ACT_RU_TASK 表 // → 关联 ACT_RU_EXECUTION // → 可能关联 ACT_RU_IDENTITYLINK4. 历史表的归档策略与优化历史表(ACT_HI_)的设计体现了Activiti的另一个重要特性可追溯性。与运行时表不同历史表采用不同的优化策略数据保留策略默认保留所有历史数据可通过配置开启自动清理支持按时间或数量阈值清理关键历史表解析ACT_HI_PROCINST流程实例快照ACT_HI_ACTINST活动实例轨迹ACT_HI_VARINST变量变更历史历史记录的级别可以通过引擎配置调整# 历史级别配置示例 historyaudit # 默认级别记录所有历史 historyactivity # 只记录活动实例 historynone # 不记录历史注意历史级别设置会影响部分功能如流程监控、报表的可用性需根据业务需求权衡。5. 实战基于表结构的性能优化理解表结构后我们可以针对性地优化流程性能。以下是几个实用技巧运行时表优化定期监控ACT_RU_表大小避免长时间运行的流程实例使用异步执行减少锁竞争历史表优化对ACT_HI_表建立合适的索引CREATE INDEX idx_hi_procinst ON ACT_HI_PROCINST(PROC_INST_ID_); CREATE INDEX idx_hi_taskinst ON ACT_HI_TASKINST(PROC_INST_ID_);分区处理大表按时间范围配置历史清理策略变量存储优化大对象使用ACT_GE_BYTEARRAY存储频繁访问的变量考虑缓存避免在变量中存储冗余数据下表对比了不同场景下的优化策略场景问题表现优化方案影响表流程启动慢ACT_RE_PROCDEF查询耗时预热流程定义缓存ACT_RE_*任务查询慢ACT_RU_TASK全表扫描添加候选人索引ACT_RU_TASK历史数据膨胀ACT_HI_表过大配置自动清理ACT_HI_*6. 异常排查从数据库视角诊断问题当流程出现异常时表数据往往能提供关键线索。以下是常见问题的排查路径流程卡顿分析检查ACT_RU_TASK当前任务查看ACT_RU_EXECUTION执行路径验证ACT_RU_VARIABLE变量值历史流程分析-- 查找异常结束的流程实例 SELECT * FROM ACT_HI_PROCINST WHERE END_TIME_ IS NOT NULL AND DELETE_REASON_ IS NOT NULL; -- 分析耗时最长的节点 SELECT PROC_DEF_ID_, ACT_ID_, AVG(DURATION_) FROM ACT_HI_ACTINST GROUP BY PROC_DEF_ID_, ACT_ID_;数据一致性检查对比ACT_RU_与ACT_HI_记录检查孤立的任务实例验证变量作用域一致性在实际项目中我们曾遇到一个典型案例流程实例无故消失。通过分析发现是历史表清理策略过于激进导致ACT_HI_PROCINST记录被提前删除而相关服务却依赖这些历史数据。调整历史级别配置后问题解决。
http://www.zskr.cn/news/1409768.html

相关文章:

  • 2026年 DTF膜/墨水/烫画膜/热熔粉/弹性墨水,离型膜/氟素/非硅/硅油/硅胶离型膜源头厂家推荐榜 - 品牌企业推荐师(官方)
  • ChatGPT定制饮食计划失效真相:3类高危输入词+4步合规性校验流程(卫健委膳食指南交叉验证版)
  • NestJS拦截器实战:除了格式化响应,我还能用RxJS pipe玩出什么花?
  • Python实战:用AlphaBeta剪枝算法搞定井字棋AI(附完整代码)
  • 从UGUI Button到自定义事件:手把手教你用UnityEvent重构游戏中的消息系统(避免强引用内存泄漏)
  • 从无人机悬停到机械臂控制:用‘稳、快、准’三要素,拆解身边自动控制系统的设计思路
  • SystemVerilog bind 的‘坑’与最佳实践:从多实例绑定到参数传递的避雷指南
  • Agent技术大变革:从魔法提示词到系统工程,未来已来!
  • DPU不只是网卡:深入BlueField Arm核,玩转IPsec卸载与固件升级
  • AI 生成代码怎么审查?从可运行到可维护的验收清单
  • 2026年|论文降AI率必备:学生党5个手改技巧与3款降AIGC工具指南 - 降AI实验室
  • 从零组装一台CNC小机床:树莓派4B + DM542 + 57步进电机的硬件接线全记录
  • 从POI数据到热力图:用OpenLayers + Vue3 可视化你的城市兴趣点分布
  • 即时通讯部署品牌有哪些:选对底座,事半功倍
  • 别再折腾破解了!手把手教你用官方试用版快速上手ROMAX DESIGNER R17
  • 别再被配置单搞晕了!理光喷头UV打印机,从4色到6色+白墨光油,到底怎么选才不浪费钱?
  • 告别DLL依赖!手把手教你用MinGW静态链接libgcc、libstdc++和libwinpthread
  • 蓝桥杯单片机DS1302时钟显示乱跳?手把手教你用中断保护时序搞定它
  • 如何用AKShare轻松获取股票历史数据:Python量化交易新手的终极指南
  • 若依后台数据大屏实战:用ECharts嵌套饼图可视化你的SQL查询结果
  • 思科Fat AP组网踩坑记:从‘能通’到‘好用’,我总结的3个关键配置细节与1个常见误区
  • OpenWRT旁路由模式部署Zerotier全攻略:不干扰主网络,实现安全内网穿透
  • 解锁隐藏潜能:NVIDIA Profile Inspector完整调校指南,让游戏性能飙升50%
  • Unity新手避坑指南:Camera组件这10个参数没搞懂,游戏画面就毁了
  • 告别工控机?用ESP32/ESP8266无线读取西门子PLC数据的低成本方案(S7协议实战)
  • 保姆级教程:手把手教你用Sysmac Studio配置得克威尔EX-1100 EtherCAT从站(附XML文件下载)
  • 行业深度盘点:浙江十家优质 GEO 优化公司实力评级与口碑参考 - 玖叁鹿
  • 别再死记公式了!用‘电脑价格猜猜看’和‘出门带伞’两件小事,5分钟掌握贝叶斯更新核心思想
  • 从单片机裸奔到跑系统:ARM Cortex-M3的特权/用户模式与双堆栈如何守护你的FreeRTOS
  • 告别脚本和触发器:用DBSync这款绿色小工具,5分钟搞定MySQL到SQL Server的实时同步