本篇博客的主要内容是:对OA系统的总结&归纳;

系统总结

OA 组织架构功能 oa组织架构是什么_ajax

目录

一:前期准备

二:正式开发

1.数据库设计:RBAC(基于角色的访问控制)的数据库设计

2.系统登录部分:即先从【登录页】进入到【系统默认首页】(说白了,就是先进去再说~~)

3.【请假申请、请假审批、通知公告】:即具体功能部分

(1)这种线型工作流程的数据库设计

(2)请假申请业务逻辑

(3)请假审批业务逻辑

(4)通知公告业务逻辑

4.完整的结构图

三:个人总结


本系统的总结:

一:前期准备

1.在开发一个系统前,必须要有十分严格和明确的需求说明书;即,开发前,一定要搞清楚需求。

2.开发前,要明确,采用什么技术栈。

OA 组织架构功能 oa组织架构是什么_ajax_02

3.准备一个数据库,即创建一个逻辑空间。 

4.创建一个maven工程(即,使用maven管理本项目的各种依赖);并且,将工程设置为web工程;同时,在IDE中设置Tomcat;

5.引入Mybatis:在maven的pom.xml中,引入mybatis依赖(要知道,mybatis也是相当于一个第三方jar包的感觉);创建mybatis-config.xml文件,配置Mybatis;创建MyBatisUtils工具类,这个工具类就是去解析和应用mybatis-config.xml文件的;(MyBatisUtils工具类中的executeQuery()方法和executeUpdate()方法,使用到了Lambda表达式;因为,executeQuery()方法和executeUpdate()方法只是定义了一个范本,具体的实现需要在调用这些方法的时候再编写,所以这儿使用了Lambda表达式)

6.Mybatis整合Druid连接池:通过maven,在pom.xml中引入Druid依赖;创建Druid和Mybatis兼容所需的数据源工厂类:DruidDataSourceFactory类,并在mybatis-config.xml中设置一下;

 7.引入FreeMarker:因为,本项目前端的模板引擎我们使用的是FreeMarker(没有使用JSP);引入FreeMarker的依赖;在web.xml中配置FreemarkerServlet(要想使freemarker在web项目中起作用,需要对freemarker.jar中的FreemarkerServlet的这个Servlet类进行配置啦);

8.引入Servlet:在pom.xml中引入Servlet依赖,并且该依赖的设置为provided(为web容器(比如Tomcat)本身就是一个Servlet容器,其自带了Servlet-apr.jar。所以,我们这儿引入的Servlet依赖只需要在程序编译的时候用到,并不需要将这个Servlet依赖发布到最终的运行环境中,因为Tomcat已经自带了。) ;

9.需要设置IDEA发布中包括maven的jar包,因为工程中引入的jar包大部分也是需要被包含在工程发布中的;(然后,以后项目中每引入一个依赖,并且该jar需要随工程发布的时候,都需要设置一下)

 10.在pom.xml中引入logback日志依赖,并创建logback.xml设置一下;


二:正式开发

1.数据库设计:RBAC(基于角色的访问控制)的数据库设计

RBAC(基于角色的访问控制)介绍与核心表。

这儿着重重复说明以下几点:

(1)在【RBAC(基于角色的访问控制)】中,sys_role角色表示最核心的表

OA 组织架构功能 oa组织架构是什么_ajax_03

(2)资源相关的表,是周围的表;以为sys_node功能表为例;主要感受资源表和核心表的关系

OA 组织架构功能 oa组织架构是什么_数据_04

(3)role核心角色表,资源表,角色资源关联表,这三类表是基础;是其他一切业务的基础,也是【其他和具体业务有关的表】的基础。

2.系统登录部分:即先从【登录页】进入到【系统默认首页】(说白了,就是先进去再说~~)

本部分的主要内容就是登录,核心功能就是 从【登录页】进入到【系统默认首页】;并且根据登录用户,初始化【系统默认首页】。

OA 组织架构功能 oa组织架构是什么_数据库设计_05

上面登录部分,已经形成了一个闭环,然后接下来的部分就是具体的登录后的东西了,即【请假申请】,【请假审批】,【通知公告】的功能了。

PS:

(1)登录部分,密码使用到了MD5加密;

(2)前端部分,借助了layui这一前端框架;

(3)对于那些,【可能操作成功,也可能操作失败的地方】,后台在返给前台的JSON数据中,操作成功和失败其一般会返回不同的数据,以方便前台知道后台是否处理成功:

OA 组织架构功能 oa组织架构是什么_数据库设计_06

3.【请假申请、请假审批、通知公告】:即具体功能部分

【系统登录部分】已经完成了“进入系统的任务”;接下来就是具体的功能了。

(1)这种线型工作流程的数据库设计

即,为了实现【请假申请、请假审批、通知公告】,底层需要设计几个数据表来支撑这个业务。

【针对特定业务,设计数据库的能力,不是一朝一夕就能OK的,需要慢慢积累,慢慢提升】 。

