OA系统核心业务逻辑审批流程数据库是如何设计的

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

  • 7
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
根据提供的引用内容,OA系统流程审批数据库设计是所有OA系统流程的基础,它包含了大部分自定义的流程。具体的数据库设计需要根据具体的业务需求进行设计,但是一般来说,OA系统流程审批数据库设计需要包含以下几个方面的内容: 1. 流程定义表:用于存储流程的基本信息,如流程名称、流程编号、流程类型等。 2. 流程步骤表:用于存储流程的步骤信息,如步骤名称、步骤编号、步骤类型等。 3. 流程步骤处理表:用于存储流程步骤的处理信息,如处理人、处理时间、处理结果等。 4. 流程附件表:用于存储流程相关的附件信息。 5. 流程日志表:用于存储流程的操作日志信息,如操作人、操作时间、操作内容等。 6. 流程权限表:用于存储流程相关的权限信息,如流程创建人、流程处理人、流程查看人等。 下面是一个简单的OA系统流程审批数据库设计的示例: ```sql -- 流程定义表 CREATE TABLE process_definition ( id INT PRIMARY KEY, name VARCHAR(50), code VARCHAR(50), type VARCHAR(50) ); -- 流程步骤表 CREATE TABLE process_step ( id INT PRIMARY KEY, name VARCHAR(50), code VARCHAR(50), type VARCHAR(50), process_id INT, FOREIGN KEY (process_id) REFERENCES process_definition(id) ); -- 流程步骤处理表 CREATE TABLE process_step_handler ( id INT PRIMARY KEY, step_id INT, handler VARCHAR(50), handle_time DATETIME, handle_result VARCHAR(50), FOREIGN KEY (step_id) REFERENCES process_step(id) ); -- 流程附件表 CREATE TABLE process_attachment ( id INT PRIMARY KEY, name VARCHAR(50), path VARCHAR(100), process_id INT, FOREIGN KEY (process_id) REFERENCES process_definition(id) ); -- 流程日志表 CREATE TABLE process_log ( id INT PRIMARY KEY, operator VARCHAR(50), operate_time DATETIME, operate_content VARCHAR(100), process_id INT, FOREIGN KEY (process_id) REFERENCES process_definition(id) ); -- 流程权限表 CREATE TABLE process_permission ( id INT PRIMARY KEY, process_id INT, creator VARCHAR(50), handler VARCHAR(50), viewer VARCHAR(50), FOREIGN KEY (process_id) REFERENCES process_definition(id) ); ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员buddha

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值