审批业务相关数据表
1、业务模块数据表
1.1 业务模块以及场景码
业务模块 | 模块场景码(标识) |
---|---|
报销模块 | OER |
指标模块 | GBI |
预算编报模块 | BGTC |
经费申请 | GSP |
1.2 业务模块对应数据表
*注:在各模块的单据表中,都会含有一个业务标识字段,与我们的流程相关的数据表参数关联
-
报销模块:
数据表:OER_DJML 业务标识字段:DJGUID
-
指标模块
-
指标调整/指标调剂 单据 (区分条件:DJLX=‘TZD’/DJLX=‘TJD’)
数据表:GBI_TZDML
业务标识字段:DJGUID
-
指标冻结/解冻 单据 (区分条件:DJLX=‘DJD’ / DJLX=‘JDD’)
数据表:GBI_DJDML
业务标识:DJGIUID
-
指标变更单据
数据表: GBI_BGDML
业务标识:DJGUID
-
指标额度调整单据
数据表:GBI_KZZB_TZDML
业务标识:IDTZDH
-
-
预算编报模块
预算编报模块下被分为两种类型的单据:种是收入预算编报和支出预算编报。其中支出预算又被分为很多中类型的单据。所有类型的预算编报单据都是存放在同一张表格中的 PM_PROJECT_INFO 。该表中的 Task_Id字段,表示了当前某条单据的预算审核阶段(Task_id=‘1’ 表示一上,Task_id=‘2’ 表示一下)。
-
收入类预算编报
数据表:PM_PROJECT_INFO 业务标识:BGT_ID
区分字段条件:DRAFT_MB_CODE=‘5’
-
支出类预算编报
数据表:PM_PROJECT_INFO 业务标识:BGT_ID
-
人员类预算申报单
区分字段条件:DRAFT_MB_CODE=‘27’
-
公用经费预算申报单
区分字段条件:DRAFT_MB_CODE=‘25’
- 特定目标类预算申报单
区分字段条件:DRAFT_MB_CODE=‘26’
-
-
-
经费申请模块
数据表: fda_djml 业务标识:DJGUID
经费申请模块单据被分为如下几种: 各种单据之间的区别在于fda_djml表中的 DJLXID字段的不同(1-5)
- 一般经费支出申请单
- 公务员接待经费申请单
- 差旅费申请单
- 会议经费申请单
- 培训经费申请单
2、流程模板分析
*注:本次探讨是以 报销模块下的 借款报销单 为基础进行延展的。其他模块的不同类型单据,基本步骤都是如出一辙的。
2.1流程模板数据表
首先我们通过U8Colud进入到流程管理模块中,可以设置和查看到对应各个模块的流程模型。将该流程模型导出,就可以得到整个流程结点的JSON格式的数据模型。
这些流程模型全部保存在数据库 ACT_DE_MODEL 表中,如下:
--获取报销模块下,借款报销单据的流程模板
select * from ACT_DE_MODEL where APP_TYPE_CODE='oer' and SET_YEAR='2023' and MODEL_KEY='jkbxd-2023' and NAME='借款报销单'
流程模型中所有结点的详细信息,可以通过 模型表 ACT_DE_MODEl.MODEL_EDITOR_JSON来获取,该字段下的数据为json数据保存了本条流程模型中的所有结点数据信息。JSON数据的基本数据信息如下:
-
properties
流程的基本信息 :包括 :流程key process_id (MODEL_KEY)、流程名称 name 等信息
-
childShapes
该key里面,包含了该流程的所有结点数据信息,其中每个结点中还包含了各种详细信息
-
resourceId : 目标结点id(该数据对应数据表 ACT_PROC_RE_NODE.node_id 后续介绍 )-
-
properties :结点属性
-
name:结点名称
-
preemptmode:抢占模式
…
-
participants:参与者列表
-
list
-
type : 结点类型
-
typeName:结点名称
-
value(list多个)
- source:参与者来源
- code:参与者标识码
- name : 参与者标识名称
- type :参与者类型
…
-
-
-
-
以上就是Json格式流程结点信息的简单介绍。在审核过程中查询结点审核人,就是通过每个结点中的参与者列表中的数据来确定当前结点的审核人。
2.2 流程定义数据表
在同一业务模块的同一类在单据中,可能会出现部署多种流程模板的情况或者是同一流程模板存在更新的变化,基于这种情况U8Cloud会将这些不同的流程或不同版本的流程保存到 表 **ACT_RE_PROCDEF **中。
(eg:老单据还是继续走以前的流程模板)
--查询报销模块中借款报销单据的流程定义数据
select * from ACT_RE_PROCDEF where NAME_='借款报销单' and KEY_='jkbxd-2023'
2.3 流程结点定义表
流程中的每个结点都是单独存在的,每个结点(包括开始、结束、互斥网关等结点)的数据会被统一保存到 流程定义结点表 ACT_PROC_RE_NODE 中,各个结点之间的连接条件,以及结点之间的父子几点关系都会被统计在该表中,如下图所示。
--查询报销模块中借款报销单据的流程模型中的所有结点定义数据
select * from ACT_PROC_RE_NODE where proc_def_id='jkbxd-2023:10:72f1b5e9-52dc-11ee-8896-44af2863f632'
--流程模型JSON数据中各个结点资源id对应
-- and node_id='sid-EACDC562-4776-426F-9B1B-C159619A8283'
3、流程相关数据表
每种类型的单据在创建之后,都会生成一个唯一的业务标识(上面介绍过),该业务标识就是与审核流程相关信息的一个桥梁 。通过该业务标识我们可以获取到每一条单据的流程实例,单据后续的审核、销审、审核内容、审核流程结点位置、状态等一切与审核相关的信息,都会与建立在该单据的流程实例之上。
3.1 流程实例数据表
流程实例表 ACT_HI_PROCINST 保存了所有类型单据的流程实例,记录了每个流程实例的详细信息,包括流程定义ID、流程实例ID、开始时间、结束时间、持续时间和流程状态等等。 这些信息不仅可以用于流程监控、统计,还可以用于流程追溯(审核)和回溯(销审)。
3.2 运行时结点任务表
每个流程都是由多个不同的结点相互关联组合而成。每个结点即是指代不同的审核人,通过规定的流程逻辑关系,一层一层的来审核我们创建的业务单据。审核过程始终存在某一个结点为正在待审核的结点(不包含已经审核完成的单据)。这个当前正在待审核的结点就会存在于我们的运行时几点表中 ACT_RU_TASK 。
该表只包含当前活动的任务信息,即尚未完成或尚未被取消、删除的任务、 当任务被完成、取消或删除时,相应的记录会从 ACT_RU_TASK 表中删除。
3.3 历史结点任务表
历史结点任务表 ACT_HI_TASK ,通过上面理解顾名思义该表就是保存了单据流程中已经执行后的结点数据信息。 保存执行中和已完成的任务,根据是否有end_time标记任务是否完成。
同时该表也会保存当前正在运行时的结点信息,通过end_time字段来展现结点是否已经结束,当结点审核完成后,会相应的来改变该结点的状态!
关于流程历史结点信息表还有一个就是 ACT_HI_ACTINST 该表也是保存了结点相关的数据信息。
4、单据流程状态分析
4.1 创建任务单据状态
首先我们在报销模块下创建一条借款报销单据,通过报销单据表查询出我们创建的单据信息。然后通过上面介绍的,通过单据的业务标识字段信息,去获取该单据对应在 流程实例表、流程运行时结点表、历史结点任务表等表中流程相关的信息。
--查询出创建的单据
select DJGUID,* from OER_DJML where KJND='2023' and CRERDM='351' and DJBH='JKD202309140002'
--根据业务标识代码去获取该条单据的流程实例信息
select * from ACT_HI_PROCINST where BUSINESS_KEY_='6E1AF109828341B492C5E43523ACDC6F'
--通过流程实例表中的流程实例id观察‘运行时结点数据信息’、‘历史结点数据信息’
select * from ACT_RU_TASK where PROC_INST_ID_='bfd4f2d5-52e0-11ee-9d0b-44af2863f632'
select * from ACT_HI_TASKINST where PROC_INST_ID_='bfd4f2d5-52e0-11ee-9d0b-44af2863f632'
业务单据表中,会存在’ZT’字段用来标识当前单据的流程审核状态:
ZT = ‘-1’ THEN ‘已作废’
ZT = ‘0’ THEN ‘未送审’
ZT = ‘-3’ THEN ‘暂存’
ZT = ‘3’ OR ZT = ‘6’ THEN ‘已审核’
ZT = ‘1’ OR ZT = ‘2’ THEN ‘审核中’
ZT = ‘8’ OR ZT = ‘9’ THEN ‘已完结’ZT值会随着单据的实际状态和审核过程发送对应的变化,在页面上看见单据的实际状态就是根据该字段而来的。
创建单据之后,未送审的单据也会有与之对应的流程实例。并且运行时/历史 结点任务表中都会存在一个任务结点(经办人送审结点)。
运行时结点任务表 和 历史结点任务表 两个数据表中都包含了流程定义id 和 流程结点定义id,通过这两个字段我们也可以获取到流程的定义数据。
--通过流程定义id PROC_DEF_ID_ 获取到流程定义数据
select * from ACT_RE_PROCDEF where ID_='jkbxd-2023:10:72f1b5e9-52dc-11ee-8896-44af2863f632'
--通过流程定义id PROC_DEF_ID_ 以及 结点定义Key TASK_DEF_KEY_ 可以查询到该结点的定义数据
select * from ACT_PROC_RE_NODE where proc_def_id='jkbxd-2023:10:72f1b5e9-52dc-11ee-8896-44af2863f632' and node_id='sid-D4A61613-3066-4DDA-B97E-7821D9D1BD3F'
审核人信息的获取过程就是之前介绍的方式。通过流程模型的JSON数据中对应结点的信息:
- source:参与者来源
- code:参与者标识码
- name : 参与者标识名称
- type :参与者类型
等这些数据,然后后台根据不同类型在结合单据的数据信息,进行查询获取得到!查询到的审核人信息就会将其保存到 运行时/历史 几点信息表中的 ASSIGNEE_字段中。
同时还可以根据 结点定义表中该节点的 physics_child_id 字段数据,获取到该流程的下一个结点信息!
4.2 单据送审后状态变化
将测试单据进行送审操作后,观察 单据表、流程实例表、流程运行时结点表、历史结点任务表等表格中的信息变化情况。
--送审后单据变化
--原单据状态变化情况
select DJGUID,* from OER_DJML where KJND='2023' and CRERDM='351' and DJBH='JKD202309140002'
--获取单据的 运行时/历史 结点任务表中的数据
--根据业务标识代码去获取该条单据的流程实例信息
select * from ACT_HI_PROCINST where BUSINESS_KEY_='6E1AF109828341B492C5E43523ACDC6F'
--通过流程实例表中的流程实例id观察‘运行时结点数据信息’、‘历史结点数据信息’
select PARENT_TASK_ID_,ASSIGNEE_,* from ACT_RU_TASK where PROC_INST_ID_='bfd4f2d5-52e0-11ee-9d0b-44af2863f632'
select PARENT_TASK_ID_,ASSIGNEE_,* from ACT_HI_TASKINST where PROC_INST_ID_='bfd4f2d5-52e0-11ee-9d0b-44af2863f632'
1.原单据数据变化
ZT字段变为1(审核中):该变化是在送审流程操作中对原单据数据进行的修改
CURRENTNODE 字段:该字段表示单据正在运行时的结点定义Key,通过该定义key可以在流程结点定义表中该节点定义信息
PREVIOUSNOdE 字段:表示当前正在运行结点的父结点定义key,通过该字段同样可以获取到父节点的结点定义信息
*注:不是所有业务单据表都会存在父节点、当前结点的信息字段。
2.运行时结点/历史结点数据信息
运行时结点任务表的变化就是将上一结点信息去掉了(因为已经审核了),变为了最新的待审核结点信息。可以通过下面字段来观察结点于结点之间的联系
- PARENT_TASK_ID :该字段表示当前结点的上一结点的’ID’,通过id可以查询到上一结点的审核信息。
- ASSIGNEE_ :保存了当前审核人结点信息的id
4.3 其他操作态查询
单据流程变化时,观察单据流程相关数据表的数据情况
--销审后单据变化
--原单据状态变化情况
select DJGUID,* from OER_DJML where KJND='2023' and CRERDM='351' and DJBH='JKD202309140002'
--获取单据的 运行时/历史 结点任务表中的数据
--根据业务标识代码去获取该条单据的流程实例信息
select * from ACT_HI_PROCINST where BUSINESS_KEY_='6E1AF109828341B492C5E43523ACDC6F'
--通过流程实例表中的流程实例id观察‘运行时结点数据信息’、‘历史结点数据信息’
select PARENT_TASK_ID_,ASSIGNEE_,* from ACT_RU_TASK where PROC_INST_ID_='bfd4f2d5-52e0-11ee-9d0b-44af2863f632'
select PARENT_TASK_ID_,ASSIGNEE_,* from ACT_HI_TASKINST where PROC_INST_ID_='bfd4f2d5-52e0-11ee-9d0b-44af2863f632'
1.原单据数据变化
- ZT 字段同样会随州流程的审核发生对应的变化
- CURRENTNODE 字段
- PREVIOUSNOdE 字段
2.运行时结点/历史结点数据信息
- PARENT_TASK_ID
- ASSIGNEE_
4.5 审核人查询示例
*注:不同类型的单据,在查询审核人信息时会存在一点的差异
-
部门负责人审核人查询
--根据单据信息查询到部门信息
select DJGUID,BMDM,* from OER_DJML where KJND='2023' and CRERDM='351' and DJBH='JKD202309140002'
--根据部门代码获取到部门信息,查询出部门负责人信息
select fzrdm,* from PUBBMXX where bmdm='102' and kjnd='2023' and gsdm='001'
select * from GL_CZY where CzyCode='20200018'
-
会计审核示例
当结点到达会计审核结点后,通过json数据 或者 ACT_PROC_RE_NODE 定义表中可以观察到审核人的类型和代码,通过该类型以及代码就可以获取到对应审核人信息。
--role角色类型的审核人查询方式: --通过操作员角色表获取到角色id所对应的操作员id,在通过czy信息表获取审核人信息 select NAME + ''from GL_CZY where ID in (select CZYID from GL_CZY_ROLE where ROLEID ='483')
5、流程审核日志的查询
在流程的审核信息是分为几个表来存储不同类型的信息,比如我们结点的审核意见也是单独的存在一张表中。审核意见表的数据保存在 ACT_HI_COMMENT
--通过流程实例id + 流程结点id 查询任务结点审核意见
select * from ACT_HI_COMMENT where PROC_INST_ID_='bfd4f2d5-52e0-11ee-9d0b-44af2863f632' and TASK_ID_='403d35fc-537b-11ee-b367-44af2863f632'