审批流程
学习:http://t.csdnimg.cn/AtyDS
上报工作,请假,调岗,打卡等
员工提交各个模块的申请都要走审批流程,审批流程要通过后才能够生效
人物角色:申请人,申请详情,审批流程,审批规则
申请人点击app上的某个申请,比如请假,
然后填写上必要的内容作为申请详情,比如请假原因,请假时间等,
接下来申请人指定一个审批流程后提交。
审批流程中每个审批人收到待审批和待办后一次按规则审批,通过后申请有效,驳回后申请失效。
通过我的申请,已审批等页面可以查看审批详情。
数据库的表:用户表(包括申请人和审批人)
一张审批表(用来记录某一个审批的全部信息)
多张审批详情表(请假详情,工作量详情等)
审批流程表
审批历史表
-
PRIMARY KEY (
user_id
): 主键,用于唯一标识每个员工。基于user_id
字段。 -
UNIQUE KEY
users_username
(username
): 唯一键,确保每个用户名在表中是唯一的。基于username
字段。 -
KEY
users_dept_id
(dept_id
): 索引,用于加速对部门编码的查询。基于dept_id
字段。
-
PRIMARY KEY (
approval_id
): 主键,用于唯一标识每个审批记录。基于approval_id
字段。 -
KEY
index_approval_applicant
(applicant_id
): 索引,加速对申请人编码的查询。基于applicant_id
字段。 -
KEY
index_approval_approver
(approver_id
): 索引,加速对审批人编码的查询。基于approver_id
字段。 -
KEY
index_approval_create_time
(create_time
): 索引,加速根据创建时间的查询。基于create_time
字段。
审批详情表:
就是工作量,这里的可以有多张审批详情表是说请假是一张表,调岗是一张表等
我们看到无论是审批表还是详情表,都有一个status字段,来标志审批状态。
通过模块化的思想,可以将审批详情分为多张表。这是从审批系统的角度思考,而从各个模块的角度去想,因其都需要进行审批,所以只用一张表来存储就行,不需要为其单独的建表。
而所谓的审批规则是根据业务场景确定的,比如我这个项目,审批规则就是最简单的分级审批,每个申请只有一个审批流程,审批流程中每一级只有一个审批人,任何一级审批驳回后整个申请就宣告结束。其实只要有了基础的审批表、审批详情表、审批流程表,任何审批规则都是可以实现的,无非是复杂程度不同。
如果有查看每一级审批记录的需求,也可以再建立一张审批历史表,其中记录了每一级审批的审批人、时间等信息。