最近带领两个实习生一起开发公司OA系统,其中对流程审批这一块的开发感触还挺大的。下面来说说流程审批。

流程审批无非就是你提交申请之后,就会有第一个负责人去审批,第一个负责人审批通过之后,就再由第二个负责人审批,再之后就由第三个负责人去审批.....。现在是怎么去找第一个负责人,第一个负责人审批通过之后怎么去找到第二个负责人。然后我们这时候可以想到链,节点就是审批负责人,然后每个节点由指针连在一起,要是我知道第一个负责人指向第二个负责人的指针,那我就可以由第一个负责人找到第二个负责人了,指针可以设计为第一负责人的节点的后指针数是第二负责人的节点的编号,第二负责人的后节点指针是第三个负责人的节点编号,然后节点指向就是一条线,把各个节点连起来了。所以我们下面来看看表设计。

流程表flow:

流程表就是对各个流程进行分类吧,比如有请假流程、出差流程、报销流程等。表字段分别有:

num就是每个流程对应的号。

节点表flow_node:

节点表就是审批人信息,如第一个审批人,第二个审批人等。表设计如下:

这里的flow_num对应流程表的num,node_role对应审批人的id。

节点线表flow_fine:

节点线表就是把各个节点连接起来,就是指明该节点的前一个节点是哪个,后一个节点是哪个就可以连接了,然后就可以根据各个节点找到前一个或是后一个节点。表设计如下:

这里的flow_num和节点表的flow_num、流程表的num对应;next_node_no、pre_node_no就是后节点号和前节点号,对应节点表的node_no。

然后现在我来个请假的申请,首先得有请假申请表oa_leave:

其中current_node对应节点表的node_no,flow_num对应节点表的flow_num,state就是流程状态,有审批中,审批结束,audit_state是审批状态,有审批通过,审批不通过。

最后就是审批表oa_audit

其中employee_id是审批人的id,employee_name审批人的姓名,num对应各申请表的id。

下来来看看逻辑。

现在提交一个请假申请表。

这时候是save一个请假申请表,然后还设置当前节点current_node,就是flow_node表的node_no,,对应第一个审批人,设置state为1,状态为审批中,flow_num设置为A07,对应请假申请。

所以现在的请假申请表是:

setFlowNum("A07");
           setState(1); // 审批状态
            flowNode = flowNodeRepository.findByflowNumOrderByNodeNoAsc("A07");
            flowLine = flowLineRepository.findByflowNumAndNextNodeNo("A07"), flowNode.getNodeNo());
            setCurrentNode(flowLine.getNextNodeNo()); // 一级审批节点

因为现在的current_node是1,state是1,意思就是当前审批节点是1,然后状态是审批中,然后flow_num是A07,所以根据flow_num和current_node可以在流程节点表中找到该审批节点了,之后可以得出审批人node_role,所以判断登录人是等于node_role就可以得出该职工是否是审批人了。

然后是进行审批,当一级审批人审批通过时,就设置current_node为该审批节点的下一个审批节点。然后请假表就变成:

flowLine = flowLineRepository.findByflowNumAndPreNodeNo(leave.getFlowNum(),  leave.getCurrentNode());

setCurrentNode(flowLine.getNextNodeNo());

然后审批表的数据有:

当审批不通过时,就设置current_node为0啦,不对应任何审批节点,然后申请状态是结束状态。

setCurrentNode(0);
                  setState(2);

所以这就是审批流程,最主要的是表设计好,流程表,节点表,流程线表。节点表是相当于审批人信息,流程线表相当于审批人相互连起来便于找到下一个审批人。

