Computer Science and Application
Vol.05 No.01(2015), Article ID:14808,9 pages
10.12677/CSA.2015.51001

Design and Implementation of a University-wide Document Sharing System based on FlexPaper technique

Xiangyu Li, Yumeng Yang, Xiaoming Guo, Huazong Liu

Network and Information Center, Dalian University of Technology, Dalian Liaoning

Email: 32638345@qq.com

Received: Jan. 20th, 2015; accepted: Feb. 2nd, 2015; published: Feb. 9th, 2015

Copyright © 2015 by authors and Hans Publishers Inc.

This work is licensed under the Creative Commons Attribution International License (CC BY).

http://creativecommons.org/licenses/by/4.0/

ABSTRACT

Every year, Dalian University of Technology produces a huge amount of publicity material related to human resource management work, such as the professional title evaluation, promotion evaluation, competitive selection etc. Some of these publicity documents are restricted to read only, and no downloading is allowed, or different reading/downloading permissions are set to different documents. Considering designing a document sharing system corresponded with the actual needs of the university, it is important to guarantee both the security and the school-wide sharing mechanism of the publicity documents. Document Sharing System is based on the FlexPaper technical proposal. After converting Microsoft office files to pdf files, swf tools can be used to change pdf files to swf files, then these documents can be loaded on the university portal website using FlexPaper plugin which is reliable and widely used by many companies. The system architecture, based on the industry-leading Domain Driven Design approach, is divided into presentation layer, system application layer, application support layer, data source layer and basic platform layer. Business logic is concentrated in the domain layer and the cluster-based load balancing and cache make the system with high availability, high reliability and high performance.

Keywords:Online Document System, FlexPaper, Repository, Document Sharing System

基于FlexPaper的校内公示系统设计与实现

李降宇,杨雨濛,郭晓明,刘化总

大连理工大学网络与信息化中心,辽宁 大连

Email: 32638345@qq.com

收稿日期:2015年1月20日;录用日期:2015年2月2日;发布日期:2015年2月9日

摘 要

大连理工大学每年有大量的公示材料,涉及到职称评审、升职考核、竞聘材料等等,有些公示材料只能查看不允许下载,或者需要对公示材料设置查看和下载的权限。设计与实现符合大连理工大学需要的校内公示系统,既要保证教师公示材料的安全可靠,同时又要满足公示材料全校范围内的分享阅读。校内公示系统基于FlexPaper技术设计实现方案,将office文件等转换成pdf文件,再将pdf文件转换为swf文件,在校内门户页面使用FlexPaper插件播放公示文件,该技术方案成熟可靠并被广泛使用。系统架构设计采用业界领先的基于领域驱动的开发方式,分为表现层、系统应用层、应用支撑层、数据资源层及基础平台层,业务逻辑集中在领域层,系统采用我校统一的信息安全体系和标准规范,使系统具有高可用性、高可靠性及高性能。

关键词 :在线文档管理,FlexPaper,知识库,校内公示系统

1. 引言

目前我校的信息化建设,在文件的管理方面,由于缺乏统一规划,不能满足全校各部门对公示文件资源共享的需求,没有形成全校统一的信息化标准体系。为全校提供必要的公示文件共享平台,促进全校公示文件共享阅读,发挥公示系统在日常工作中的作用,分类别的实现信息共享,有利于增强全体教师对校内公示文件的知情权,提高高校管理透明的公众形象。

2. 系统需求

系统用户包括校内学生、教师、系统管理员等,通过校园门户为学生及教师提供查看、浏览校内公示文件、上传下载部分授权的公示文件、提供全文搜索等功能;管理员主要对系统用户权限的管理、文件目录管理、校内公示文件的管理、文件内容管理、文件授权管理等。

3. 项目技术难点

n 文档格式转换

本系统用FlexPaper与PDF2SWF一起使用,实现在浏览器上显示各种格式的文档,它的原理是先用openOffice软件把doc、ppt、xls、txt等格式文档转换为PDF格式,然后使用开源的SwfTools软件将PDF转成SWF格式文件,最后用FlexPaper加载swf文件实现office文档的在线浏览[1] 。

