常见 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 与名称。
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所有实例/实例监控
对应菜单:流程管理 → 实例监控
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,请根据workId和trackId关联 TW_HZ_WORKLIST 表。
同一实例可能有多条待办,关联后结果会对应多行;也可按 workId 将待办人合并为一条,可参考:根据 workId 获取待办列表(办理人)
工作中心
示例中 admin 为 userid,实际使用时请替换为当前用户 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]) 匹配 |
个人待办
对应菜单:工作中心 → 待办事宜 → 个人待办
SELECT *
FROM TW_HZ_WORKLIST
WHERE (AUTH_ID = 'admin' OR AGENT_ID = 'admin')
AND ISACTIVE = '1'
AND STATUS_NO < '200'待办认领
对应菜单:工作中心 → 待办事宜 → 待办认领
[alluserid]、SUBJECTION_TYPE 含义见 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 占位符说明。
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')个人已办
对应菜单:工作中心 → 已办工作 → 已办事宜
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'已阅事宜
对应菜单:工作中心 → 已办工作 → 已阅事宜
SELECT * FROM TW_HZ_WORKLIST WHERE AUTH_ID='admin' AND STATUS='Readed'可阅事宜
对应菜单:工作中心 → 已办工作 → 可阅事宜
[alluserid] 含义见 SQL 占位符说明。
SELECT * FROM TW_HZ_WORKLIST
WHERE (auth_id='admin' OR (AUTH_ID='-null-' AND SUBJECTION_ID IN([alluserid])))
AND STATUS='CReader'已发起
对应菜单:工作中心 → 已办工作 → 已发起
SELECT
C.ID,C.TITLE,C.FLOWNAME,C.STARTTIME
FROM
TW_HZ_INSTANCE C
WHERE
C.CREATOR = 'admin'撤办文件
对应菜单:工作中心 → 已办工作 → 撤办文件
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'个人已办&未完结
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 = 170STATUS_NO说明
待办表中的 STATUS_NO 含义见产品 jar 包:horizon-workflow-pub-xx.jar!/status_no.properties。
| 配置项 | 值 | 说明 |
|---|---|---|
TodoMax | 200 | 待办的最大编号 +1 |
TodoMin | 100 | 待办的最小编号 -1 |
DoMax | 300 | 已办的最大编号 +1 |
DoMin | 200 | 已办的最小编号 -1 |
放入待办列表的权限(101–199)
| 配置项 | 值 |
|---|---|
Author | 101 |
SecondAuthor | 102 |
StartSubFlow | 103 |
HuiQian | 104 |
StartHuiQian | 105 |
放入已办列表的权限(201–299)
| 配置项 | 值 |
|---|---|
Done | 201 |
DoneHuiQian | 202 |
DoneSecond | 203 |
其他状态
| 配置项 | 值 | 说明 |
|---|---|---|
Reader | 301 | 待阅 |
Readed | 401 | 已阅 |
CReader | 501 | 可阅 |
Creator | 601 | 创建者 |
Delete | 999 | 删除标记 |
