999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Android平臺的EAST文檔管理系統的設計與開發

2018-07-25 11:22:04
計算機應用與軟件 2018年7期
關鍵詞:數據庫系統

劉 鴻 王 楓

1(中國科學院等離子體物理研究所 安徽 合肥 230031) 2(中國科學技術大學 安徽 合肥 230022)

0 引 言

EAST Document Management(EDM)是一個兼具豐富文檔管理功能、強大用戶管理與權限控制功能和多版本工作流控制功能的集成在線文檔管理系統[1],用來集中管理國家大科學工程項目全超導托卡馬克實驗裝置EAST[2]相關的文檔。目前已有的EDM文檔管理系統是基于Web端的開發,對文檔的操作需要借助PC端。這不利于實驗人員及時地獲取與實驗相關的文檔信息。而隨著移動設備的不斷普及,人們上網的習慣也逐漸由PC端向移動端轉變,所以需要開發一套基于移動平臺的EAST文檔管理系統,在原有的系統基礎上進行有效的補充、擴展和延伸,保證通信安全和文檔存儲安全的前提下方便科研人員在移動設備上對文檔進行增刪改查[3]。

Android平臺是Google旗下的一款開源的手機操作系統,開源的特點使得國內廠商可以對操作系統進行定制生產。相對于Apple公司的Iphone手機,Android手機可以防止系統本身對信息的泄漏。經調研EAST科研人員87.4%使用的是Android操作系統手機,因此設計開發基于Android平臺的EAST文檔管理系統是可取的。

1 系統的總體框架設計

1.1 總體框架

Android平臺EAST文檔管理系統總體框架分為三個部分[4],如圖1所示。中間部分是服務器,兩邊分別是客戶端和數據庫。客戶端通過PHP訪問接口和服務器相連,服務器通過數據庫接口和數據庫相連,客戶端和數據庫不能直接通信。這樣的架構設計,既可以保證數據庫的安全,將客戶端和數據庫隔離,又可以方便客戶端的調用。讓客戶端只關心數據內容,而不用關心怎么從數據庫中獲取數據。

圖1 系統總體框架

1.2 客戶端框架設計

如圖2所示,客戶端中設計一個自定義的棧結構,可以在同一個Activity容器中進行無限層級文件夾目錄操作,如文件夾的進入、退出、任意層級跳轉等。同時在客戶端中封裝了可擴展的文檔元數據父類。繼承該類的不同文檔子類可以在同一目錄中同時顯示,不需要多次請求數據來展示,從而提高了用戶體驗。

圖2 客戶端框架

1.3 服務器框架設計

服務器是系統設計的重要組成部分,它決定了用客戶端什么方式請求數據,用什么格式解析數據,系統的服務器使用通用的LAMP架構[5],并使用Apache提供接口的訪問操作,使用PHP提供對數據庫的增刪改查。如圖3所示。

圖3 服務器框架

2 系統實現

2.1 短信驗證的實現

移動客戶端的驗證功能大部分都是基于短信平臺,目前市場是有眾多的短信驗證平臺,如阿里云短信驗證平臺等。這些平臺的優勢是封裝了功能代碼,開發者可以直接使用,缺點是客戶端的驗證功能需要依賴于平臺的存在而存在,如果平臺停止服務,系統驗證功能將會失效。這與本系統輕量級低耦合高安全性的目標不相符,因此我們需要設計基于短信貓硬件開發自己的短信驗證功能[6]。

短信貓是一個提供短信發送功能的裝置,配置完成后,可以向SQL server數據庫的outbox表中寫入目標電話,發送內容,短信貓會自動將內容發送出去。基于此特點,設計短信驗證接口。

接口內部實現如下:

1) 提供post請求,并接收3個參數:

“telephone_number”=”value1”

“user_name”=”value2”

“secret_key”=”value3”

其中:telephone_number表示目標電話,user_name表示調用者是誰,secret_key表示平臺和服務器約定的密鑰。

2) 自動生成一個6位數的驗證碼作為發送內容。

3) 訪問SQL server數據庫,向outbox表中寫入目標電話,短信內容。

4) 短信貓監控程序自動發送內容到目標手機。

5) 結果以json格式返回給客戶端:

[{ ″result_code ″: ″value1″,

″ result ″: ″value2″}]

result_code值為-1,-2,-3等。其中:

-3:sqlserver數據庫操作失敗

-2:telephone為空

-1:telephone不為空但格式不正確

1:短信發送正常

在result_code為1時候,result值才是有效的。此時可以對比result值與用戶輸入的驗證碼,如果一致則驗證通過。

2.2 目錄顯示的實現

