审批流程数据库设计

Posted 绿色的草

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了审批流程数据库设计相关的知识,希望对你有一定的参考价值。

要做一个通用的流程系统,大概应建立如下数据表:

  1. 流程表(tbl_flow)

 

字段名数据类型备注
flow_id int 流程编号,主键
flow_no int 流程号,唯一列
flow_name varchar2(100) 流程名称
remark varchar2(500) 备注

  示例数据:

 

flow_idflow_noflow_nameremark
1 5 请假流程 请假流程
2 10 报销流程 报销流程

 

  2. 流程节点表(tbl_flow_node)

 

字段名数据类型备注
flow_node_id int 流程节点编号,主键
flow_no int 流程号,与流程表对应
flow_node_name varchar2(100) 流程节点名称
flow_node_role varchar2(100) 流程角色
remark varchar2(500) 备注

  示例数据:

 

flow_node_idflow_noflow_node_nameflow_node_roleremark
1 5 提交请假单 提交请假单
2 5 部门经理审批 部门经理 部门经理审批
3 5 总经理审批 总经理 总经理审批

 

  3. 流程线表(tbl_flow_line)

 

字段名数据类型备注
flow_line_id int 流程线编号,主键
flow_no int 流程号,与流程表对应
prev_node_id int 前一节点编号
next_node_id int 后一节点编号
remark varchar2(500) 备注

  示例数据:

 

flow_line_idflow_noprev_node_idnext_node_idremark
1 5 1 2 提交部门经理审批
2 5 2 3 提交总经理审批

 

  4. 流程角色_员工表(tbl_flow_role_user)

 

字段名数据类型备注
flow_role_name varchar2(100) 流程角色名称
user_id int 员工编号
dept_id int 部门编号

  示例数据:

 

flow_role_nameuser_iddept_id
部门经理 13 2
部门经理 26 4
总经理 3 1

 

  以上就是一个通用的审批流程所需要的数据表。

 

  下面,我们来做一个简单的示例,就是请假审批。

  需要为请假审批额外增加两张表,其中一张表对应于请假单,但除了请假单的必需数据外,还增加了“流程号”和“当前节点编号”两个字段;另一张表用于记录审批过程中的审批意见。

 

  5. 请假表(tbl_leave)

 

字段名数据类型备注
leave_id int 请假编号,主键
user_id int 请假人编号
user_name varchar2(100) 请假人姓名
leave_type varchar2(100) 请假类型(病假、事假)
leave_reason varchar2(500) 请假原因
start_date date 开始日期
end_date date 终止日期
add_date date 提交日期
flow_no int 流程号
current_node int 当前节点编号

  补充:再增加一个字段state,用于表示请假单状态,0表示草稿,1表示已提交审批,2表示审批结束。

 

  6. 请假审批表(tbl_leave_audit)

 

字段名数据类型备注
audit_id int 审批编号,主键
leave_id int 请假编号,与请假表对应
flow_node_id int 节点编号
user_id int 审批人编号
user_name varchar2(100) 审批人姓名
audit_info varchar2(500) 审批意见
audit_date date 审批日期

以上是关于审批流程数据库设计的主要内容,如果未能解决你的问题,请参考以下文章

从合同审批流程出发,说说工作流引擎的设计原理

BPM驳回的优化设计

OA多级审批流程表设计方案(干货满满)

云原生Java设计模式8,校验审批流程改善神器,责任链模式

如何实现OA系统的自定议审批流程的数据库设计

工作流和审批流的区别?