本篇博客的主要内容是:设计【请假申请】相关的数据表;
目录
1.leaveForm请假单表,processFlow审批任务流程表,notice消息通知表:表设计
2.leaveForm请假单表,processFlow审批任务流程表,notice消息通知表:实例说明
一:【多级请假审批流程】的数据库设计:分析
1.请假工作流程图
具体详细流程要求可以看下:OA系统二:项目介绍:需求介绍;功能展示;。对于上面这种工作流程,【底层应该如何设计数据库表】,【程序中又该如何对这些数据进行控制】是重点!
说明一点:部门经理提交的请假申请,无论请假时长是多长,都是需要总经理审批的。
……………………………………………………
2.工作流程表的设计分析
(1)LeaveForm请假单表:员工在申请请假的时候,需要在前台浏览器界面填写请假申请表单,表单的信息就会存储在LeaveForm这个表中;(PS:Leave除了有离开的意思外;还有假期、准许的意思)
(2)ProcessFlow审批任务流程表:员工将请假表单提交后,这个请假需要谁审批就已经确定了(也就是,这请假需要那些审批流程就已经确定了),而这些审批流程就会存储到ProcessFlow表中;
【需要哪些审批流程】归纳如下:(2021-06-08补充)
● 普通员工请假时长大等于72小时,有三个审批环节:【普通员工自己审批自己,这个环节默认直接通过】+【部门经理审批】+【总经理审批】;
● 普通员工请假时长小于72小时,有两个审批环节:【普通员工自己审批自己,这个环节默认直接通过】+【部门经理审批】;
● 部门经理请假(无论多长时间,都需要总经理审批),有两个审批环节:【部门经理自己审批自己,这个环节默认直接通过】+【总经理审批】;
● 总经理请假,有一个审批环节:【总经理自己审批自己,这个环节默认直接通过】;
(3)Notice消息通知表:一张辅助表;我们希望这样:
● 某个请假申请提交后,能及时给下一个审批环节的人发送【“有一个请假需要你审批”的通知】;
● 然后,请假在某个环节被审批通过后,能及时再给下一个审批环节的人发送【“有一个请假需要你审批”的通知】,同时给请假的人发送【“你的请假申请在***环节已经被审批了,审批通过;然后等待下一个**环节审批”的通知】;
● 然后,请假在某个环节被审批不通过后,能及时给给请假的人发送【“你的请假申请在***环节已经被审批了,审批不通过”的通知】
整体来看,请假流程并不复杂,但是这儿是在工作中常见的数据库设计:【任务流程的数据库设计】。请假是一个典型的工作流程,对于这种线型的工作流程,在数据上如何表示,是这部分的重点。
……………………………………………………
3.设计约束
(1)LeaveForm请假单表的每一条记录都是一个审批流程;
(2)员工要想请假,需要在前台页面上填写一个请假的表单,然后提价这个表单,然后这个请假的表单数据就会存储到【LeaveForm请假单表中】;然后,会按照业务规则去生成对应的所有的审批环节,即也就是在【ProcessFlow审批任务流程表】创建相应的记录;
(3)这个很容易理解;比如研发部的部门经理只能审批研发部员工提交的请假申请;总经理可以审批所有部门员工的请假申请;
(4)没什么好说的;
(5)没什么好说的;
(6)产生的任何操作,都要以系统通知的方式,通知相关人等;(这条的目的是为了让系统有更好的用户体验)
二:具体表设计
1.leaveForm请假单表,processFlow审批任务流程表,notice消息通知表:表设计
(1)leaveForm请假单表
员工(包括普通员工、部门经理、总经理)每填写一个请假申请表单,提交一个请假申请后;都会在LeaveForm表中增加一条记录。
说明:
(1)form_type:请假类型,在表设计的时候就已经确定了;所以,在前台设计后后台编写逻辑代码的时候,需要清楚form_type字段不同的值代表的不同的意思;
(2)start_time和end_time:表示请假的起止时间,通常约束到小时就够了;
(3)create_time:即这条记录的创建时间;这不是一个和业务相关的字段;一般员工在前台页面上填写好请假表单并点击提交后,紧接着与之对应的在【LeaveForm请假单表】中就会创建一条记录,create_time就是创建这条记录的时间;
(4)state:请假申请的当前的状态;(PS:以前做项目的时候,这些固定的值,在编写java代码的时候,都写死在了某些配置文件中,我们直接调用……)
(2)processFlow审批任务流程表
员工(包括普通员工、部门经理、总经理)每填写一个请假申请表单,提交一个请假申请后;就会在LeaveForm表中增加一条记录;;;因为请假申请提交后,这个申请需要走一个审批流程,ProcessFlow表就是存储这个审批流程的。
说明:
(1)form_id:是LeaveForm请假单表中的主键;即【ProcessFlow审批任务流程表】和【LeaveForm请假单表】通过form_id字段形成了主外键的关联;【ProcessFlow审批任务流程表中的form_id字段】主要是用来说明,当前的执行流程是针对于哪一个申请的;
(2)operator_id:经办人编号;因为当前的审批任务是需要不同的人来完成的(比如这个审批任务是需要部门经理去审批的);operator_id就是指明这个任务需要由谁来处理。其实operator_id是和员工表对应的,比如研发部的基层员工提交了一个请假申请,那么这个审批任务接下来就需要研发部的部门经理齐子墨来处理,那么此时operator_id就为2;
(3)action:apply表示当前流程是申请流程,audit表示当前流程是审批流程。
(4)result:表示审批的结果;表示审批结果:同意或者驳回;自然,该字段可以是空;(具体为什么,可以看下下面的例子)
(5)reason:审批意见;自然该字段也是可以是空的;(具体为什么,可以看下下面的例子)
(6)audit_time:审批时间:就是审批时间啊;自然该字段也是可以是空的;(具体为什么,可以看下下面的例子)
(7)order_no:任务的序号;比如,一个普通员工提交一个超过时间72小时请假申请后,那么这个申请(假设部门经理会审批通过啦)需要经过【普通员工提交请假任务】,【部门经理审批】,【总经理审批】三个处理阶段,那么就可以使用1,2,3来表示【这个请假申请审批的三个阶段啦】;
(8)state:请假申请“当前”的处理状态;
(9)is_last:比如,如果一个普通员工提交了一个小于72小时的请假申请,那么【部门经理的那个流程】就是最后的节点;如果一个普通员工提交了一个大于72小时的请假申请,那么【部门经理的那个流程】就不是最后的节点,【总经理的那个流程】才是最后的节点;
(3)notice消息通知表
辅助系统的正常运行,这个表的目的是为了让系统有更好的用户体验;在每产生一些【新的表单申请】或者【表单申请每走到一个新的流程】的时候,系统都会给对应的人发出相应的消息;
说明:
(1)receiver_id:这条消息要给谁看;比如,当4号员工研发部宋彩妮提交一个请假申请时,那么这个请假申请需要研发部部门经理齐子墨审批,,即其就会在notice表中增加一条记录,这条记录的receiver_id就为2;表示这条消息是要给employee_id=2的研发部经理齐子墨看的;
2.leaveForm请假单表,processFlow审批任务流程表,notice消息通知表:实例说明
LeaveForm请假单表:
(1)因为,【研发部基层员工宋彩妮】刚提交了请假申请,所以state字段值为processing;表示这个请假表单的当前的状态是正在审批中;
(2)【研发部基层员工宋彩妮】是在【2020-09-14 09:02:35】提交的这个请假申请;
ProcessFlow审批任务流程表:
(2021-06-06补充)一旦【研发部基层员工宋彩妮】提交了一个请假申请后,在LeaveForm表中就会添加一条请假单记录。(同时【研发部基层员工宋彩妮】的这个请假需要谁审批就已经确定了,因为这个请假时长大于72小时,所以需要【宋彩妮自己审批自己,这个环节默认直接通过】+【部门经理审批】+【总经理审批】;三个环节;;;所以:)基本在同一时间(或延迟几十毫秒或者几百毫秒或者几十秒后)也会在process_flow表中生成三个审批环节的数据;
第一条记录:
(1)因为上面三条流程记录都是针对LeaveForm请假单表中【研发部基层员工宋彩妮提交的那条申请】;自然【 ProcessFlow审批任务流程表中的form_id=1】喽;
(2)【研发部基层员工宋彩妮】提交的请假申请在【宋彩妮自身这一环就会自动被审批通过】,所以第一记录的state=complete; 然后,【研发部基层员工宋彩妮提交的请假申请】在【研发部基层员工宋彩妮】这儿是处理流程的第一环,自然order_no=1;
(3)因为这个请假申请是【研发部基层员工宋彩妮】发起的,所以这个请假在【研发部基层员工宋彩妮】这一环是申请,即action=apply;;
………………………………
第二条记录:
(1)因为,当前环节需要【部门经理齐子墨】审批,所以operator_id=2;;;;;然后,因为请假申请在【部门经理齐子墨】这一环需要的操作是审批,即action=audit;
(2)然后,这个例子中,我们演示的是在【部门经理齐子墨】这一环审批通过了;;然后,紧接着这个请假申请就会被传递到下一环【总经理张晓涛那一环】;
……………………………………………………
第三条记录:
(1)请假申请在【部门经理齐子墨】那一环审批通过后;然后就被传递到了【总经理张晓涛那一环】;然后,在【总经理张晓涛这一环】,总经理目前还没审批,自然就是上面的状态,state=process表示正在处理。
(2)当总经理,审批后,第三条记录的空白内容就会有内容了;然后任务的状态state就会变成complete;
(3)因为【总经理张晓涛这一环】是最后一环,即is_last=1;如果这一环审批后,即state=complete后,表示【研发部基层员工宋彩妮】提交的这个请假申请的整个流程就走完了。。。然后在LeaveForm请假单表中【研发部基层员工宋彩妮】请假申请的那条记录的state也需要修改为approved(审批通过),或者refused(驳回)了:
……………………………………………………
可以发现,从 ProcessFlow审批任务流程表的state字段,数据库DBA就可以知道每一个请假申请在审批流程中经过了那些流程;也可以知道哪些请假申请已经审批完成了,哪些请假申请还没被审批完成;
notice消息通知表:
(1)时间说明如下:(2021-06-08补)
今天的文章在oa上请假怎么走流程_请假书面申请怎么写分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/68558.html