读书人

关于OA系统的1点感想

发布时间: 2012-09-18 16:21:42 作者: rapoo

关于OA系统的一点感想
之前做了一个内部办公的系统,现在在维护阶段,想对其中比较有共性的问题做个小结,总的来说共有4类问题。

1.权限管理
OA系统是自动化办公,办公室里自然有不同职位区分,不同职位也就有不同职责,权限应该是里面最基本的功能,权限常规的设计是用户,角色和功能,其中用户和角色是多对多的关系,角色和功能是多对多的关系,一个例子通俗地讲就是小丽(用户)是HR(角色),所以可以查看简历(功能),其中比较值得考虑的问题是权限的细粒度,如果页面的设计如下

是控制到左侧菜单级别,还是控制到右面的按钮级别,如果控制到菜单级别,细粒度要到控制增,删,改,查,肯定会造成菜单过多的情况,就会出现如简历查询菜单,简历修改菜单,控制到右面的按钮级别是比较好的,菜单和按钮从粗略的角度来看都是功能,但又有所不同,所以不应该由同一个类来表示,权限的UML类关系如下图

2.Excel数据处理
办公最常用的当然就是Office,系统自然要对Office文件进行处理,PPT和Word都是从文件上传下载的角度来考虑,处理相对容易,Excel往往被看作表数据来体现,上面往往会有业务逻辑的体现,所以需要将excel作为数据来源导入系统,在此基础上处理业务逻辑,我们选择了Apache POI组件来处理Excel,仍然需要写很多代码来处理类型转换,不规则表格等等,说几个比较典型的问题,首先,最大的问题是Excel批量新增或修改数据的方式,对于业务逻辑的验证低效且麻烦,如在导入公司年检Excel的业务时前提是该公司的信息已经存在,毫无疑问只能每条数据加以验证,十分低效,这还是比较简单情况,让我们站在用户角度看,为什么大都不喜欢在Web里面直接编辑数据(这样对Coder来说验证数据的业务逻辑将会比较高效),那是因为Web操作表数据的功能和Excel功能比起来太弱了,所以都喜欢线下通过Excel来维护数据,导入系统同步数据,其次,Excel导入修改,如果Excel表中某一字段可以作为主键,处理起来就比较容易了,如果Excel表中没有字段可以作为主键,那就是系统生成的主键,Web里可以展现系统生成的主键,导入修改时就在Excel表中填写标识,Web里不能展现系统生成的主键,那就在Web上选择需要修改的数据导出,导入Excel里就会有标识,然后再导入修改,处理Excel数据最好的方法就是不要用Excel,都在Web里操作吧(如果你能说服用户),还有一种就是去买Google Doc这样的Web Office套件(那还要我们干啥,还是回到Excel处理吧)。

3.工作流
业务流程在OA系统里司空见惯,需要引入一些工作流引擎来支持业务的开发,研究了下一些开源的工作流引擎,osworkflow好长一段时间没有更新了,jBPM很复杂,学习曲线比较大,发现Activiti这开源框架,BPMN2流程引擎,和Spring集成很方便,这个开源框架比较新,幕后团队阵容很有实力,其中也有jBPM的开发者。

4.文件管理
这是一个简单,但是又可以很复杂的命题,不过目前的系统实现了比较简单的文件管理,也是比较常见的功能,如同在Web里通过HTTP做了一个FTP客户端,管理文件夹和文件,操作界面如下图

读书人网 >软件架构设计

热点推荐