目錄顯示是本系統的特點之一,Android平臺沒有自帶的控件可以實現無限層級的目錄顯示,需要根據系統的特點設計一個合理的數據結構。考慮到目錄操作的特點,如點擊進入、返回退出、向前任意層級跳轉,這樣的操作類似于棧的先進后出的特點,基于此特點設計了基于堆棧式文檔[7]并列顯示功能。如圖4從左到右分別是L-test目錄的進棧操作,L-test目錄的出棧操作,以及直接跳轉到User-L目錄的出棧操作。其中任意層級的跳轉,需要把該層級上面的內容全部移除,這與棧的操作也非常吻合。自定的目錄棧操作既保證了系統的封閉特點,又解決了無限層級的目錄訪問問題。

圖4 自定義目錄棧操作

public class ProfileStack {

boolean isEmpty();

//棧是否為空

void clear();

//清空棧

int length();

//棧的長度

boolean push(Profile p);

//文檔集合進棧

Profile pop();

//彈出棧頂文檔集合

Profile peek()

//查看棧頂文檔集合但不移除

}

其中Profile類封裝了Path類和File類,這使得目錄棧結構并不是簡單的一維Path路徑類結構,而是同時包含多格式多類型的File文檔類的二維結構。

從數據庫獲取到的數據是一種多格式多類型元數據,對于這樣數據的解析。存儲和展示是本系統的另外一個難點,即目錄和文檔的并列顯示問題。

2.3 目錄和文檔并列顯示實現

通常情況下,每個層級不僅僅只有目錄文件夾,還可能會有具體的文檔存在,如pdf文檔。這種并列存在的形式,對目錄棧結構的設計有了更高的要求,如果從簡單的角度考慮,目錄文件夾和具體的文檔可以看成統一的文件形式共同存儲在數據庫的同一張表中。但是EAST文檔管理系統是對一個大科學工程的海量文檔進行管理,所有的數據元的設計都是合理和嚴謹的,所以在數據庫中目錄文件夾和具體的文檔是存在不同的表中,并沒有放在同一張表中,這也體現系統設計的完整性和難度所在。

數據庫中目錄文件夾和具體文檔是不同類別的存儲,在客戶端中需要設計一個從解析、存儲到展示為一體的方法來解決這個問題。并且,隨著EAST每年實驗的不斷推進,未來會有更多種類的數據元存儲在系統中,預留合適的接口方便后面擴展也十分重要。

在目錄和文檔并列顯示的要求下,客戶端的開發中,本文實現了一整套的文件繼承關系。基于此繼承關系的文件,可以無視客戶端接收數據的不同,將原本存儲在不同的表中的數據,進行分類解析,同類保存,然后再分類顯示。這種由分類,到同類再到分類的過程,是父類對象和子類對象相互轉化的過程,體現了面向對象語言的友好之處,可以更加靈活地對不同數據進行操作。文檔類的整體架構和繼承關系如圖5所示。

圖5 文檔UML類圖

基于這樣的類結構,可以在不知道哪種類型文檔的情況下,使用父類File表示所有的文檔。在具體要顯示文檔信息的時候,通過父類的type變量判斷文檔的具體類型,并強制轉換成對應的文檔類型,獲取子對象的各種變量值進行展示即可。未來即使有更多的文檔元數據添加進來,如vedio格式的元數據,只要這些類統一繼承自File類,依然可以使用相同的方法就行文檔類別的判斷、轉化、展示。

2.4 文檔的工作流實現

文檔的工作流是EAST文檔管理系統的重要組成部分。一般的文檔管理系統的文檔都是靜態的,或者是單工作流。EAST的文檔是多區域科研人員協同工作的成果,所以文檔的工作流是非靜態,多線路的工作流。圖6是文檔工作流的具體流程。

圖6 文檔工作流圖

由圖6可知,同一個文檔有一個作者,但是可以有一個或多個合作者,所有的作者和合作者可以并行地對文檔進行簽署,所有的簽署完成以后才會進入審批狀態,審批人可以設置通過,也可以拒絕通過。在整個工作流中,還可以有多個評閱人對文檔進行審閱評論,評閱人只能評論不能更改流程狀態。基于以上特點,很容易開發出基于多通道的文檔工作流。

2.5 文檔的版本控制實現

文檔的版本控制與工作流結合起來,變成了一個復雜的多通道并行推進的流程。版本工作流狀態將影響版本更迭過程,current版本必須是所有沒有過時(非obsolete)版本中最成熟的版本,即工作流狀態級別最高的版本。帶工作流的版本迭代規則[8]如圖7所示。

圖7 文檔版本控制圖

由圖7可知,帶工作流的版本控制主要分成三個部分。

1) 新建的文檔默認是最新的文檔,也就是current版本。

