一、需求:
一个审批流程要支持一下这个基本的要求:
- 自定义审核流程
- 提交、撤销申请
- 单、多级审批
- 状态追踪
- 日志记录
要解决这些问题我做了如下的数据库设计:
二、审批流程图:
三、表设计
有些表省略了主键id和创建时间、修改时间、创建人、修改人等字段;
流程表:审批流程的名字,表示业务名称;
节点表:就是各个流程需要经过的步骤(没有审核人的节点就是某个流程的起始);
流程线表(顺序):就是流程各个节点的顺序;
审核人表:审核人,会有默认审核人;
流程表:
flow_id | flow_no | flow_name | remark |
---|---|---|---|
1 | 111 | 素材上传 | 素材上传审批流程 |
2 | 222 | 节目单上刊 | 节目单上刊审批流程 |
节点表:
flow_node_id | flow_no | flow_node_name | flow_node_dept_id | flow_node_dept_id | remark |
---|---|---|---|---|---|
1 | 111 | 提交素材上传申请 | 无 | 无 | 提交素材上传申请 |
2 | 111 | 法务审批 | 法务部id | 默认法务部审核人-吴仔id | 技术审批 |
3 | 111 | 运维审批 | 运维部id | 选择的运维部审核人-张武id | 经理审批 |
顺序表(线表):
flow_line_id | flow_no | prev_node_id | next_node_id | remark |
---|---|---|---|---|
1 | 111 | 1 | 2 | 提交给技术审批 |
2 | 111 | 2 | 3 | 提交给部门经理审批 |
审核人表:
dept_name | user_name | audit_default |
---|---|---|
运维部 | 李四 | 1 |
运维部 | 张三 | 0 |
运维部 | 张武 | 0 |
法务部 | 吴仔 | 1 |
四、注意事项
4.1 申请内容过多,导致数据条数过大
假如我一次性申请1000个设备,那随着时间推移数据量就很大了,这样会影响效率
这时候就需要在流程表里面加一个条件来确定影响的等级,从而不会直接存储最低等级的数据
五、拓展
5.1 可以添加审核通知
比如我们可同微信的服务号来通知,可以查看
https://blog.csdn.net/LC_Liangchao/article/details/121954888