周志成,柳纲,杨宇峰,龚广京
(1.南瑞集团(国网电力科学研究院)有限公司,江苏 南京 210006;2.国电南瑞科技股份有限公司,江苏 南京 210006)
随着计算机的普及和信息化技术的发展,纸质文档资料已经基本被电子化替代。随着企业规模扩大和正规化发展,企业内部文档内容日益丰富、数量日益增多,但依然存在如下问题:首先,数量巨大的各类文档分布在各个计算机中,众多文件无法在企业内部共享[1];其次,在众多文件中检索特定文件费时费力;另外文件线下拷贝分发极其不便[1,2]。由于实现文件的在线管理迫在眉睫,而商用网络硬盘等文件管理系统又涉及安全问题,企业文档尤其是涉密资料不适合在这些系统上存储,因此该项研究基于企业内部网络部署设计了一个安全在线文档管理系统并进行了软件实现。该系统基于B/S(浏览器/服务器)模式,采用Spring MVC分层架构,实现了目录及文件的上传、下载、复制、移动、删除、重命名以及文件夹整体上传和下载功能,并支持word、PPT、excel、PDF以及TXT等常见类型文档的在线预览功能。此外,该系统还支持按照条件或全文检索文件。
该系统设计的目的是为了解决企业内部文档的安全、便捷存储问题,因此系统应该满足安全性、高效性、可扩展性和简单易用的要求[3,4]。对各项要求分别阐述如下:
安全性:首先,该系统部署于企业内部局域网中,可有效避免来自互联网的网络攻击行为、降低敏感文档泄密的几率;其次,只有登录认证的用户才能使用该系统,只有经过相应授权的用户才能进行相应操作,从而保证了系统的安全性。
高效性:对系统业务流程进行合理设计,对业务逻辑进行必要优化,提高系统的可用性和流畅度。
可扩展性:系统使用B/S架构,具体分为展示层、业务层和持久化层。分层设计使得系统功能扩展或升级迭代变得容易。
简单易用:系统采用B/S架构,用户只需使用装有浏览器的计算机就可以使用该系统,无需额外安装软件,对客户端机器性能业务无苛刻要求,方便用户使用。此外,系统在设计上充分考虑用户操作习惯,接近商用网盘操作系统,努力做到简单易用。
就其功能而言,系统应满足文档管理的基本操作需求,并在此基础上提供部分高级功能。系统的功能框图如图1所示。
图1 企业在线文档管理系统功能框图
Spring MVC作为一款轻量级的企业应用开发框架,已在企业级应用开发中得到广泛应用[5]。Spring MVC框架以MVC作为设计模式,其核心思想是使业务逻辑、数据持久化和前端界面相分离,它可以让每一功能模块单独工作且可以对某一部分作出修改而对其它部分不产生影响,方便应用功能扩展和升级。使用Spring MVC框架可以提高开发效率,降低系统后期维护和应用迭代升级成本,因此该系统选择Spring MVC作为系统开发框架。
该系统选择开源的Tomcat作为web中间件,Tomcat完全开源,完美支持JSP、Servlet和JDBC等J2EE关键技术,已在大量中小型应用中得到广泛使用。因为oracle作为大型关系型数据库的代表,性能优势明细,并且拥有良好的技术支持,所以选择oracle作为数据库。此外,本系统中还使用了大量开源技术,将在后续章节中详述。
该系统将文件实体存储在文件服务器上,而将文件存储位置等信息存储在关系型数据库中,同时对文件操作做日志记录并持久化于数据库之中。用户可以根据需要建立相应的目录结构,进行上传、删除、移动文件等操作。为了防止文件服务器同一路径下同名文件覆盖,所有的目录或文件经特定算法转义处理后保存在文件服务器上,数据中同时保存原始名称和转义以后的名称,原始名称供页面显示时使用,转义后的名称用来寻找文件的真实路径和名称。
普通的文件上传、下载为常见功能,利用常规的文件流操作即可完成,此处不再赘述。
该系统提供文件夹整体上传的功能,保存至服务器的文档和上传的文档保持相同的目录结构。对于目录层次较多的文档,该操作对提高操作效率作用明显。文件夹整体上传的业务逻辑如下:
(1)将客户端需要上传的文件夹整体(包含其所有子文件夹及其包含的所有文件)保存至文件文件服务器的某个临时位置;
(2)依次遍历生成的临时文件夹,对遍历过程中的每一项:如果是文件,则将该文件名称转义后保存至文件服务器指定位置,并同时在数据库中增加相应记录;如果是文件夹,则在指定位置建立相应文件夹并同时在数据库中增加相应记录,此外还要递归调用方法,直至临时目录下所有文件或文件夹处理完成;
(3)删除临时文件夹及其包含的子文件夹和包含的所有文件;
(4)前端页面显示上传成功的提示信息。
如果需要同时下载多个文件,单个文件逐一下载的方式会造成使用不便,因此该系统设计实现了多文件或文件夹整体打包下载功能。只需同时勾选多个文件或文件夹,点击下载按钮,系统便会将选中的文件或文件夹打包并以压缩包的形式下载至客户端机器,所有文件会保持服务器上原有的目录层次。多文件打包下载的业务逻辑如图2所示。
图2 多文件下载业务流程
文件检索即根据一个或多个关键字快速定位到用户需要的特定文件。该系统中的目录可以根据用户需要而自由建立,文件名称也可以修改,因此可以使用文件路径的各级目录及文件名中的特征词作为关键字,从而检索到用户需要的文件。用户输入的特征词可以来自文件路径中一个目录或多个目录、文件名,或者是两者的组合,输入的特征词越多,检索的文件越精确。此外,当用户输入多个目录中的特征词时,不能限制用户一定按照目录层次由上到下的顺序输入。因此,如何根据用户输入条件快速定位到特定的文件需要精心设计一种算法。该系统中约定,当具有多个检索条件时,如果特征词仅来自文件路径中的目录或者文件名称,多个条件之间以单个空格间隔;如果多个检索条件为两者的组合,2类特征词内部以单个空格间隔,2类条件之间以双空格间隔,并且目录中的特征词在前(下文中称之为第1类特征条件),文件名称中的特征词(下文中称之为第2类特征条件)在后。文件检索的完整业务流程图如图3所示。
图3 文件检索业务流程
其中,第1类特征条件的检索算法流程如下:
(1)获取所有的目录allDirs,初始化集合dirs作为满足查询条件的目录集合,初始化计数器startIndex并置为1;
(2)查询满足第1个查询条件的目录,如果能查询到结果,将结果加入到集合dirs中,执行(3);如果没有查询到结果则执行(8);
(3)获取第startIndex+1个关键字keyword,遍历(2)中获取到的集合dirs,对其中的每个目录dir,获取其所有上级目录superDirs(包括其上级目录及其更上层的目录)和其所有下层目录subDirs(包含其子目录以及更下层的目录);
(4)遍历superDirs,如果superDirs中某一项包含关键字keyword,则停止遍历并将dir从dirs中移除;
(5)遍历subDirs,如果subDirs中某一项包含关键字keyword,则将其加入到dirs中;
(6)计数器startIndex++;
(7)如果所有检索关键已处理,执行(8);否则执行(3);
(8)查询出集合dirs中所包含的所有文件信息,序列化返回给前台展示。流程结束。
文本文件是一种常见的文件类型,该系统设计并实现了文本文件在线预览方案。该系统将文本文件分为普通文本文件和代码源码文件,普通文本文件就是除代码源码文件之外的其它文本文件。该系统中的文本文件阅读器基于CodeMirror开发。CodeMirror是一款开源的JavaScript插件[6],其功能十分强大并提供了详细的API,使用方便。该插件能较好地展示文本,并可以按照不同编程语言的语法规则,高亮显示代码源码。它几乎支持所有常见的编程语言,只需简单地将模式设置成对应的编程语言即可。该系统中普通文本文件和代码源码文件的在线预览效果如图4和图5所示。
图4 普通文本文件在线预览效果
图5 代码源码文件在线预览效果
PDF文件是另一种常见的文档格式,本系统支持PDF文件的在线预览。除IE系浏览器外,几乎所有的现代浏览器都支持PDF文件在线预览功能,但浏览器只能默认以新的tab页方式打开PDF文件,不利于系统集成,用户体验不佳。为兼容不同浏览器,提升客户使用体验,该系统集成PDF.js框架作为PDF文件浏览器。PDF.js可以实现在html下直接浏览PDF文档,是一款开源的PDF文档读取解析插件[7]。它的功能非常强大,能将PDF文件渲染成Canvas,浏览器兼容性较好。需要浏览某个文件,只需将文件名称以特定参数的形式附着于URL后面即可,使用方便。该系统中PDF文件的在线预览效果如图6所示:
图6 PDF文件在线预览效果
MS office文档是日常办公中使用频率最高的文档类型,该系统支持其中word、PPT和excel 3种类型文档的在线预览。设计方案是使用aspose工具包在服务器端将他们转换为系统能够解析的文档类型。具体来讲,将word和PPT类型的文档转换为PDF文件,将excel文件转换为HTML文件。详细的处理逻辑如图7所示。
图7 MS Office文档在线预览处理流程
当客户端退出文件预览页面时,后台将生成的临时文件销毁。需要注意的是:aspose是商用工具包[8,9],使用时需要获得商用许可。此外,后台文件转换过程消耗内存比较严重[10],为防止内存溢出,应对虚拟机参数做优化调整,系统实现时可供参考使用的参数如下:
-Xms1024M -Xmx1024M
-XX:PermSize=256M - XX:MaxPermSize=256M
为保证信息安全,该系统部署于企业内部局域网。采用3台服务器,分别为web服务器、文件服务器和数据库服务器,详细的网络拓扑结构如图8所示。
图8 文档管理系统网络拓扑结构
(1)设计了一套企业在线文档管理系统,对其中关键技术做了详细研究并进行了系统编码实现。
(2)经测试,覆盖需求分析中提出的功能需求,具有稳定、简单易用的特点,可以满足企业文档在线管理的需要。该系统已作为综合能源管控与服务系统的文件库管理子模块在生产中得到使用,且效果良好。