JavaEE项目实战(OA系统)之十八_流程审批之一
下面介绍OA系统的另一模块:流程审批。
OA系统推崇的是无纸化办公,因此各项事务的流程审批是OA系统的一大类应用。
下面,我们来设计流程审批的数据库。
首先,我们来看一张图:
所谓的“流程审批”,就是一份数据,在设定好的节点之间流转。在流转过程中,数据可能发生变化。
对于一个流程,它的节点和连线是固定的。通常是由用户公司的管理员通过二次开发工具设定流程。
要做一个通用的流程系统,大概应建立如下数据表:
1. 流程表(tbl_flow)
字段名 |
数据类型 |
备注 |
flow_id |
int |
流程编号,主键 |
flow_no |
int |
流程号,唯一列 |
flow_name |
varchar2(100) |
流程名称 |
remark |
varchar2(500) |
备注 |
示例数据:
flow_id |
flow_no |
flow_name |
remark |
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_id |
flow_no |
flow_node_name |
flow_node_role |
remark |
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_id |
flow_no |
prev_node_id |
next_node_id |
remark |
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_name |
user_id |
dept_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 |
审批日期 |