基于Web 2.0的科技查新檔案管理系統(tǒng)設計和實現(xiàn)
石蕾
(西安交通大學,710061)
摘要:文章分析當前查新機構對查新檔案管理系統(tǒng)的需求,從系統(tǒng)設計的角度介紹了基于富客戶端和DWR技術的查新檔案管理系統(tǒng)的技術方案、關鍵技術和實現(xiàn)方法。
關鍵詞:查新檔案;web2.0;DWR;JfreeChat;檔案管理;富客戶端技術
中圖分類號:G250.7
文獻標識碼:A
文章編號:1006-1525(2015)01-0050-05
Abstract:After analyzing the requirements of current Sci-Tech Novelty Retrieval organizations for Sci-Tech Novelty Retrieval Archive Management System, the article makes an introduction to the rich clients and DWR technology based on the Sci-Tech Novelty Retrieval Archive Management System, examines the technical solutions, key technologies and implementation methods from the design of the system.
作者簡介:石蕾,女,館員。
收稿日期:2014-06-10
Design and implementation of Sci-tech Novelty Retrieval Archive Management System based on Web 2.0
SHI Lei
(Xi’an Jiaotong University, Xi’an710061, China )
Key words: Sci-Tech Novelty Retrieval Archive; web2.0; DWR; JfreeChat
1引言
查新檔案基本分為文書檔案和項目檔案兩大類。文書檔案包括上級下發(fā)給查新機構的各種有關查新的規(guī)定、細則等,查新機構制定的各種有關查新的規(guī)章制度、查新機構的年檢材料和查新工作總結、查新項目登記、查新咨詢專家數(shù)據(jù)庫和有關業(yè)績材料,以及查新人員在工作中所獲成果、發(fā)表的著作和論文等有關資料。對于文書檔案應當立卷保管,按年度歸檔,長期保存。項目檔案包括查新合同、查新報告、查新項目的主要科學技術資料、查新咨詢專家的書面咨詢意見及查新人員的工作紀錄等[1,2]。
目前,各查新站不但保存查新檔案的印刷版,而且保存查新檔案的電子版。印刷版采用傳統(tǒng)的文檔盒保存,電子版采用Email或FTP服務器上傳給查新檔案管理人員,查新檔案管理人員制作excel電子表格登記每個查新報告的目錄信息。這樣的管理方式不但增加了檔案管理人員的工作量,而且不方便工作統(tǒng)計分析。部分高校采用了web版的查新檔案管理,但都停留在簡單的目錄提交和查詢,沒有自動從用戶填寫的合同中提取數(shù)據(jù)、統(tǒng)計分析模塊和導入導出word、excel功能。由于客戶端未采用ajax技術,所以頁面的動態(tài)性和用戶體驗較差。
本文擬采用一種流行的富客戶端技術ExtJS框架開發(fā)用戶界面,以提高頁面的動態(tài)性和用戶體驗。后臺采用跨平臺java語言和mysql數(shù)據(jù)庫。查新檔案數(shù)據(jù)分析采用了JfreeChat庫生成各種圖表進行直觀顯示。為了減少輸入查新目錄的工作量,采用POI類庫從查新合同word文件中提取相應字段導入后臺數(shù)據(jù)庫。由于以前采用的是excel電子表格管理數(shù)據(jù),為了導入以前的數(shù)據(jù),我們增加了excel導入導出模塊,所有的查新目錄信息可以直接從excel導入,也可以將數(shù)據(jù)庫的信息導出為excel表格,再進行數(shù)據(jù)分析。
2需求分析
根據(jù)查新檔案管理人員提出的功能要求,通過對系統(tǒng)流程、功能模塊、技術方法等方面進行詳細設計,并最終完成整個系統(tǒng)的開發(fā)。系統(tǒng)采用B/S結構模式,主要包括數(shù)據(jù)的增刪改查、數(shù)據(jù)分析圖形化顯示、電子版全文提交、導入導出word、excel文檔。
系統(tǒng)主要完成以下目標:(1)基于web形式的檔案分布式管理;(2)查新人員可以從瀏覽器輸入數(shù)據(jù),從查新合同導入數(shù)據(jù),從excel表格導入數(shù)據(jù),將數(shù)據(jù)導出為word或excel文檔。通過web界面提交查新報告全文,報告全文會自動和目錄信息進行超鏈接關聯(lián)。(3)可以按照各種字段組合查詢數(shù)據(jù),有權限用戶可以直接打開查新報告全文。(4)對查新檔案進行統(tǒng)計分析,結果為圖或者報表的形式。
3系統(tǒng)實現(xiàn)
本系統(tǒng)采用B/S架構,數(shù)據(jù)庫采用mysql,后臺編程采用java編程語言,用戶界面全部采用ExtJS框架,導入導出word或excel文檔采用dwr類庫直接調(diào)用后臺Java類,結果分析采用JfreeChat類庫生產(chǎn)圖表,開發(fā)環(huán)境采用MyEclipse,應用服務采用tomcat容器,系統(tǒng)運行環(huán)境采用redhat操作系統(tǒng)。
科技查新檔案管理系統(tǒng)可以分為以下3個大模塊:(1)查新管理模塊。該模塊包括以下幾個部分,數(shù)據(jù)的增、刪、改、查,導入word合同,導入excel表格,導出excel表格,生成報表。在該界面查新人員可以手動錄入查新目錄數(shù)據(jù),可以直接從用戶填寫的word合同中提取表格數(shù)據(jù)導入系統(tǒng),可以將原來的excel電子表格導入系統(tǒng),或?qū)⑾到y(tǒng)現(xiàn)有數(shù)據(jù)導出為excel表格。(2)結果分析模塊。該模塊可以通過以下幾個方面進行分析:查新員、查新范圍、查新類別和查新級別。在進行任何分析的時候可以進行時間限制。分析結果最終以柱狀圖形式顯示。(3)全文提交模塊。該模塊主要用來提交查新報告的全文。提交全文的時候,以查新報告編號命名文檔,這樣提交到服務器上的查新報告可以自動和檢索窗口的查新報告書目產(chǎn)生超鏈接,有權限的用戶可以通過點擊鏈接直接打開查新報告全文。由于B/S結構中服務器端不能直接操作客戶端文件,所以要實現(xiàn)查新合同和excel電子表格的導入就必須先通過該模塊將合同或excel電子表格上傳到服務器,然后才能在查新管理模塊進行導入操作。(4)用戶管理模塊。包括用戶信息的增刪改查以及權限設置。權限包括三級。1代表最高權限,可以對系統(tǒng)數(shù)據(jù)和用戶數(shù)據(jù)進行刪除和修改操作。2代表次級權限,可以提交、修改和查詢數(shù)據(jù)。權限3僅能夠查詢查新檔案的書目信息,但不能鏈接查新報告全文。
基于對系統(tǒng)功能模塊分析,系統(tǒng)所需數(shù)據(jù)主要包括查新目錄信息、查新人員信息和系統(tǒng)訪問日志信息等?;诖?,在mysql數(shù)據(jù)庫中建立三張數(shù)據(jù)庫表。具體表結構如下:
(1)查新目錄信息表
該表存儲查新檔案的所有字段信息,具體結構如表1所示:
表1 查新目錄信息表
(2)用戶信息表
該表存儲用戶信息,具體結構如表2所示:
表2 用戶信息表
(3)日志表
該表主要存儲用戶登錄的IP地址信息,具體結構如表3所示:
表3 日志表
(1)ExtJS富客戶端開發(fā)
ExtJS是一種主要用于創(chuàng)建前端用戶界面,是一個基本與后臺技術無關的前端ajax框架[3]。本系統(tǒng)用戶界面采用了ExtJS2.0框架,實現(xiàn)查新目錄數(shù)據(jù)列表以及用戶管理界面。用戶可以實現(xiàn)無刷新頁面提交數(shù)據(jù),可以隱藏或顯示任何一列數(shù)據(jù),可以動態(tài)按照任何一列進行排序。開發(fā)過程將js代碼和jsp代碼分離。在jsp代碼中引入js代碼如下:
href="js/resources/css/ext-all.css" />
引入ExtJS框架順序一定要完全按照上面代碼順序,否則系統(tǒng)會報錯。
(2)DWR(Direct Web Remoting)
DWR是一個用于改善web頁面與Java類交互的遠程服務器端Ajax開源框架,可以幫助開發(fā)人員開發(fā)包含Ajax技術的網(wǎng)站。它可以允許在瀏覽器里的代碼使用運行在WEB服務器上的JAVA函數(shù),就像它就在瀏覽器里一樣[4]。本系統(tǒng)在服務器端有三個類供客戶的js代碼直接調(diào)用。服務器端三個類分別為:①DaoWord.java,該類包括了一個public static void daoWord(String str)方法,實現(xiàn)從word文檔合同中提取字段信息,然后寫進后臺數(shù)據(jù)庫。②DaoExcel.java,該類包括了一個public static void daoExcel(String str)方法,實現(xiàn)從Excel文檔中提取表格數(shù)據(jù),然后寫進后臺數(shù)據(jù)庫。③DaocExcel.java,該類包括了一個public static void daocExcel(String str)方法,實現(xiàn)將后臺數(shù)據(jù)庫中的書目信息導出為excel電子表格。客戶的js代碼調(diào)用上述三個類方法代碼如下:
document.write(" ");
document.write(" ");
document.write(" ");
document.write(" ");
document.write(" ");
function daochu(str2, str3, str4, str5) {//導出excel
DaocExcel. daocExcel (str2, str3, str4, str5, callback1);};
function daoru(str) { //導入excel
DaocExcel. daoExcel (str, callback2);};
function daoword(str1) {//導入word
DaoWord.daoWord(str1, callback3);};
function callback1() {//提供給dwr框架的回調(diào)函數(shù)};
function callback2() {//提供給dwr框架的回調(diào)函數(shù)};
function callback3() {//提供給dwr框架的回調(diào)函數(shù)};
(3)Apache POI
Apache POI 是創(chuàng)建和維護操作各種符合Office Open XML(OOXML)標準和微軟的OLE 2復合文檔格式(OLE2)的Java API。用它可以使用Java讀取、創(chuàng)建和修改MS Excel文件,或者讀取、創(chuàng)建MS Word和MSPowerPoint文件[5]。本系統(tǒng)DaoWord.java、DaoExcel.java、DaocExcel.java三個類中使用了POI類庫。三個類中使用POI類庫代碼如下:
DaoWord.java
// 讀取word單元格,導入word表格信息
FileInputStream in = new FileInputStream("d:\Program Files\Apache Software Foundation\Tomcat 5.0\webapps\extjs\fileupload\hetong.doc");// 載入文檔
POIFSFileSystem pfs = new POIFSFileSystem(in);
HWPFDocument hwpf = new HWPFDocument(pfs);
Range range = hwpf.getRange();// 得到文檔的讀取范圍
TableIterator it = new TableIterator(range);// 迭代文檔中的表格
DaoExcel.java
// 創(chuàng)建對Excel工作簿文件的引用,導入excel單元格
HSSFWorkbook workbook
=new HSSFWorkbook(new FileInputStream(fileToBeRead));// 創(chuàng)建對工作表的引用
HSSFSheet sheet = null;
HSSFCell cell = null;
sheet = workbook.getSheetAt(0); // 讀取左上端單元
DaocExcel.java
//創(chuàng)建新的Excel 工作簿,當數(shù)據(jù)中的數(shù)據(jù)導出到新的excel表格中
HSSFWorkbook workbook
=new HSSF Workbook(); // 在Excel工作簿中建一工作表,其名為缺省值
HSSFRow row = null; // 在索引0的位置創(chuàng)建行(第一行)
HSSFCell cell = null; // 在索引0的位置創(chuàng)建單元格(第一列)
(4)JfreeChart
JFreeChart是JAVA平臺上一個開放的圖表繪制類庫,完全使用JAVA語言編寫,是為使用applications、applets、 servlets 以及JSP等而設計。JFreeChart主要用來制作各種各樣的圖表,這些圖表包括:餅圖、柱狀圖(普通柱狀圖以及堆棧柱狀圖)、線圖、區(qū)域圖、分布圖、混合圖、甘特圖以及一些儀表盤等等[6]。本系統(tǒng)在結果分析中使用該類庫生成柱狀圖,用戶可以按照一定的條件進行結果分析,并且生成柱狀圖。部分代碼如下:
if (cxtj. equals("czhuman")) {
dataset = new DefaultCategoryDataset();
dataset.addValue(count, " ", "張三");
dataset.addValue(count1, " ", "李四");
dataset.addValue(count2, " ", "王五");
dataset.addValue(count2, " ", "小張");
dataset.addValue(count4, " ", "小劉");
hart =ChartFactory.createBarChart3D("查新數(shù)量柱狀圖", "查新員", "數(shù)量",
dataset, PlotOrientation.VERTICAL, false, false, false);
filename =ServletUtilities.saveChartAsPNG(chart, 500, 300,
null, session);
graphURL=request.getContextPath()
+ "/servlet/ Display Chart? filename =" + filename;
} else if (cxtj.equals("wtunit")) {
dataset = new DefaultCategoryDataset();
dataset.addValue(count, " ", "校外");
dataset.addValue(count1, " ", "電信學院");
dataset.addValue(count2, " ", "機械學院");
dataset.addValue(count3, " ", "能動學院");
dataset.addValue(count4, " ", "理學院");
dataset.addValue(count5, " ", "材料學院");
dataset.addValue(count6, " ", "醫(yī)學院");
dataset.addValue(count7, " ", "航天學院");
dataset.addValue(count8, " ", "軟件學院");
chart =ChartFactory.createBarChart3D("查新數(shù)量柱狀圖", "查新范圍", "數(shù)量",
dataset, PlotOrientation.VERTICAL, false, false, false);
filename=ServletUtilities.saveChartAsPNG(chart, 500, 300,
null, session);
graphURL=request.getContextPath()
+ "/servlet/DisplayChart?filename=" + filename; }
4應用實例
本系統(tǒng)在開發(fā)的過程中受到西安交通大學圖書館課題基金資助。從2010年來一直用于教育部西安交通大學查新工作站查新檔案的管理。查新人員和檔案管理人員反映良好。圖1、2、3為系統(tǒng)運行時截圖。
圖1系統(tǒng)主界面
圖2 新增數(shù)據(jù)界面
圖3 結果分析柱狀圖
5結語
本文就查新檔案管理工作進行了系統(tǒng)的研究,通過詳細的分析和設計,將檔案管理過程中許多繁瑣的人工處理轉(zhuǎn)變?yōu)橛嬎銠C自動處理。如:不需要查新員或檔案管理人員進行手工錄入信息,而是自動從用戶填寫的合同中直接提??;查新員在書寫查新報告時不需要對合同的信息進行拷貝粘貼,而是直接從合同中提取到查新報告中,省去了許多繁瑣的工作;對工作進行統(tǒng)計時,可以按照不同的條件生成柱狀圖,極大地方便了工作量的統(tǒng)計。工作的下一步目標是將原來設計的查新用戶合同提交系統(tǒng),由該系統(tǒng)進行集成。
參考文獻:
[1] 祁卓麟.科技查新檔案的管理工作[J].科技文獻信息管理,2010,(1):38-40.
[2] 黃春曉,袁玉花.科技查新檔案管理的初探[J].農(nóng)業(yè)圖書情報學刊,2010,(7):108-109+118.
[3] http://www.sencha.com/.
[4] http://directwebremoting.org/dwr/.
[5] http://poi.apache.org/.
[6] http://www.jfree.org/jfreechart/.
(責任編輯:朱愛瑜)