OA系统核心业务逻辑审批流程数据库是如何设计的
office automation翻译成中文就是:办公自动化。所以常说的OA系统就是办公自动化系统。审批流程是OA系统应用的核心。大的划分为:财务类、人事管理类、行政事务类、业务相关类、客户管理类以及其它。上图是钉钉OA审批管理后台,大家接触比较多的是人事流程。大部分审批流程创建如下图:分析:上图前端这种效果可以让js来实现。业务流程上首先得有个提交人(或者叫发起人),接下来有四个选择:审批人、
·
office automation翻译成中文就是:办公自动化。所以常说的OA系统就是办公自动化系统。审批流程是OA系统应用的核心。大的划分为:财务类、人事管理类、行政事务类、业务相关类、客户管理类以及其它。
上图是钉钉OA审批管理后台,大家接触比较多的是人事流程。
大部分审批流程创建如下图:
分析:
上图前端这种效果可以让js来实现。业务流程上首先得有个提交人(或者叫发起人),接下来有四个选择:审批人、抄送人、办理人、条件分支。这里选择了两个审批人,分别定义为一级审批人、二级审批人。最终把这种数据结构传递给后端,存到数据库。
分析:
上图是用活动图来表示审批流程。
CREATE TABLE `leave_application` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
`employee_id` bigint(20) unsigned NOT NULL COMMENT '员工主键',
`type` tinyint(3) unsigned NOT NULL DEFAULT '1' COMMENT '请假类型:1-事假,2-调休,3-病假,4-年假',
`start_time` int(10) unsigned NOT NULL COMMENT '开始时间',
`end_time` int(10) unsigned NOT NULL COMMENT '结束时间',
`duration` int(10) unsigned NOT NULL COMMENT '时长',
`reason` varchar(255) NOT NULL COMMENT '请假事由',
`create_time` int(10) unsigned NOT NULL COMMENT '创建时间',
`status` tinyint(3) unsigned NOT NULL COMMENT '1-正在审批,2-审批已通过,3-审批被驳回',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='请假申请表';
CREATE TABLE `leave_approve` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
`leave_application_id` bigint(20) unsigned NOT NULL COMMENT '请假申请表主键',
`operator_id` bigint(20) unsigned NOT NULL COMMENT '经办人主键',
`action` tinyint(3) unsigned NOT NULL COMMENT '1-审批人,2-抄送人',
`result` tinyint(3) unsigned NOT NULL COMMENT '1-同意,2-驳回',
`reason` varchar(255) DEFAULT NULL COMMENT '审批意见',
`approve_order` tinyint(3) unsigned NOT NULL COMMENT '审批顺序',
`is_last` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT '是否为最后节点:1-是,0否',
`status` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT '0-准备,1-正在处理,2-处理完成,3-取消',
`create_time` int(10) unsigned NOT NULL COMMENT '创建时间',
`update_time` int(10) unsigned DEFAULT NULL COMMENT '审批时间',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='请假审批表';
CREATE TABLE `leave_notice` (
`id` bigint(20) unsigned NOT NULL COMMENT '主键',
`receiver_id` bigint(20) unsigned NOT NULL COMMENT '通知接收人',
`content` varchar(255) NOT NULL COMMENT '消息内容',
`create_time` int(10) unsigned NOT NULL COMMENT '创建时间',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='请假审批通知表';
分析:
请假申请表和请假审批表的业务是一个事务,请假审批通知表则在事务成功后提示申请人已提交。并把请假审批表里业务做成任务监听。OA系统审批流程业务逻辑差不多是这样子,再结合各自项目在这个基础上进行个性化完善。
更多推荐
已为社区贡献1条内容
所有评论(0)