2) 如果更新文檔,將更新文檔的工作流和該文檔在數據庫中最成熟工作流進行比較,如果大于,說明更新的文檔是最讓人滿意的文檔,用更新的文檔替換現在的文檔,并讓current指向更新的文檔,其他文檔都設置為obsolete;如果小于,說明原來的文檔最讓人滿意,那么current指向不變。

3) 如果數據庫中非obsolete文檔的狀態變化,變化的文檔就相當于2)中更新的文檔,那么回到2)中比較狀態流成熟度的判定條件來決定current指向哪個文檔。

2.6 文檔的檢測與上傳實現

1) 文檔擴展名檢測。為了保護服務器的安全,防止惡意程序如exe等非法文件上傳,系統對上傳的文檔類型有嚴格的要求。同時為了避免將exe文件改變拓展名如demo.exe改成demo.txt而被上傳到服務器,系統會在文檔上傳前用非文檔名的方法判斷擴展名具體實現方式是通過文檔路徑名獲取File實例,并使用getName()方法獲取真實的文檔名稱。獲取到文件名后,用String的endsWith(″.*″)方法判斷是否是指定的文件。其中*可以是doc、pdf等擴展名,如果文檔擴展名是系統限定類型之內的,將會通過檢測。

2) 文檔內容檢測。文檔上傳前還需要對內容進行檢測,是否包含敏感詞匯,是否包含操作數據庫特定表的SQL語句。借助于jxl.jar、tm-extractors-0.4.jar等jar包可以對xls、doc等文檔進行解析,并與系統設置的敏感詞匯,敏感SQL語句模糊匹配,如果沒有查找到,則通過檢測。

3) 文檔上傳。對于已經通過檢測的文檔,可以使用基于OKHttp框架的post方式進行文檔上傳。客戶端中的post上傳其實就是模擬了表單提交,只要把發送的文件信息拼接到頭里面,但是這里的頭信息一定要按照規范格式去寫,OKHttp中的addFormDataPart(String name, String filename, RequestBody body)方法,已經實現了具體格式的封裝,按要求傳入即可完成上傳操作。

2.7 文檔的下載和保護實現

文檔的下載過程中,服務器端通過下載函數接口隱藏文檔在服務器的真實路徑,下載的路徑設置為url+下載函數+文檔標識符eid+文檔版本號。例如需要下載文檔的eid為AAAA,版本號為2.0的文檔的下載路徑為https://edm.ipp.ac.cn/file_download/AAAA/2.0。該方法規避了客戶端必須獲取文檔真實路徑的來下載文檔的風險。

考慮到EAST文檔下載后的安全性,不能將普通數據與EAST數據混合存儲,在開發中主要用到Android中的context.getExternalFileDir(String type)方法,將文檔存儲在客戶端包名下的files文檔目錄下。這個目錄理論上別的應用是無法訪問的,也就不會導致信息泄。但是Android系統很多都被root過,獲得root權限的惡意應用仍然有可能獲取文檔的內容,所在下載之后,對文檔進行了MD5加密措施,雙重保護文檔。

當需要查看文檔的時候,開啟輔助線程,將文檔復制到sdcard公用目錄中,然后進行解密操作,最后使用intent.setDataAndType(Uri.fromFile(new File(filename)), "application/*")方法來打開對應文檔。當客戶端退出時候,會強制刪除sdcard公用目錄中的文檔。

2.8 其他功能實現

系統的登錄、多語言的支持、快捷方式的創建、文檔的查詢刪除、文檔的評論等功能,都是基于OKhttp開源框架與服務器的可靠通信。如果數據在無加密的傳輸通道或以明文方式進行傳輸,使得數據容易被監聽或篡改[9]。為了保證通信的可靠性,服務器由http升級為https,同時還在參數中使用約定的加密參數[10],確保訪問者是已知用戶。客戶端獲取到服務器的json格式數據,對數據解析,并顯示在客戶端中,類似的方法,可以實現客戶端的其他基本功能。

3 系統測試總結

3.1 安全測試

EAST文檔數據的安全性是系統設計過程中的重要部分,因此對PHP接口和本地文檔進行了單獨測試。對于本地下載的文檔,使用了已經root和沒有root兩部手機測試。結果表明,雖然已經root的手機可以訪問本地文檔,但是因為經過加密操作,打開的文檔為亂碼。沒有root的手機,無法訪問到本地文檔,系統在一定程度上保證了安全性。

3.2 壓力測試

為了保證科研人員高并發使用Android平臺的EAST文檔管理系統,需要進行壓力測試。在某個客戶端中開啟1 000個線程訪問服務器,同時使用部分真機和虛擬機一起訪問服務器,測試結果表現良好,真機訪問并沒有因為其他設備訪問而受到影響。

3.3 性能測試