openOffice是一款可以把ppt、word、excel、txt等ms office格式文档转换成pdf格式的软件;在服务器系统中安装openOffice后,配合jodconverter-2.2.2.jar包可以在java代码中实现格式转换功能 [2] 。

SwfTools是一款可以把PDF文档转换为swf格式的软件;在服务器系统中安装SwfTools后,在系统命令行中输入,例如/C:/Program Files/SWFTools/pdf2swf.exe d:\\displaytag.pdf -o d:\\displaytag.swf就可以实现格式转换了 [3] 。

n 全文搜索引擎

系统的文档搜索采用Lucene实现的全文索引引擎,早期系统一般都是基于数据库实现的模糊搜索,数据量大对系统速度有影响,也不能按语意进行拆开,可以说缺点多;这里系统采用Lucene,并用二元分词算法实现,如何进行创建索引和搜索是系统的重点和难点。

4. 系统建设方案

4.1. 系统总体架构

校内公示系统的总体架构图如图1所示:

4.2. 系统开发框架

系统采用SSH技术架构,是多个框架(struts + spring + hibernate)的集成,是目前较流行的一种Web应用程序开源集成框架,用于构建灵活、易于扩展的多层Web应用程序。集成SSH框架的系统从职责上分为四层:表示层、业务逻辑层、数据持久层和域模块层(实体层) [4] 。

Struts作为系统的整体基础架构,负责MVC的分离,在Struts框架的模型部分,控制业务跳转,利用Hibernate框架对持久层提供支持。Spring一方面作为一个轻量级的IoC容器,负责查找、定位、创建和管理对象及对象之间的依赖关系,另一方面能使Struts和Hibernate更好地工作[5] 。

系统技术框架图如图2所示:

由SSH构建系统的基本业务流程:

a) 在表示层中,首先通过JSP页面实现交互界面,负责传送请求(Request)和接收响应(Response),然后Struts根据配置文件(struts-config.xml)将ActionServlet接收到的Request委派给相应的Action处理。

b) 在业务层中,管理服务组件的Spring IoC容器负责向Action提供业务模型(Model)组件和该组件的协作对象数据处理(DAO)组件完成业务逻辑,并提供事务处理、缓冲池等容器组件以提升系统性能和保证数据的完整性。

c) 在持久层中,则依赖于Hibernate的对象化映射和数据库交互,处理DAO组件请求的数据,并返回处理结果。

采用上述开发模型,不仅实现了视图、控制器与模型的彻底分离,而且还实现了业务逻辑层与持久层的分离。这样无论前端如何变化,模型层只需很少的改动,并且数据库的变化也不会对前端有所影响,大大提高了系统的可复用性。而且由于不同层之间耦合度小,有利于团队成员并行工作,大大提高了开发效率[6] 。

4.3. 用户实体ER图

根据用户需求设计的概念数据模型,它是从用户角度看到的数据库,可用E-R模型表示,部分E-R图如下[7] :

用户实体E-R图如图3所示。

文档类别实体E-R图如图4所示。

文档实体E-R图如图5所示。

4.4. 关键数据表结构

校内公示系统涉及的关键数据表结构,如表1至表7所示。

4.5. 关键代码

// word文件转换成pdf文件[8]

// 打开主线程

ComThread.InitSTA();

// 查找word组件

ActiveXComponent app = new ActiveXComponent(Word.Application);

// 要转换的word文件

String inFile = sourceFile;

// 目标文件

String tpFile = desFile;

boolean flag = false;

try {

// 设置word不可见

app.setProperty(Visible, new Variant(false));

Dispatch docs = app.getProperty(Documents).toDispatch();

// 打开word文件,注意这里第三个参数要设为true,这个参数表示是否以只读方式打开,因为我们不用保存原文件,所以以只读方式打开,如果你想进行读写,那么就得设为false。

Dispatch doc = Dispatch.invoke(docs, Open, Dispatch. Method, new Object[] {inFile, new Variant(false), new Variant(true)}, new int[1]). toDispatch();

// 作为html格式保存到目标文件

Dispatch.invoke(doc, SaveAs, Dispatch.Method, new Object[] {

tpFile, new Variant(17)}, new int[1]);

Variant f = new Variant(false);

// 关闭word文件

Dispatch.call(doc, Close, f);

flag = true;

} catch (Exception e) {

throw e;

} finally {

// word组件关闭

app.invoke(Quit, new Variant[] {});

// 关闭主线程

ComThread.Release();

ComThread.quitMainSTA();

}

