Flowable数据库34张表核心解析与高效查询指南从流程实例生命周期看数据流转当我们启动一个请假流程时Flowable引擎会在不同阶段将数据写入特定表结构中。以ACT_RU_EXECUTION表为例它像乐高积木一样实时记录着流程实例的执行路径。每次流程流转到新节点都会在此表留下足迹-- 查看运行中的流程实例 SELECT * FROM ACT_RU_EXECUTION WHERE PROC_INST_ID_ 流程实例ID;运行时表(ACT_RU_)就像工作台只保留正在处理的零件。当请假流程结束时这些临时工件会被自动清理而历史表(ACT_HI_)则像归档文件柜保存完整记录表类型数据特点典型应用场景存储周期运行时表瞬时数据流程监控、任务处理流程结束即删除历史表持久数据审计分析、报表统计长期保留核心表功能全景图1. 流程定义仓库ACT_RE_*这组表相当于流程模板库存储着BPMN文件和部署信息。ACT_RE_PROCDEF表记录着流程定义的版本控制就像软件的不同发布版本-- 查询最新版本的流程定义 SELECT * FROM ACT_RE_PROCDEF WHERE VERSION_ ( SELECT MAX(VERSION_) FROM ACT_RE_PROCDEF WHERE KEY_ holidayRequest );2. 运行时引擎表ACT_RU_*当员工提交请假申请时以下表会立即活跃起来ACT_RU_TASK当前待办任务如经理审批ACT_RU_VARIABLE存储申请天数、事由等变量ACT_RU_IDENTITYLINK任务与处理人的关联关系提示排查流程卡顿时优先检查ACT_RU_TASK表的ASSIGNEE_字段是否为空3. 历史档案表ACT_HI_*即使流程结束这些表仍保留完整轨迹-- 统计各部门平均审批时长 SELECT VAR.TEXT_ AS department, AVG(TIMESTAMPDIFF(MINUTE, ACT.START_TIME_, ACT.END_TIME_)) AS avg_time FROM ACT_HI_ACTINST ACT JOIN ACT_HI_VARINST VAR ON ACT.PROC_INST_ID_ VAR.PROC_INST_ID_ WHERE VAR.NAME_ department GROUP BY VAR.TEXT_;4. 身份体系表ACT_ID_*管理组织架构的特殊表组ACT_ID_USER员工账号信息ACT_ID_GROUP部门/角色分组ACT_ID_MEMBERSHIP人员与组关联关系实战查询技巧集锦流程效率分析-- 找出耗时最长的审批节点 SELECT ACT_ID_, ACT_NAME_, AVG(DURATION_) AS avg_duration FROM ACT_HI_ACTINST WHERE ACT_TYPE_ userTask GROUP BY ACT_ID_, ACT_NAME_ ORDER BY avg_duration DESC LIMIT 5;异常流程检测-- 查找超过3天未处理的请假申请 SELECT T.ID_ AS task_id, T.NAME_ AS task_name, T.CREATE_TIME_, V.TEXT_ AS applicant FROM ACT_RU_TASK T JOIN ACT_RU_VARIABLE V ON T.PROC_INST_ID_ V.PROC_INST_ID_ WHERE V.NAME_ employee AND T.CREATE_TIME_ DATE_SUB(NOW(), INTERVAL 3 DAY);数据关联查询示例当需要生成跨表报表时可以这样关联关键表SELECT PI.BUSINESS_KEY_, HI.START_TIME_, HI.END_TIME_, HI.DURATION_, USR.FIRST_ AS handler FROM ACT_HI_PROCINST PI JOIN ACT_HI_ACTINST HI ON PI.ID_ HI.PROC_INST_ID_ LEFT JOIN ACT_ID_USER USR ON HI.ASSIGNEE_ USR.ID_ WHERE HI.ACT_TYPE_ userTask;性能优化建议历史数据归档策略定期将ACT_HI_*表数据迁移到数据仓库对PROC_INST_ID_等常用字段建立索引运行时表维护-- 清理异常锁定的任务 DELETE FROM ACT_RU_TASK WHERE SUSPENSION_STATE_ 2 AND CREATE_TIME_ DATE_SUB(NOW(), INTERVAL 1 WEEK);查询优化技巧避免在ACT_HI_DETAIL上全表扫描对时间范围查询使用分区表典型问题排查手册场景1流程实例无法继续执行检查ACT_RU_EXECUTION表中对应实例的IS_ACTIVE_字段验证ACT_RU_VARIABLE中的决策变量值查看ACT_RU_EVENT_SUBSCR是否有未处理事件场景2任务分配异常-- 查找未分配的任务 SELECT * FROM ACT_RU_TASK WHERE ASSIGNEE_ IS NULL AND CREATE_TIME_ DATE_SUB(NOW(), INTERVAL 1 HOUR);场景3流程变量丢失对比ACT_HI_VARINST与ACT_RU_VARIABLE表检查变量作用域设置是否正确掌握这些表结构和查询技巧后处理流程异常和数据分析将变得游刃有余。建议在日常运维中建立常用查询脚本库并定期分析历史数据优化流程设计。