文/房正华 房正鹏
当前社会上的各行各业在管理方面存在一个共同的问题:大量的办公、业务电子文档堆积分散。据调查,当前的企业中结构化数据只占企业数据量的15%,而音频、多媒体音像、工程图、会议纪要、扫描文件、演示文稿、Word文档、邮件报表等占到企业数据量的85%,而且每年以200%的速度增长,而非结构化数据的特点就是共享、查询困难,难于管理。若采用邮件或纸质文件传递信息安全性差,各类共享服务器也不能满足安全、协作要求,也导致很多客服部门在培训时出现各类困难甚至是错误,以往的经验难以积累、传承,特别是文档管理如果没有权限的概念,会在当前频繁的人员流动时带来技术流失。
为了建成规范化、集中管理的资料知识库,保护公司内部信息,避免技术流失,也同时加强项目协作,提高管理效率,推动核心技术和研发经验在新老员工间的传递,特开发本系统,本系统具有各类企业的普适性。
要实现文档的标准化结构,以方便文档的积累和共享,并实现文档的多种捕获方式,方便用户使用,包括Web界面上载、云盘上载、Office在线编辑、批量上载、OA等系统,可以实现跨浏览器、iOS/Android移动端系统、云盘等的多种访问方式。
为保障文档系统的安全及流转的方便,设置权限体系,包含授权对象的设定、权限级别及内涵的设定及授权成员。授权对象可以设定不同层次,包含文件、文件夹、文件柜及权限的继承问题等。授权对象包括角色、用户、部门、工作组等。
图1:系统整体架构图
文档的生命周期管理包括文档的创建、修订、审批、发布、归档的全生命周期,促进协作。文档的在线编辑过程也要留下批注痕迹,以及后续的文档版本的自动管理,还可以进行文件的审批,包括审批流程的编辑。
文档的存储仅仅是一种管理方式,要让静止的文件发挥作用,更重要的功能体现在知识管理中。该系统应该提供多种快速检索文档方式,让企业知识得到充分利用;并提供报表功能,为企业提供决策支持。具体包括文档的搜索、索引卡、元数据功能、文档的分类、文档编号、文档订阅及引用和统计报告等。
文档的安全对一个企业至关重要,有可能决定企业的成败,是企业的生命线。因此构建文档的安全管理体系至关重要。权限管理是实现文档安全管理的一种重要手段,此外包括CRUL安全链接、文档播放器、访问日志、数据备份、SSL传输加密、PDF格式管理等。
根据以上的需求分析,进行系统整体架构设计,具体如图1所示。
系统从底向下共分为四层,包括数据访问层、服务层、接入层、展示层。其中数据访问层分为传统数据库、Redis和ElasticSearch三类。传统数据库采用主从数据库架构设计。Redis用于缓存数据库提高数据查询效率。ElasticSearch提供检索服务。
服务端包括底层基础服务模块、用户服务模块、文档服务模块及权限管理服务模块。
接入层分为2类:对于系统内部的接口,为提高接口调用速度及效率,采用RPC接口方式,对于对外的用户端接口,采用标准的Restful风格接口,也方便实现前后端分离的开发模式。
展示层为丰富文档的获取方式,也方便用户使用,提供基于PC浏览器端、HTML5的移动端、客户端及WX等多种方式。
此外为实现系统的各参数配置和人员设定等功能,设置后台管理模块。
表1
图2:系统首页
图3:知识共享及权限界面
系统采用开放的技术标准进行实现,其中前端使用框架包括Jquery,BootStrap,Layer,客户端框架包括Node.js,Electron,Polymer等,后台开发使用基于Java语言的Spring框架,底层数据库采用MySQL数据库
中间件使用Tomcat作为Web应用服务器,Ngninx作为代理访问服务器,Redis作为缓存服务器,ElasticSearch提供索引服务。
内存数据库Redis具有速度快的优势,同时也支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用,因此本系统通过使用Spring AOP + Redis相结合构建切面缓存,提高查询的速度和效率。具体实现方法如下:
实现查询服务时,首先在Redis中进行查找,如果没有找到,则连接底层数据库进行查询,并将查询结果序列化后缓存到Redis中,以便下次可以直接从Redis中查询到。Redis查询采用的是Key-Value方式,为了保证数据查询时数据的唯一性,主要通过MethodAndParaKeyGenerator生成缓存key。生成器根据salt的值与service方法名和方法参数toJson进行拼接然后利用sha算法进行签名,可以减少缓存key的长度,同时保证生成key的唯一性。同时通过在对应service方法上添加注解,通过AOP在该方法切面上添加缓存逻辑。在使用时如果key生成器生成的key与此相同,则在Redis中可以查到数据,反序列化后直接返回,不再查库降低数据库压力,提供查询速度。
文档高并发转换会对服务器的线程造成极大压力,使用Hystrix中间件可以解决此问题。
在文档管理系统中,有许多依赖(Dubbo、Netty等)。在大量用户同时并发访问的情况下,依赖的稳定性与否对系统的影响非常大,但是依赖有很多不可控问题:如网络连接缓慢,资源繁忙,暂时不可用,服务脱机等。此时必须采取隔离措施,避免失败的依赖拖垮整个应用。Hystrix提供了容灾,隔离,降级机制能够有效的处理雪崩效应,解决以上问题。它采用的原理是为每个服务提供线程池,可以设定线程池中线程数量。每个依赖服务都被隔离开来,Hystrix会严格控制其在延迟发生时对资源的占用,并在任何失效发生时,执行失败回退逻辑。
在4核1G内存下,由原文格式转换位pdf格式的总耗时和错误率的具体测试参考数据如表1所示。
现以某高校文档管理系统为例,展示该文档系统的效果。
该系统在高校落地为文档管理系统,充当云盘和课程平台的角色,教师可以实现课程的共同备课,打造课程库资源,同时构建学生角色,学生可以在上课之前可以查看教师提供的各类资源,包括文档、视频、试题等,也可以充当学生作业提交平台。作为学校管理人员,可以充当人事管理系统,打通整个学校的文档管理应用生态资源。如图2为进入系统后的页面,当前角色为组织管理员。图3为知识共享模块,包括文档的操作权限展示。
本文重点介绍了文档云管理系统的开发过程,在教学单位的应用也取得了很大的应用效果,在其他行业的应用的取得了不错的效果,在后台的管理设置方面使用的方便性还有待解决,包括组织管理员等概念需对系统使用者进行二次培训。