lemon OA 下阶段工作安排
经验总结
lemon OA系统作为一个中型的java web系统,在架构上还是有着很好地可学习的地方。但是由于经验不足,过程比较迂回。如果真的有经验的话,应该可以做到如下几点吧,
技术基础的问题
java WEB
的mvc框架
就那么几个,orm层
就那么几个。所以涉及HTTP服务
的技术点以后应该越来越只是一个基础了。但是这些基础十分重要。拿lemon OA来说,它应用了Spring MVC
,hibernate
。项目通过MAVEN
的pom文档来管理,这个花了一些时间来学习。系统是用slf4j做日志系统的,我在后期通过slf4j
来调试流程管理模块的listener功能,还是比较好的。在调试activiti
的流程管理模块时,通过在IDE编译器里设断点来做,比较不现实:一、代码封装在jar文件中;二、代码的逻辑不清楚,因为引擎的代码有一些应该是算法相关,而不是简单的crud功能,所以不好看。在这个时候,通过将mysql的日志功能
打开,查看流程引擎运转过程中,所产生的多条query语句。反而是Spring Security
这个逻辑十分清楚的权限控制组件,花了较多时间来理解和消化。其实,真的没有必要,权限管理这种功能实现方法“自古以来”的实现方式就那么几种。真的没有必要花那么多时间来看。
业务方面的问题
业务的问题,主要就是数据库的建模问题
。基于关系型数据库,设计实体,设计实体之间的关联是比较考验经验的活儿。
1.账号机制+组织机构+权限控制
这一块的东西,数据库的设计一直是比较稳定的。可能实现的机制有所不同,尤其java这块的框架一直有所变动
。但是核心的数据流模型是比较稳定的
。
2.前后台的逻辑划分
前台和后台的编程思维是不一样的,不同语言的编程思维也是不一样的。前台要想做得好,主要是两点:(1)GUI编程,界面效果,事件绑定;(2)数据管理,这点和后台没有本质区别。而后台编程,就是在考虑操作数据库,操作数据库。为了能够更好地操作数据库,我们要依赖服务器,框架各种各样神奇的工具和功能。多掌握一种工具,并且是市场上的通用工具是十分有优势的。