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系统审批流程业务逻辑差不多是这样子,再结合各自项目在这个基础上进行个性化完善。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