审批流程数据库设计
要做一个通用的流程系统,大概应建立如下数据表:
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 | 审批日期 |