Skip to content

常见 SQL 查询

二次开发中常用的数据库查询语句汇总。

常用表说明

二次开发中常用以下几张表;字段及更多表结构说明,见产品手册《03 慧正工作流系统 V8-流程引擎-数据库设计报告》。

流程建模相关表

表名说明
TW_HZ_FLOW_DEF流程定义数据
TW_HZ_FLOW_NODES流程节点信息

流程实例相关表

实例相关表通过 workId 互相关联,并与流程定义表通过 TW_HZ_FLOW_DEF.FLOWID 关联。

表名说明
TW_HZ_INSTANCE流程实例表(主键 ID = 流程实例 ID = workId
TW_HZ_TRACK实例当前活动路径记录表(主键 ID = 路径 ID = trackId
TW_HZ_LOG流程流转日志表(流程跟踪记录表)
TW_HZ_WORKLIST流程待办任务列表
TW_HZ_WORKLIST_DONE流程已办任务列表

所有已发布流程

TW_HZ_FLOW_DEF 中保存流程的所有版本,实际使用时一般取最新版本。以下 SQL 返回已发布流程的最新版本 ID 与名称。

sql
SELECT A.FLOWID, A.FLOWNAME
FROM TW_HZ_FLOW_DEF A
WHERE A.VERSION = (
    SELECT MAX(VERSION)
    FROM TW_HZ_FLOW_DEF
    WHERE FLOWID = A.FLOWID
)
AND A.ACTIVE = 1

所有实例/实例监控

对应菜单:流程管理 → 实例监控

sql
SELECT
    A.ID,A.TITLE,A.CREATED,T0.NODENAME,A.FLOWNAME,D.TYPENAME,A.FLOWID,
    CASE CAST(T0.FLOWSTATUS AS CHAR(10))
        WHEN '100' THEN '启动'
        WHEN '110' THEN '正常'
        WHEN '120' THEN '会签'
        WHEN '130' THEN '退回'
        WHEN '190' THEN '拿回'
        WHEN '160' THEN '子流程'
        WHEN '170' THEN '结束'
        WHEN '180' THEN '终止'
        WHEN '140' THEN '暂停'
        WHEN '150' THEN '撤办'
        ELSE
            CAST(T0.FLOWSTATUS AS CHAR(10))
        END AS STATUS,
    A.VERSION AS VER,
    A.VERSION,
    T0.ID AS TRACKID,
    T0.NODEID AS NODEID
FROM
    TW_HZ_INSTANCE A,
    TW_HZ_FLOW_DEF D,
    TW_HZ_TRACK T0
WHERE
    A.ID = T0.WORKID
  AND A.FLOWVER = D.VERSION
  AND A.FLOWID = D.FLOWID

扩展说明

若需展示待办人 ID,请根据workIdtrackId关联 TW_HZ_WORKLIST 表。

同一实例可能有多条待办,关联后结果会对应多行;也可按 workId 将待办人合并为一条,可参考:根据 workId 获取待办列表(办理人)

工作中心

示例中 adminuserid,实际使用时请替换为当前用户 ID。

SQL 占位符说明

下文 SQL 中若出现 [alluserid]SUBJECTION_TYPE 等占位符,含义均以本节为准。

占位符 / 字段说明
[alluserid]当前用户相关的全部 ID,包括用户 ID、部门 ID、上级部门 ID、群组 ID、岗位 ID 等。格式示例:'admin','HZ28821856ef63420156ef63429c0000'
SUBJECTION_TYPE = 'S'表示不包含子部门,此时 SUBJECTION_ID 只需匹配当前用户的部门 ID
SUBJECTION_TYPE <> 'S'表示可包含子部门等范围,此时用 SUBJECTION_ID IN ([alluserid]) 匹配

个人待办

对应菜单:工作中心 → 待办事宜 → 个人待办

sql
SELECT *
FROM TW_HZ_WORKLIST
WHERE (AUTH_ID = 'admin' OR AGENT_ID = 'admin')
  AND ISACTIVE = '1'
  AND STATUS_NO < '200'

待办认领

对应菜单:工作中心 → 待办事宜 → 待办认领

[alluserid]SUBJECTION_TYPE 含义见 SQL 占位符说明

sql
SELECT *
FROM TW_HZ_WORKLIST
WHERE ISCLAIM = '1'
  AND ISACTIVE = '1'
  AND AUTH_ID = '-null-'
  AND STATUS_NO < 200
  AND (
    (SUBJECTION_ID IN ([alluserid]) AND SUBJECTION_TYPE <> 'S')
        OR (SUBJECTION_ID = '当前用户部门ID' AND SUBJECTION_TYPE = 'S')
    )

待阅事宜

对应菜单:工作中心 → 待办事宜 → 待阅事宜

[alluserid]SUBJECTION_TYPE 含义见 SQL 占位符说明

sql
SELECT * FROM
    (SELECT T.* FROM TW_HZ_WORKLIST T
     WHERE STATUS='Reader' AND ISACTIVE='1' AND (AUTH_ID='admin'
         OR (AUTH_ID='-null-' AND SUBJECTION_ID IN([alluserid]) AND SUBJECTION_TYPE<>'S')
         OR (AUTH_ID='-null-' AND SUBJECTION_ID ='当前用户部门ID' AND SUBJECTION_TYPE='S'))
    ) A
WHERE WORKID NOT IN 
      (SELECT WORKID FROM TW_HZ_WORKLIST WHERE STATUS='Readed' AND AUTH_ID='admin')

个人已办

对应菜单:工作中心 → 已办工作 → 已办事宜

sql
SELECT *
FROM TW_HZ_WORKLIST_DONE
WHERE (AUTH_ID = 'admin' OR AGENT_ID = 'admin')
  AND ISACTIVE = '1'
  AND STATUS_NO > '200'
  AND STATUS_NO < '300'

已阅事宜

对应菜单:工作中心 → 已办工作 → 已阅事宜

sql
SELECT * FROM TW_HZ_WORKLIST WHERE AUTH_ID='admin' AND STATUS='Readed'

可阅事宜

对应菜单:工作中心 → 已办工作 → 可阅事宜

[alluserid] 含义见 SQL 占位符说明

sql
SELECT * FROM TW_HZ_WORKLIST 
    WHERE (auth_id='admin' OR (AUTH_ID='-null-' AND SUBJECTION_ID IN([alluserid])))
    AND STATUS='CReader'

已发起

对应菜单:工作中心 → 已办工作 → 已发起

sql
SELECT
    C.ID,C.TITLE,C.FLOWNAME,C.STARTTIME
FROM
    TW_HZ_INSTANCE C
WHERE
    C.CREATOR = 'admin'

撤办文件

对应菜单:工作中心 → 已办工作 → 撤办文件

sql
SELECT
    C.ID, C.FLOWID, C.TITLE, C.STARTTIME, C.FLOWNAME, D.ID AS TRACKID, D.WORKID
FROM
    TW_HZ_INSTANCE C,TW_HZ_TRACK D
WHERE
    D.WORKID = C.ID AND D.FLOWSTATUS = '150'
    AND C.CREATOR = 'admin'

个人已办&未完结

sql
SELECT *
FROM TW_HZ_WORKLIST_DONE w,
     TW_HZ_TRACK t
WHERE (w.AUTH_ID = 'admin' OR w.AGENT_ID = 'admin')
  AND w.ISACTIVE = '1'
  AND w.STATUS_NO > '200'
  AND w.STATUS_NO < '300'
  AND w.TRACKID = t.ID
  AND t.FLOWSTATUS = 170

STATUS_NO说明

待办表中的 STATUS_NO 含义见产品 jar 包:horizon-workflow-pub-xx.jar!/status_no.properties

配置项说明
TodoMax200待办的最大编号 +1
TodoMin100待办的最小编号 -1
DoMax300已办的最大编号 +1
DoMin200已办的最小编号 -1

放入待办列表的权限(101–199)

配置项
Author101
SecondAuthor102
StartSubFlow103
HuiQian104
StartHuiQian105

放入已办列表的权限(201–299)

配置项
Done201
DoneHuiQian202
DoneSecond203

其他状态

配置项说明
Reader301待阅
Readed401已阅
CReader501可阅
Creator601创建者
Delete999删除标记