楊永利
摘要:通過調(diào)研,對比分析了傳統(tǒng)FTP服務(wù)器與市場上各類文檔管理系統(tǒng)的優(yōu)勢與不足。確立以中小型企業(yè)為系統(tǒng)使用者,以滿足企業(yè)的特定需求為設(shè)計原則,為其設(shè)計一個靈活、高效的輕便型文檔管理系統(tǒng)。系統(tǒng)設(shè)計方面,首先整體開發(fā)以Akka-http為框架;憑借Scala與java的互操作性;其次開發(fā)過程合理地運用了java功能強大的庫函數(shù),再結(jié)合Scala語言易擴展、高并發(fā)的后臺服務(wù)架構(gòu),最終開發(fā)出以Scala為基礎(chǔ)語言的系統(tǒng)程序。
關(guān)鍵詞:Web文檔; 管理系統(tǒng);系統(tǒng)開發(fā); Scala; java
中圖分類號:TP311? ? ? ? 文獻標識碼:A
文章編號:1009-3044(2019)26-0071-04
開放科學(資源服務(wù))標識碼(OSID):
Abstract:Through the research, this thesis compares and analyzes the advantages and disadvantages of traditional FTP servers and various document management systems on the market. Establishing a small and medium-sized enterprise as a system user to meet the specific needs of the enterprise as a design principle, design a flexible and efficient portable document management system. As for system design, the overall development is based on Akka-http. With the interoperability of Scala and Java, the development process makes reasonable use of Java's powerful library functions, combined with Scala's easy-to-expand, high-concurrency background service architecture, and develops Scala-based system programs.
Key words:Web; document management; system development; Scala; java
1引言
隨著信息處理技術(shù)和網(wǎng)絡(luò)技術(shù)的快速發(fā)展,人們獲取信息的能力與速度大大提升,面對與日俱增的各類文檔,如何高效存放與管理成為人們亟待解決的問題。隨著電子文檔的形式和數(shù)量日益增多,我們對文檔管理的需求也在日益提高、改變。人們需要一個安全可靠的網(wǎng)上系統(tǒng),來替我們保存整理那些對我們有用的文件[1]。
對于個人文檔管理而言,我們所需要的不僅僅是將它們安全存放起來,更要在我們需要瀏覽相應(yīng)的信息內(nèi)容時,能夠方便快捷的獲取。另一方面,經(jīng)濟快速發(fā)展,興起了許多創(chuàng)業(yè)公司與SoHo辦公企業(yè),對于公司內(nèi)部的文檔,進行合理配置與管理,以此將公司積攢沉淀的知識文檔構(gòu)建出該企業(yè)的知識儲備體系,能夠幫助企業(yè)更好更快發(fā)展。由此,越來越多的辦公團體、事業(yè)單位、科研機構(gòu)甚至個人文件都已開始邁向信息化的管理模式,企業(yè)中的文檔資料已從紙質(zhì)存儲轉(zhuǎn)變?yōu)殡娮哟鎯?,并通過文檔管理系統(tǒng)來管理部署電子文檔[2]。
最為大家的熟知的是FTP(File Transfer Protocol),它不僅是一種HTTP協(xié)議,同時也是一個應(yīng)用程序[3]。它滿足了對于文檔管理而言基本的上傳與下載功能。但是對于用戶權(quán)限的管理過于單一,且對文檔的歸檔分類需要人力操控,非常麻煩。從使用上來說,想要使用該程序,需要安裝和運行FTP客戶端,但是該程序是字符界面而不是圖形界面,這就必須以命令提示符的方式進行操作,這對于普通用戶來說,無疑是增添負擔,很不方便。若是通過ie瀏覽器進行操作,速度較慢,且容易暴露密碼,不夠安全。因此,現(xiàn)在很少有團體、企業(yè)使用這種方式來對文檔進行存放與管理[4-6]。
目前市場已開發(fā)的比較成熟的文檔管理系統(tǒng)大致可以分為三類;第一類為公有云盤,就是廠家提供云端的存儲和運維服務(wù),用戶只需要注冊賬號,安裝客戶端就可以登錄使用,費用按照廠家給出的套餐價格來收取,較適合一二十人的小團隊,如果需要較大的云端存儲空間或者有上百人需要使用,費用會比較昂貴[7]。這類文檔的權(quán)限管理通常較為寬松。比較熟知的有:億方云,堅果云,夠快,燕麥云等。第二類為私有云盤,這類軟件產(chǎn)品,一般分為服務(wù)器端和客戶端,需在公司內(nèi)部的服務(wù)器上先安裝服務(wù)器端,用戶通過內(nèi)網(wǎng)訪問,這類系統(tǒng)適合在企業(yè)內(nèi)部部署私有的文件管理系統(tǒng)的用戶,用戶數(shù)也能夠支持幾百到上千不等;存儲空間可以根據(jù)需求對服務(wù)器硬盤進行配置。比較熟知的有:開始云,seafile、云盒子、優(yōu)米云盤等。第三類為NAS陣容,也就是定制硬件+文件管理軟件,這些產(chǎn)品很多針對的是個人和家庭用戶,部分中小企業(yè)用戶也會選擇NAS。但因為他們與硬件綁定,不是太靈活,總體成本也更高。
2系統(tǒng)的需求分析
文檔管理系統(tǒng)的作用是為某一個組織所有的文檔進行統(tǒng)一存放與管理。文檔的有效集群并對其進行合理的歸檔分類,能幫助該組織構(gòu)建自身的知識庫體系,使其核心文化與知識能夠得到良好集成與發(fā)展,對于絕大多數(shù)的中小企業(yè)來說,一個合適其內(nèi)部使用的文檔管理系統(tǒng)是十分必要的。
后續(xù)所述的系統(tǒng)需求以及功能板塊的設(shè)計與實現(xiàn)均是以中小企業(yè)的業(yè)務(wù)需求為基礎(chǔ),結(jié)合實際開發(fā)難度進行業(yè)務(wù)邏輯設(shè)計與功能擴展。
2.1功能需求分析
通過前敘研究,本系統(tǒng)圍繞以下需求進行開發(fā)設(shè)計。
2.1.1 基礎(chǔ)功能
1)用戶能對文檔進行上傳、下載(各種常見類型文檔均支持)。
2)用戶能對部分文檔進行預(yù)覽,并且特定用戶能將文檔從系統(tǒng)中移除。
3)文檔檢索,通過關(guān)鍵字查詢,快速定位文檔,方便用戶獲取相關(guān)信息。
2.1.2 用戶權(quán)限管理
1)設(shè)置系統(tǒng)管理員,能對系統(tǒng)進行部門的添加、移除。
2)對整個系統(tǒng)進行群組劃分,為每一個群組設(shè)置一位管理員以方便組內(nèi)管理與組間聯(lián)系。
3)各部門管理員對其所屬部門有最大權(quán)限來能管理所屬部門文檔,并且能對系統(tǒng)中的所有用戶進行針對該群組的權(quán)限管理。
2.1.3 文檔歸類
1)根據(jù)文檔類型進行自動分類。
2)以部門為單位進行文檔存放。
3)對每個用戶上傳的文檔進行劃分。
2.1.4 文檔權(quán)限管理
1)部門管理員可對其部門的文件進行權(quán)限管理,決定該文件對其余用戶是否可見、可用、可取。
2)管理員能對文檔進行全部操作,普通用戶需要得到相應(yīng)授權(quán)。
3)用戶能越過管理員授權(quán)直接獲取或刪除自己所提供文件(自己的文件擁有最大使用權(quán);對誤傳情況進行考慮,能夠自行刪除文件),但自身文件對于其余用戶來說,仍需得到管理員授權(quán)。
2.1.5 系統(tǒng)鑒權(quán)
用戶能通過注冊獲得賬號(管理員能對每個賬號進行權(quán)限管理),每一位用戶通過登陸的方式使用該系統(tǒng),用戶所能執(zhí)行操作均與個人信息(登陸時提供)有關(guān)。
系統(tǒng)需要一定手段來保障文檔安全性(使得文檔只能被有權(quán)利獲取的人使用),所以需要對每一位用戶進行鑒權(quán),以區(qū)分不同用戶(不同權(quán)限)。
2.2非功能需求分析
在基礎(chǔ)功能和業(yè)務(wù)邏輯滿足用戶使用需求后,可對系統(tǒng)其他部分進行優(yōu)化以提供用戶使用體驗。
2.2.1 實時性
用戶的每一步操作都及時處理,對于信息的變化進行及時更新。
2.2.2 并發(fā)性
支持多個用戶同時在線使用該文檔管理系統(tǒng),系統(tǒng)中部分內(nèi)容的實時修改對用戶可見,能對系統(tǒng)異常進行報錯與相應(yīng)拋出處理。
2.2.3 穩(wěn)定性
系統(tǒng)具備長時間工作能力,對于出現(xiàn)的錯誤異常,能有明確錯誤指示,以保障用戶的正常使用,并能對突發(fā)情況進行及時處理。
2.2.4 可維護性
系統(tǒng)采用客戶端-服務(wù)器結(jié)構(gòu),核心業(yè)務(wù)邏輯均部署在服務(wù)器端,由此減輕了客戶端的負載,方便維護。
2.2.5 易用性
用戶無須額外安裝軟件或配置電腦環(huán)境,只需要用瀏覽器進行登陸即可使用該系統(tǒng),符合現(xiàn)代人的使用習慣。
對文檔進行合理排序,方便用戶瀏覽;系統(tǒng)操作簡單,界面友好美觀,風格簡潔,界面操作易于理解,降低用戶誤操作性,并為使用帶來便利;符合正常邏輯,數(shù)據(jù)的呈現(xiàn)直白清晰[8]。
3系統(tǒng)設(shè)計
3.1 系統(tǒng)架構(gòu)設(shè)計
本系統(tǒng)采用瀏覽器/服務(wù)器(Browser/Server)的結(jié)構(gòu)設(shè)計,以瀏覽器為輔服務(wù)器為主的方式來支持業(yè)務(wù)邏輯設(shè)計與擴展。該結(jié)構(gòu)主要包含三個層次:瀏覽器、服務(wù)器、數(shù)據(jù)庫。通過三者之前的信息交互,實現(xiàn)系統(tǒng)功能。系統(tǒng)各功能模塊之間的劃分與聯(lián)系如下圖1所示:
本系統(tǒng)的業(yè)務(wù)邏輯主要由用戶和文檔兩大板塊組成。多級用戶設(shè)定,為系統(tǒng)的角色權(quán)限帶來多元化,為多級權(quán)限管理提供了更大的設(shè)計空間。文檔的多維度劃分,不僅依賴于自身特性,還與其關(guān)聯(lián)的用戶有關(guān),多類別劃分以及文件自身權(quán)限管理的多級融合,構(gòu)成了整個系統(tǒng)的最終業(yè)務(wù)邏輯實現(xiàn)與應(yīng)用[9]。
3.2數(shù)據(jù)庫設(shè)計
在系統(tǒng)框架與功能需求擬定以后,需要對數(shù)據(jù)庫結(jié)構(gòu)、各數(shù)據(jù)表以及表內(nèi)屬性進行合理安排與設(shè)計,數(shù)據(jù)庫的最終框架決定了系統(tǒng)業(yè)務(wù)邏輯能達到的上限。合理的數(shù)據(jù)庫配置與設(shè)計,應(yīng)能良好支持業(yè)務(wù)邏輯的修改與擴展,并能從編程難度、數(shù)據(jù)處理速度(系統(tǒng)運行速度)上得到簡化與提升。
據(jù)此,本系統(tǒng)設(shè)置了五個關(guān)系實體:系統(tǒng)實體、管理員實體、用戶實體、文件實體、群組關(guān)系實體。用以滿足后臺業(yè)務(wù)邏輯需求。
3.3系統(tǒng)流程設(shè)計
對于文檔管理系統(tǒng)來說,除了系統(tǒng)本身提供的業(yè)務(wù)功能和系統(tǒng)安全性外。合理、方便、符合使用規(guī)范的系統(tǒng)使用流程也是一個重要的衡量。
每一個用戶在瀏覽器上輸入正確初始登錄頁面網(wǎng)址后,通過個人賬號登錄,方可使用該系統(tǒng)(系統(tǒng)提供的一切功能均有鑒權(quán)機制)。不同級別用戶對應(yīng)不同界面,能夠?qū)ζ渌脩簦ㄆ胀ㄓ脩舫猓┻M行管理。不同用戶對文檔的權(quán)限管理和使用范圍也有所不同。具體流程如圖2:
3.4系統(tǒng)功能設(shè)計
3.4.1 注冊與登錄模塊
由于權(quán)限需求,系統(tǒng)管理員與部門管理員不可被隨意注冊,系統(tǒng)管理員由系統(tǒng)發(fā)布時即指定,部門管理員可由系統(tǒng)管理員創(chuàng)建。普通用戶通過注冊賬號后方可登錄使用本系統(tǒng)。注冊時,用戶需在現(xiàn)有部門選擇一個加入。此后該賬號所上傳的文件歸屬于該部門并由該部門管理員進行權(quán)限管理。(用戶可被其他部門管理員拉入其管理的部門)
通過為用戶設(shè)置session(通過cookie實現(xiàn)),使得不同級別用戶登錄后,進入的頁面有所區(qū)別,能使用的系統(tǒng)功能也有所不同。這些區(qū)分都通過鑒權(quán)手段控制。在用戶離開系統(tǒng)后,需注銷用戶,將系統(tǒng)為鑒別用戶身份而創(chuàng)建的信息刪除掉,保證文檔安全性。
3.4.2 文檔權(quán)限模塊
文檔的使用權(quán)限由兩部分組成,一個來自文檔與用戶的關(guān)系,一個來自文檔自身屬性。
用戶與文檔關(guān)聯(lián)性:每一個文檔在上傳時,都會根據(jù)上傳者的所在部門,在數(shù)據(jù)庫里添加一項“部門”屬性。據(jù)此,文檔的管理權(quán)限被賦予該部門管理員。只有屬于該部門或者被該部門拉入群組的用戶才能獲取文檔相關(guān)信息,并對文檔進行相應(yīng)操作。
文檔自身屬性:文檔有一個“權(quán)限”屬性,屬性分為三級High、Middle、Low,分別對應(yīng)不可被預(yù)覽、下載,可預(yù)覽不可下載,可預(yù)覽與下載。權(quán)限屬性可由管理員更改,通過按鈕來切換文檔權(quán)限屬性,并將權(quán)限級別展現(xiàn)出來。
通過文檔與用戶之間關(guān)系的業(yè)務(wù)邏輯交叉以及文檔屬性的劃分,為系統(tǒng)構(gòu)建了多級別多粒度的權(quán)限管控。
3.4.3 文檔分類模塊
合理利用文檔的后臺邏輯,對文檔的存放進行分類劃分,維護了數(shù)據(jù)存放的有序性、規(guī)則性。方便批量管理并提供了文檔的可移植性。
文檔的實際存放大致由三級劃分:部門->類別->用戶。
部門與用戶會隨著系統(tǒng)的使用,由系統(tǒng)管理員和部門管理員對其進行增添或修改,文檔類型則維持初始幾個分類。
可在服務(wù)器上分配出一塊磁盤區(qū)來存放文檔,設(shè)置好根目錄以后,后續(xù)上傳的文檔將會以上圖所示結(jié)構(gòu)存入,在服務(wù)器上可通過此層級結(jié)構(gòu)訪問到對應(yīng)文檔。
3.4.4 核心功能模塊
本系統(tǒng)最基本的功能是對文檔進行存放與管理。因此,著重解決的部分就是通過web瀏覽,借助瀏覽器對文檔管理實現(xiàn)上傳、下載、刪除、預(yù)覽四個基本功能。除了對文檔本身進行操作外,為了實現(xiàn)系統(tǒng)后臺的業(yè)務(wù)邏輯,需要借助數(shù)據(jù)庫存儲文檔及其存放相關(guān)的信息,涉及增、刪、改、查四個基本數(shù)據(jù)庫操作。合理的數(shù)據(jù)表設(shè)計能更好地支持后臺業(yè)務(wù)實現(xiàn)并能減低編程復雜度。在制定好系統(tǒng)全局業(yè)務(wù)邏輯后,對數(shù)據(jù)庫進行多次設(shè)計與修改,最后確定出幾個關(guān)鍵屬性,并將各表之間巧妙結(jié)合起來,最終以符合系統(tǒng)邏輯的方式實現(xiàn)了核心基礎(chǔ)功能。
上傳文件:設(shè)定同一部門的文檔不可以重名,不同部門間的文檔可以重名。文件上傳時會根據(jù)其部門、文檔類型、上傳者去搜尋最終URL。因此,不同部門的同名文件存放在不同路徑下,不會產(chǎn)生沖突,文件會以部門作為第一級區(qū)分。部門來自上傳者的從屬部門,為初始注冊時選取的部門。
下載文件:所有文件的獲取接口只提供給加入文檔所屬群組的用戶,用戶能對安全級別最低的文檔進行下載。下載時會根據(jù)文件名、所屬部門、上傳者進行URL鎖定,從而獲取文件。上傳者與部門管理員可以越過文檔權(quán)限級別下載文檔。
刪除文件:文檔安全性是文檔管理系統(tǒng)要考慮的最重要的因素之一,所以對于文檔的刪除,需要嚴格的權(quán)限控制與責任追究。因此,只有上傳者與部門管理員可對部門從屬文檔進行刪除操作。這樣做的目的是;對于上傳者誤傳可以及時修正、防止他人誤操作或者惡意操作導致文檔的遺失、文檔遺失能及時找到責任人并及時補救。
文件預(yù)覽:用戶可對圖片類文檔以及pdf類型文件進行預(yù)覽。協(xié)助用戶正確選擇所需文檔而不需反復多次下載查看,減少用戶對未知文件的查找時間。同下載一樣,預(yù)覽需要對用戶進行鑒權(quán)且需驗證文檔本身權(quán)限屬性。
文檔檢索:隨著部門人員的添加以及文檔數(shù)的日積月累,雖然文檔存儲結(jié)構(gòu)體系簡明清晰,但仍需時間去遍歷。若是在未知部門、上傳者的情況下,文件獲取速度會降低。因此,提供了文檔檢索功能。用戶能夠在輸入框里輸入關(guān)鍵字,即可篩選相關(guān)文件,只要部分字匹配即可,用戶可靈活選擇查詢字句。
以上,實現(xiàn)了文檔管理系統(tǒng)的幾個基本功能模塊,結(jié)合系統(tǒng)整體的業(yè)務(wù)邏輯,一個完備的文檔管理系統(tǒng)就初步設(shè)計開發(fā)就完成了。
4 系統(tǒng)測試
經(jīng)過多次系統(tǒng)業(yè)務(wù)邏輯調(diào)試與系統(tǒng)功能debug以后,系統(tǒng)最終測試結(jié)果如下所述。
4.1用戶功能測試
1)用戶注冊:用戶名不能為空、不能重名;兩次輸入密碼一致方可成功注冊,且不能是非法輸入(空格、非常規(guī)字符),注冊成功后會正確加入并顯示所屬部門。注冊后會自動跳轉(zhuǎn)至用戶登錄界面。
2)用戶登錄:各類用戶有明確區(qū)分,對應(yīng)級別賬戶只能在對應(yīng)頁面成功登錄,不會出現(xiàn)賬戶錯亂。登錄后,成功記錄后通過在cookie中置session存放用戶信息(用戶名、所屬部門),若是沒有登陸的情況下直接在瀏覽器中輸入目標網(wǎng)址,將無法正常顯示頁面,無法使用系統(tǒng)功能。
3)用戶管理:系統(tǒng)管理員可創(chuàng)建部門與其對應(yīng)管理員,管理員不可重名,否則創(chuàng)建失敗。部門管理員可將所有用戶拉入或移出所管理的部門,并正確顯示當前群組成員情況。
4)文檔管理:部門管理員可對其部門的文檔進行權(quán)限管理,分為三級。每點一次權(quán)限按鈕將會提升一級權(quán)限、到頂后又會自動回到最低權(quán)限狀態(tài)。文檔權(quán)限會及時對所有用戶更新,并在文檔后顯示,方便用戶掌握文檔信息(是否可用)。
5)用戶退出:為了保證文檔安全性,用戶在使用完系統(tǒng)后需要進行注銷操作。點擊注銷按鈕后,會清除存留在客戶端瀏覽器cookie中的session并跳轉(zhuǎn)回初始登陸界面。注銷后若不登陸,直接輸入工作頁面地址,將無法獲取文檔信息,使用系統(tǒng)功能。
4.2文檔功能測試
1)上傳文檔:用戶和管理員均可上傳各種類型文檔(大小不超過300M),系統(tǒng)會根據(jù)文檔類型進行自動分類并在用戶的使用界面正確區(qū)分展示。同一部門之間的文檔不可重名(包含類型),但不同部門間可以。上傳過程中,若僅是關(guān)閉瀏覽器,不影響傳輸。若是網(wǎng)絡(luò)中斷或服務(wù)器故障等導致傳輸失敗,文檔信息不會被存入數(shù)據(jù)庫,存儲區(qū)域里也不會有相應(yīng)破損文檔的殘留。
2)下載、預(yù)覽文檔:管理員擁有部門所有文檔的下載、預(yù)覽權(quán)。用戶需要參照文檔權(quán)限,安全級別為Low的文檔可以下載并預(yù)覽,Middle可以預(yù)覽不能下載,High不能下載和預(yù)覽,只有管理員可獲取。下載、預(yù)覽不同部門的同名文件時,能正確找到對應(yīng)文檔,不會出現(xiàn)錯亂。
3)刪除文檔:管理員和上傳者可以對文檔進行移除操作,只要有系統(tǒng)身份鑒權(quán)即可。點擊刪除按鈕后會有彈框提示確認,防止誤操作。刪除后,文檔將從磁盤中移除,且會清空相關(guān)數(shù)據(jù)庫信息。
4)文檔展示:文檔展示根據(jù)部門、上傳時間進行排序;分頁無誤,不會造成文檔亂序?qū)е虏糠直谎谏w;可輸入文件名關(guān)鍵詞(部分匹配)進行查詢,快速且無遺漏。
5 結(jié)論
本論文所開發(fā)的基于Web的文檔管理系統(tǒng),是在對比現(xiàn)有各類文檔管理系統(tǒng)的優(yōu)勢與不足后,綜合現(xiàn)有開發(fā)條件與開發(fā)難度,定位具體應(yīng)用場景所做的一次優(yōu)化開發(fā),測試表明該系統(tǒng)具備功能更加強大,更安全穩(wěn)定。同時,在文檔管理系統(tǒng)的開發(fā)過程中,評價系統(tǒng)的指標不僅僅是單個功能的實現(xiàn)和業(yè)務(wù)邏輯的層疊,還要考慮多用戶并發(fā)。當網(wǎng)絡(luò)負載較大,訪問量較高時,系統(tǒng)是否還能正常運作,是否會出現(xiàn)邏輯紊亂,是否會導致系統(tǒng)相應(yīng)過慢,若有,如何提高運行效率等都是需要被重視的。
參考文獻:
[1] 劉林.基于Web的企業(yè)文檔管理系統(tǒng)的設(shè)計與實現(xiàn)[D].成都:電子科技大學,2012
[2] 王明月.企業(yè)知識文檔檢索管理系統(tǒng)的設(shè)計與實現(xiàn)[D].哈爾濱:哈爾濱工業(yè)大學,2017
[3] Cay S Horstmann. Scala for the Impatient[M].北京:電子工業(yè)出版社, 2012.
[4] David Pllak.BeginningScala[M].901 Grayson Street Suite 204 Berkely,CA USA:Apress,2009.
[5] Ted Neward.Scala programming livelessons(sneak peek video training)[M].USA:Addison-Wesley Professional,2011.
[6] PatrikNordwall. AkkaDocumentation[EB/OL].[2011-12-11] .http://akka.io/docs/.
[7] SébastienDoeraene. ScalaJsIntroduction[EB/OL].[2016-12-21]. http://www.scala-js.org/doc/.
[8] 黃磊.基于Web的項目管理平臺的設(shè)計與實現(xiàn)[D]. 成都:電子科技大學,2016
[9] 劉麗,吳秋云,李軍.基于web的分布式文檔管理系統(tǒng)的設(shè)計與實現(xiàn)[J].計算機工程與科學,2007(1).
【通聯(lián)編輯:唐一東】