● 单表(这儿的单是请假单;在其他业务中,还可能是其他种类的单;但是,总之一个单数据就代表一个【正在走流程的】东西);

OA 组织架构功能 oa组织架构是什么_ajax_07

● 流程表(这个是上面【单表中某条数据】应该走的流程数据)

OA 组织架构功能 oa组织架构是什么_OA 组织架构功能_08

● 消息表(这个表纯粹是锦上添花的表了)

OA 组织架构功能 oa组织架构是什么_OA 组织架构功能_09

表的一个实例:

OA 组织架构功能 oa组织架构是什么_数据_10

(2)请假申请业务逻辑

本部分的主要内容就是,【用户填写请假信息,提交,然后就会在LeaveForm请假单表、ProcessFlow审批任务流程表、Notice消息通知表三张表中插入对应的信息】

OA 组织架构功能 oa组织架构是什么_数据库设计_11

PS:

(1)前端部分,借助了layui;

(2)在EmployeeDao中使用到了@Param()参数设置的方式;

(3)ForwardServlet:一个专门的页面跳转Servlet,注意这种设计思路;

(4)自定义异常;

(5)对于那些,【可能操作成功,也可能操作失败的地方】,后台在返给前台的JSON数据中,操作成功和失败其一般会返回不同的数据,以方便前台知道后台是否处理成功:

OA 组织架构功能 oa组织架构是什么_OA 组织架构功能_12

(3)请假审批业务逻辑

OA 组织架构功能 oa组织架构是什么_ajax_13

PS:

(1)前端部分,借助了layui;尤其是,layui数据表格的要求;

(2)对于那些,【可能操作成功,也可能操作失败的地方】,后台在返给前台的JSON数据中,操作成功和失败其一般会返回不同的数据,以方便前台知道后台是否处理成功:

OA 组织架构功能 oa组织架构是什么_数据库设计_14

(3) 自定义异常;这个自定义异常,就相当于是自己定义的一个警报器;可以帮助我们处理不同的不OK的情况。

OA 组织架构功能 oa组织架构是什么_数据库设计_15

OA 组织架构功能 oa组织架构是什么_数据_16

(4)通知公告业务逻辑

OA 组织架构功能 oa组织架构是什么_数据库设计_17

PS:

(1)通知公告的生成,在两个时机:【当某个请假被提交后】,【某个请假申请在某个流程被审批后】;这两个操作后,会在notice表中,生成对应的通知公告;

(2)然后,具体到【通知公告】部分的时候,直接从数据库中获取属于当前登录用户的通知公告就OK了;

4.完整的结构图

其中,浅绿色框体内就是登录部分;然后,ajax请求的用粉红色字体标识了出来;(最后再强调一下,是否使用ajax,只和前台的显示要求有关,如果前台要求是局部刷新就使用ajax请求;;;而这个局部刷新,情况就比较比复杂了,具体还需要慢慢加深理解

OA 组织架构功能 oa组织架构是什么_数据_18


三:个人总结

1.【数据】比【程序】重要!!!

2.【程序的结构和思路】比【具体的编码实现】重要!!!

3.每写完一个Dao(或者是一个Service),及时的单元测试,非常重要!!!能保证一步一个脚印,也方便在小范围内查找bug;

4.尽早的熟悉(不要求完全掌握,尽量熟悉)一款成熟的前端框架(angular,react这些),比较重要,能提升后台开发的效率,方便前后端联调;(因为layui在实际中,貌似使用的并不是很多~~)

5. 数据库的设计能力,不是一朝能提升的,需要慢慢加强;本案例包括【RBAC(基于角色的访问控制)的数据库设计】;【工作流程的数据库设计】;这些,都是很重要的。

6.通过这个案例发现,是否使用ajax,只和前台的显示要求有关,如果前台要求是局部刷新就使用ajax请求;;;而这个局部刷新,情况就比较比复杂了,具体还需要慢慢加深理解;自然即使使用了ajax请求,也可以实现页面的跳转(后台可以给前台返回一个url,然后前台直接跳转到这个url,这可以实现页面的完全跳转。像OA系统的登录请求,请假提交请求,请假审批提交请求都是如此)【前台需要向后台提交数据,后台获取这些数据,并且会调用逻辑去处理,然后再向前台返回处理结果的情况:一般使用ajax请求】;【前台单纯从后台查询数据,以在前台显示的(比如获取数据,在前台显示在表格中)的情况:一般没有使用ajax请求】;自然,使用ajax请求与否,还要和具体前台页面是否变化有关;(因为ajax请求最重要的目的就是局部加载嘛);

7.新引入的jar包,如果需要,要及时的添加到发布目录中; 

8. 自定义异常,作为一种【自己定义的警报器】还是很给力的;

9. 用户的密码使用到了MD5数据加密;

10.(20210702)框架只是一个工具,java的基础知识才是根本;前端框架同理,HTML,CSS,JavaScript才是根本!!!  

随时增添…