摘 要:為解決資源冗余和難以管理問題,提出使用內容管理系統(CMS) 構建開放式資源庫系統的解決方案。闡述內容管理體系結構,運用內容管理的理論和相關技術,并結合采用J2EE 技術構建一個基于內容管理的資源庫系統。重點介紹權限管理、文件的上傳與下載、資源發布管理這3 大關鍵技術模塊的設計與實現。解決技術與內容的瓶頸、開發維護角色分工、系統統一管理等問題。
關鍵詞:CMS;資源庫系統; J2EE
中圖分類號:TP311 文獻標識碼:A
Design and Realization of Opening Resources System Based on CMS
HE Weina, LIU Gaoyuan
(Pingdingshan University, Pingdingshan 467000,China)
Abstract:For solving resources redundancies, a solution of building an opening resources system based on CMS was put forward. CMS architecture was discussed, and using theory and relevant technical of CMS and J2EE to build resources system. On how to design and implement this system the three key technical modules were mainly discussed, including: the management module of user privileges, file uploading and downloading module, resources publishing management module. Finally, the bottleneck of technology and the content, the developing and maintaining the division of roles , the unified management was solved
Key words:CMS; resource system ; J2EE
1 前 言
隨著信息技術應用越來越廣,以及互聯網技術的進一步發展,通過網絡獲取資源和信息的手段越來越豐富,一個突出問題也隨之產生,那就是資源的冗余,迫切需要一種更加快捷、高效的解決方案來解決這個問題,傳統的資源管理系統解決方案難以滿足需要。需要實現從數據管理、資源管理到內容管理的轉變,以滿足日益復雜的Web 應用和急劇膨脹的資源量的需求。內容管理系統是IT先進技術的綜合應用,能夠解決資源的采集、管理、利用、傳遞和增值,能為企業決策提供支持和參考。
2 內容管理系統概述
內容管理系統(Content Management System,CMS),即人員、內容、應用、流程關系集成。CMS 是專門面向互聯網站內容編輯與發布的應用系統,旨在管理龐大、煩雜的后臺數據和信息,規范網站后臺信息管理流程,統一數據存儲格式,減少網站維護的投入,加強信息披露的權限管理,從而大大減輕建立各類信息網站的復雜性,方便網站的運營管理、內容維護[1]。
CMS的基本思想是分離內容管理和設計[2]。CMS 的技術框架如圖1 所示,頁面的設計存儲在模板里,而內容存儲在數據庫或獨立的文件中。當一個用戶請求頁面時,各部分聯合生成一個標準的HTML 頁面。
內容管理系統被分離成以下幾個層面:
1) 后臺業務子系統管理(管理優先:內容管理)。資源錄入系統,全文檢索子系統等,針對不同系統,方便管理者的內容錄入;所見即所得的編輯管理界面,清晰的業務邏輯;各種子系統的權限控制機制等。
2)Portal 系統(表現優先:模板管理)。大部分最終的輸出頁面:網站首頁,子頻道/專題頁,資源詳情頁,一般就是各種后臺子系統模塊的各種組合,這種發布組合邏輯是非常豐富的,Portal系統就是負責以上這些后臺子系統的組合表現管理。
3) 前臺發布(效率優先:發布管理)。面向最終用戶的緩存發布,和搜索引擎的spider 的URL 設計等。
3 基于CMS的開放式資源庫系統設計
與實現
3.1 系統分析
基于CMS的開放式資源庫系統是一套以資源為核心、專注于滿足用戶的現階段需求以及可擴展的資源管理系統。系統重點解決了如何結合現有的各資源庫系統實際,按系統集成、消除信息孤島的思想,將資源管理模式化、標準化、集成化。
系統分為前臺用戶和后臺管理員兩類。前臺用戶需要實現:進入系統,瀏覽信息標題、簡要概述、信息發布時間;可以詳細查看信息內容,包括信息標題、作者、發布時間、正文、圖片等;瀏覽信息,可以發表意見、查看他人評論;上傳各類文件;快速查找信息,并可點擊瀏覽。后臺管理員需要實現:上傳信息,包括文字、圖文、音頻、視頻等各類文件;對各類信息分欄目顯示,既有信息標題列表,又有詳細信息顯示;可以對各類信息管理,上傳、修改、統計、刪除信息;對用戶的發表意見管理,修改、回復、刪除、統計;管理員內部管理。基于CMS的開放式資源庫系統整體設計框架如圖2
3.2 系統功能結構
系統根據使用對象的不同將用戶角色主要分成普通用戶、系統管理員。
普通用戶可以訪問資源庫系統,瀏覽、查看、檢索信息、下載資源、發表評論等。CMS系統的最終目的就是把加工后的信息以某種方式提供給用戶,所以普通用戶就是最終的信息消費者,也是系統服務的主要對象。
系統管理員負責整個系統的資源來源,擔負著資源收集、整理、加工和分發等工作,是資源的生產和加工者。具體職能包括添加、刪除、修改欄目、將資源歸檔以及用戶角色權限控制。系統功能需求圖,如圖3。
如上圖,系統由3個參與者和所驅動的10個用例相互關聯組成,用戶(People)以及兩個概括出兩個參與者普通用戶和系統管理員;10個用例:注冊、登錄、發布信息、修改信息、瀏覽信息、發表意見、上傳文件、快速查找信息、評審用戶意見以及系統維護。
3.3 系統架構選擇
系統采用以J2EE為基礎的OpenCms 內容管理系統,采用Java 為主要編程語言。客戶端采用瀏覽器訪問所有數據,應用服務端采用構架于IBMWebsphere 之上的J2EE 應用,通過JDBC 連接后臺數據庫。IBM Websphere 的Web 服務器部分將作為接口實現部分,其應用服務器部分將作為主要業務運行引擎[3]。
J2EE 平臺提供了一個基于組件的設計,開發,裝配和部署應用的環境,同時也提供了多層的分布式應用模型,可復用的組件,統一的安全模型和靈活的事務控制。
3.4 系統主要功能模塊設計和實現
3.4.1 OpenCms權限管理
OpenCms的權限管理思想的核心是安全授權和角色相聯系,用戶首先要成為相應的角色成員,才能獲得該角色對應的權限[4]。這大大簡化了授權管理,角色可以根據組織中不同的工作創建,然后根據用戶的責任和資格分配角色。用戶可以輕松的進行角色轉換,而隨著新應用的增加,角色可以分配更多的權限,也可以根據需要撤銷相應的權限。
實現訪問控制的主要算法描述如下:
輸入參數: user (用戶ID)、Module ID (被訪問的欄目ID)、pid (被訪問資源的ID) 、op (進行的操作等級)。
返回: 驗證通過返回true; 驗證未通過返回1。
算法流程:
1)判斷是否為管理員身份,如果是返回true ;否則進入下一步。
2)根據參數user 的角色Role ID 和待訪問的Module ID ,查找角色權限表中的匹配記錄。如果未發現匹配記錄,則進入第三步;否則進入第四步。
3)查找Module ID 分類欄目的父欄目Parent ID ,如果無父欄目Parent ID 則返回1;否則并令Module ID = Parent ID,重復第2步。
4)按照上文所述的帶約束機制的訪問控制算法進行判斷,驗證通過則返回true;否則返回1。
3.4.2 上傳與下載模塊設計與實現
OpenCms 是把所有的上傳資源保存到數據庫中,所以如果資源比較大的時候,在上傳和下載的過程中,因為要和數據庫交互,會極大影響系統的性能[5]。考慮到這種情況,所以采用文件服務器的形式,將用戶上傳的資源,保存到server上特定的文件夾下,當用戶下載時,從文件服務器上直接下載,極大地提高資源上傳和下載的性能。
1)資源上傳模塊關鍵代碼
采用fileupload 組件將資源上傳到文件服務器上,同時將文件的相關信息,比如:資源名、資源大小、資源類別等采用DAO 的方式保存到數據庫中。關鍵代碼如下:
//保存上傳的資源到指定的目錄
name = name.replace(':','_');
name = name.replace('\\\\','_');
String saveDir = ConfigParame.UPLOAD_ROOT_DIR;
File fileDir = new File(saveDiorr+File.separator+category);
if(! fileDir.exists()){
fileDir.mkdir();
}
……
}
entity.setCategory(category);
entity.setFile_path(category);
TimestamptempT=newTimestamp(System.currentTimeMillis());
int year = tempT.getYear();
int month = tempT.getMonth();
int day = tempT.getDate();
Timestamp time = new Timestamp(year,month,day,0,0,0,0);
entity.setCreate_date(time);
New Timestamp(System.currentTimeMillis()));
UploadDAO upDao = new UploadDAO();
2)資源下載模塊關鍵代碼
//檢查是否找到相關資源
Public Boolean isDone()
{
System.out.println(“The resource is downloaded!”);
return isDone;
}
//下載完成后調用
Public Boolean failed()
{
System.out.println(“The download resource is failed!”);
}
//下載進度調用:
……}
3.4.3 資源發布管理
上傳資源后,系統自動生成對應的頁面文件并在前臺發布,發布的原則是效率優先[6],因此資源發布管理采用呈現與內容分離策略。呈現與內容管理分離讓系統管理員能夠高效率的對數據資料和顯示邏輯分開來管理。傳統的內容管理系統在進行網站管理架構時,主要采用程序與數據混合編程方式,即一段程序中穿插了各類用于顯示的數據,數據與程序邏輯混雜在一起,使文件過于龐雜,對網站的開發和維護帶來很大的不便。為了解決此類問題,采用XML來存儲數據。它是一種具有自我描述和邏輯語義描述能力的可擴展標記語言,利用它寫出以標記為語義邏輯的數據文件。然后在程序中只需對XML文檔中的標記進行查詢引用,就可得到相應的數據。然后對數據做指定的操作,這樣就使得呈現與內容管理相分離了。
每一條內容在發布之前要在每個要發布的欄目中設置顯示的時間段,在時間段內通過和數據表時間字段的比較把在時間段內的內容條目顯示在界面上。
4 結 論
本文作者創新點:提出了一套基于CMS 的易于維護,易于集成,具有很大靈活性的資源庫系統的解決方案,成功實現了CMS 在資源庫系統中的應用,解決了在CMS 的權限管理、資源管理和多文件的上傳與下載關鍵技術。
基于CMS的開放式資源庫系統,可以從根本上解決技術與內容的瓶頸、開發維護角色分工、系統統一科學管理等問題,從而實現從數據管理、資源管理到內容管理的轉變,以滿足日益復雜的Web 應用和急劇膨脹的資源量的需求。
參考文獻
[1]程博,閻楚良.利用存儲過程優化CMS 系統查詢[J] .微計算機信息,2008,4-3:211-212.
[2] 譚立球,費耀平.多網站內容管理系統的設計和實現[J].計算機應用,2004,24(11):4-6.
[3] 李國柱.基于內容管理的Web 信息發布系統的設計與實現[D].蘇州:蘇州大學,2004.
[4] SANDHU R. CONYE E , et al. Role - based Access Control Models[J]. IEEE Computer ,1996.
[5] 劉益和,沈昌祥. 基于角色管理的安全模型[J].計算機應用研究,2007 ,24 (5) :119-121.
[6] 梁彬,孫玉芳,石文昌,等. 一種改進的以基于角色的訪問控制實施BLP 模型及其變種的方法[J].計算機學報,2004 ,27(5) :636-644.
注:本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文