Skip to content

流程表单数据查询

流程表单(NORMAL 类型)的字段值保存为 Flowable 流程变量。它不像业务表单那样一张业务表对应一组字段,而是更接近 EAV 模型:每个字段值都是变量表中的一行记录。

本文用于说明如何排查和查询流程表单数据。正式业务统计仍建议使用业务表单和独立业务表。

存储模型

维度流程表单业务表单
表单定义bpm_form业务模块自定义
表单值Flowable 变量表独立业务表
字段结构变量名 + 变量值固定列
查询复杂度适合简单排查适合报表统计

常见变量表包括:

说明
ACT_RU_VARIABLE运行中的流程变量
ACT_HI_VARINST历史流程变量
ACT_HI_PROCINST历史流程实例
ACT_RE_PROCDEF流程定义

查询当前运行中的变量

sql
SELECT
    v.PROC_INST_ID_ AS process_instance_id,
    v.NAME_ AS field_name,
    v.TEXT_ AS text_value,
    v.LONG_ AS long_value,
    v.DOUBLE_ AS double_value,
    v.CREATE_TIME_ AS create_time
FROM ACT_RU_VARIABLE v
WHERE v.PROC_INST_ID_ = '流程实例ID'
ORDER BY v.NAME_;

查询历史变量

sql
SELECT
    v.PROC_INST_ID_ AS process_instance_id,
    v.NAME_ AS field_name,
    v.TEXT_ AS text_value,
    v.LONG_ AS long_value,
    v.DOUBLE_ AS double_value,
    v.CREATE_TIME_ AS create_time,
    v.LAST_UPDATED_TIME_ AS update_time
FROM ACT_HI_VARINST v
WHERE v.PROC_INST_ID_ = '流程实例ID'
ORDER BY v.NAME_;

按流程定义查询表单数据

sql
SELECT
    p.ID_ AS process_instance_id,
    p.PROC_DEF_ID_ AS process_definition_id,
    p.START_USER_ID_ AS start_user_id,
    p.START_TIME_ AS start_time,
    v.NAME_ AS field_name,
    v.TEXT_ AS text_value,
    v.LONG_ AS long_value,
    v.DOUBLE_ AS double_value
FROM ACT_HI_PROCINST p
LEFT JOIN ACT_HI_VARINST v ON v.PROC_INST_ID_ = p.ID_
WHERE p.PROC_DEF_ID_ LIKE '流程定义Key:%'
ORDER BY p.START_TIME_ DESC, v.NAME_;

将变量转为列

如果需要临时查看固定字段,可以用条件聚合:

sql
SELECT
    v.PROC_INST_ID_ AS process_instance_id,
    MAX(CASE WHEN v.NAME_ = 'name' THEN v.TEXT_ END) AS name,
    MAX(CASE WHEN v.NAME_ = 'reason' THEN v.TEXT_ END) AS reason,
    MAX(CASE WHEN v.NAME_ = 'amount' THEN v.DOUBLE_ END) AS amount
FROM ACT_HI_VARINST v
GROUP BY v.PROC_INST_ID_
ORDER BY v.PROC_INST_ID_ DESC;

namereasonamount 替换为表单设计器中的真实字段 key。

使用建议

  • 查询前先确认表单字段 key,不要用字段标题作为变量名。
  • 已结束流程优先查 ACT_HI_VARINST
  • 运行中流程可查 ACT_RU_VARIABLE,但历史表通常更适合统一排查。
  • 如果某类表单需要长期报表,建议升级为业务表单。
联系我们

获取报价、演示和二开方案

微信咨询二维码

微信咨询

17156169080

添加时备注「RuoYi Office」

在线体验商业版