性能測試工具采用了網易公司的Emmagee工具。它是網易公司開發的一個Android性能檢測工具,主要檢測APP的CPU占用率,內存占用率和流量使用情況,同時開發者可以自定義配置監控的頻率并顯示結果,最終生成一份性能統計文件[11]。

本文使用的是Emmagee2.5.1版本軟件,對基于Android平臺的EAST文檔管理系統就行性能檢測。Emmagee工具生成的是csv格式文本,可以先導入到Excel中,再生成相應的圖表。Emmagee檢測報告單如圖8所示,基于檢測報告單的CPU使用率,如圖9所示。

圖9 CPU使用率

由圖8可知,客戶端的流量損失量低,當沒有文檔的上傳下載時候基本不耗流量。由圖9可知,客戶端在使用階段,CPU占有率處于合理位置,不需要消耗過多的系統資源,系統可靠性強,流量穩定,電量消耗少,總體來看系統可以滿足科研人員的正常使用。

4 結 語

為了滿足與EAST相關的科研人員快速準確地獲取文檔信息,本文設計開發了基于Android平臺的EAST文檔管理系統,并保證通信安全,文檔存儲安全的前提下,對EAST文檔進行工作流控制、版本控制、以及文檔上傳、下載、查詢、刪除等基本操作。系統整體設計高效安全兼容性好,文檔類的繼承關系使得文檔類型的可擴展性強。基于Android平臺的EAST文檔管理系統已經在實驗中使用,并收到了良好的預期效果。

猜你喜歡
數據庫系統
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
WJ-700無人機系統
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
基于PowerPC+FPGA顯示系統
半沸制皂系統(下)
連通與提升系統的最后一塊拼圖 Audiolab 傲立 M-DAC mini
數據庫
財經(2017年15期)2017-07-03 22:40:49
數據庫
財經(2017年2期)2017-03-10 14:35:35
數據庫
財經(2016年15期)2016-06-03 07:38:02
數據庫
財經(2016年3期)2016-03-07 07:44:46
主站蜘蛛池模板: 亚洲五月激情网| 波多野结衣一区二区三区88| 亚洲成a人片在线观看88| 日本黄色不卡视频| 天天摸夜夜操| 中文毛片无遮挡播放免费| 欧美另类第一页| 欧美一区二区三区不卡免费| 色婷婷久久| 日本国产精品| 亚洲人成人伊人成综合网无码| 国产成人免费视频精品一区二区| 国产女人18水真多毛片18精品| 久久公开视频| 国产农村1级毛片| 国产精品第| 曰AV在线无码| 精品少妇三级亚洲| 亚洲欧洲自拍拍偷午夜色| 亚洲精品午夜天堂网页| 国产精品粉嫩| 日韩欧美国产成人| 国产精品欧美亚洲韩国日本不卡| 亚洲综合久久成人AV| 免费国产一级 片内射老| 热久久综合这里只有精品电影| 日本高清免费不卡视频| 欧美在线中文字幕| 国内老司机精品视频在线播出| 久久黄色一级片| 手机在线看片不卡中文字幕| 久久国产精品波多野结衣| 精品国产一区二区三区在线观看| 色视频国产| 国产无码网站在线观看| 亚洲av中文无码乱人伦在线r| 精品久久蜜桃| 亚国产欧美在线人成| 国产视频一区二区在线观看 | 亚洲av无码牛牛影视在线二区| 国产香蕉在线| 精品免费在线视频| 国产欧美视频一区二区三区| 国产精品免费久久久久影院无码| 亚洲精品第1页| 看国产毛片| 人人爱天天做夜夜爽| 国产成人综合亚洲欧美在| 伊人久久大香线蕉aⅴ色| 人禽伦免费交视频网页播放| 永久免费无码成人网站| 亚洲人成网站在线观看播放不卡| 久久特级毛片| 久久综合色视频| 狠狠色婷婷丁香综合久久韩国| 狼友av永久网站免费观看| 欧美日韩亚洲综合在线观看| 国内精品久久人妻无码大片高| 国产一区免费在线观看| 中文字幕调教一区二区视频| 91国语视频| 亚洲国产成人久久77| 中文字幕1区2区| 亚洲免费人成影院| 久久这里只精品国产99热8| 69免费在线视频| 欧亚日韩Av| 国产欧美亚洲精品第3页在线| 又黄又湿又爽的视频| 欧美不卡视频在线观看| 欧美啪啪精品| 乱人伦视频中文字幕在线| 欧美精品aⅴ在线视频| 99热最新在线| 91视频区| 狠狠v日韩v欧美v| 五月丁香在线视频| 国产精品香蕉在线| 蜜桃视频一区二区| 国产成人精品在线1区| 91精品国产自产在线老师啪l| 在线永久免费观看的毛片|