OA系统请假,出差等流程审批解析相关推荐

  1. 云尚办公OA系统学习笔记(6.审批设置-管理端)

    目录 一.审批设置需求 1.需求描述 2.页面效果 2.1 管理端 2.2 员工端 3.数据库表设计 二.Activiti入门 1.了解工作流 1 什么是工作流 2 工作流引擎 3 常见工作流引擎 4 ...

  2. OA系统之:全流程驱动的会议管理

    Colloa协同会议管理系统将通过信息化手段来管理会议的全过程,通过端到端模式来贯通会议计划.议题提报与准备.会议通知.会中汇报.会后督察等各个环节,通过电脑.手机App或微信等方式实现自动化的通知提 ...

  3. 审批流程java 代码_基于jsp的企业流程审批系统-JavaEE实现企业流程审批系统 - java项目源码...

    基于jsp+servlet+pojo+mysql实现一个javaee/javaweb的企业流程审批系统, 该项目可用各类java课程设计大作业中, 企业流程审批系统的系统架构分为前后台两部分, 最终实 ...

  4. OA系统门户是什么?全面解析信息门户的类别、难点和关键点

    1.信息门户的定义 什么是门户?从传媒(类似网易.搜狐等)的角度来讲,门户是一个信息分类聚合之后的展现容器.形式,而在信息爆炸时代,门户作为一个入口的价值则是让用户在第一时间获取到他所关心以及能对他的 ...

  5. OA系统常见的审批流程

    审批流程是OA系统应用的核心,有的企业每天要在OA系统上流转上百个流程,这些流程涉及几百名审批人员,保证他们审批操作的正确性,对他们的操作权限进行合理的规范,就成为了保证流程顺畅运行的重要工作.本篇将 ...

  6. 如何在OA系统中设定审批流程(一)固定流程

    在OA系统中,我们公司很多事情的审批流程都是固定的,并且不允许随意更改,能不能让每个人在发起申请的时候自动调用这个流程呢?制定好的入职手续老是不能严格地执行,技术人员都工作一周了人事部门才得到信息,怎 ...

  7. 如何玩转OA系统业务审批流程

    首先我们来谈一下什么是OA系统,从百度上查询的概念如下: OA英文名为Office Automation,简称OA,它是将现代化办公和计算机网络功能结合起来的一种新型的办公方式.基于工作流概念,使企业 ...

  8. python开源报表系统_流程设计器、表单设计器和简单报表管理开源OA系统smart-web...

    smart-web2是一套相对简单的OA系统:包含了流程设计器,表单设计器,权限管理,简单报表管理等功能: 系统后端基于SpringMVC+Spring+Hibernate框架,前端页面采用JQuer ...

  9. OA系统是什么意思?企业为什么要用OA办公系统软件?

    阅读本文您将了解:1.什么是OA:2.OA系统是什么意思:2.OA系统功能和对企业重要性 什么是OA? OA即办公自动化(Office Automation,简称OA),是将计算机.通信等现代化技术运 ...

最新文章

  1. 图挖掘与多关系学习:工具与应用,亚马逊与CMU-WWW2021教程(附ppt)
  2. ACM-ICPC如何起步
  3. .WM_CTLCOLOR和OnCtlColor消息的用法
  4. 如何退出Activity?如何安全退出已调用多个Activity的Application?
  5. 问题集锦(56-57)
  6. [WPF]WPF开发方法论
  7. sql 注射_只能在测试中注射吗?
  8. hide show vue 动画_Vue2.x学习四:过渡动画
  9. pandas之Series
  10. SQL server挂了之后
  11. 精通Hyperledger之Hyperledger composer查询语言(17)
  12. FusionCharts破解方法
  13. systemd (简体中文)
  14. 打印控件的 frame
  15. 重磅:使用UOS微信桌面版协议登录,wechaty免费版web协议重放荣光
  16. C/C++遍历文件夹指定文件
  17. 软件配置管理与 SourceSafe 使用指南
  18. 网站banner设计有什么好的方法
  19. Linux进程池、线程池调研
  20. 人工智能、机器学习和深度学习的关系

热门文章

  1. 图解 Paxos 一致性协议
  2. 追源索骥:透过源码看懂Flink核心框架的执行流程--来自GitHub
  3. 网站出现iconfont not fount 404错误
  4. mybatis,引入pageHelper,参数中有pageNum和pageSize,且都不为空,会分页
  5. VS中使用Qt方法详解
  6. C++中的swap函数
  7. 字节流与字符流(一)
  8. 单片机原理及应用-基于Proteus和Keil C(第四版)知识点总结
  9. 极限中0除以常数_基本不等式中常用公式百度作业帮
  10. 2022第四届长安杯复盘(WP)