//PDF文件转换成SWF文件

// 转换命令

String command = cmd /c \ + CommonKey.SWFTOOLS_PATH+pdf2swf\ -z -s flashversion=9 + CommonKey.PDF_FILE_PATH + fileName + .pdf -o

+ request.getServletContext().getRealPath(/) +

CommonKey.SWFFILE_PATH + fileName + .swf ;

// 字符串数组(设置执行参数)

String[] envp = new String[1];

// SWFTOOLS工具安装路径

envp[0] = PATH= + CommonKey.SWFTOOLS_PATH;

// 执行转换

Process pro = Runtime.getRuntime().exec(command, envp);

// 监听转换数据流

BufferedReader bufferedReader = new BufferedReader( new InputStreamReader(pro.getInputStream()));

// 直到转换完成

while (bufferedReader.readLine() != null) {

}

try {

pro.waitFor();

} catch (InterruptedException e) {

}

// 转换完成后退出

return pro.exitValue();

4.6. 系统效果图

系统运行效果图,如图6所示文档分类列表图。

系统运行效果图,如图7所示文件列表图。

Figure 1. The system’s overall architecture diagram

图1. 系统总体架构图

Figure 2. The system’s technology architecture diagram

图2. 系统技术框架图

Figure 3. User entity E-R diagram

图3. 用户实体E-R图

Figure 4. Document category entity E-R diagram

图4. 文档类别实体E-R图

Figure 5. Document entity E-R diagram

图5. 文档实体E-R图

Table 1. User_info

表1. 用户信息表

Table 2. Doc_column

表2. 文件夹表

Table 3. Doc_info

表3. 文档信息表

Table 4. Doc_cate

表4. 文档类别

Table 5. Doc_download_record

表5. 文档下载记录表

Table 6. User_visit_record

表6. 用户访问记录

Table 7. System_login_record

表7. 系统登录日志

Figure 6. Document category list diagram

图6. 文件分类列表图

Figure 7. File list diagram

图7. 文件列表图

Figure 8. Show file in flexpaper diagram

图8. 在flexpaper中显示文件效果图

系统运行效果图[9] ,如图8所示在flexpaper中显示文件效果图。

文章引用

李降宇,杨雨濛,郭晓明,刘化总, (2015) 基于FlexPaper的校内公示系统设计与实现
Design and Implementation of a University-Wide Document Sharing System Based on FlexPaper Technique. 计算机科学与应用,01,1-10. doi: 10.12677/CSA.2015.51001

参考文献 (References)

  1. 1. (2010) Flexpaper Docs [OL]. http://flexpaper.devaldi.com/demo/

  2. 2. 蒲子明, 许勇, 王黎 (2010) Struts 2+Hibernate+Spring整合开发技术详解. 清华大学出版社, 北京.

  3. 3. 崔文浩, 屈菲, 程琳 (2012) 使用FlexPaper实现图书馆自建特色数据库在线阅览的研究. 计算机光盘软件与应用, 21, 151-152.

  4. 4. 龚尚福, 龚琴, 冯健 (2013) 基于SSH框架的EPON性能管理系统的设计与实现. 计算机应用, 2, 571-574.

  5. 5. 张建军, 刘虎, 倪芳英, 吉勇祥 (2012) 基于SSH整合架构的研究与应用. 湖南师范大学自然科学学报, 6, 39-43.

  6. 6. 高德勇, 金涛 (2012) 基于J2EE构架的高校考试报名系统的研究和设计. 自动化与仪器仪表, 4, 83-84.

  7. 7. 陈玲, 夏汛 (2013) 基于SwfTools和FlexPaper的文档共享平台. 计算机光盘软件与应用, 23, 121, 123.

  8. 8. 陈引迪, 李隐峰 (2014) 基于Web文档在线浏览的实现. 电子科技, 5, 107-109.

  9. 9. 侍荣星, 何盛国, 赵佳山 (2013) 基于Java的在线阅览系统设计. 硅谷, 1, 44, 52.

期刊菜单