冀汶莉,李向軍,戴 旭
(1.西安科技大學 通信與信息工程學院,陜西 西安710032;2.杭州市數(shù)字城管信息處置中心,浙江 杭州310003)
辦公自動化(Office Automation,OA)系統(tǒng)開始于美國,70 年代后期逐步發(fā)展成為一門涉及通信、系統(tǒng)科學等多種技術(shù)的新型學科[1]。第一代OA系統(tǒng)利用個人電腦上的Office,WPS 等辦公軟件,實現(xiàn)了辦公流程中數(shù)據(jù)統(tǒng)計和文檔寫作的電子化。第二代OA 系統(tǒng)引入了協(xié)同工作流的概念,利用網(wǎng)絡技術(shù)基于C/S 結(jié)構(gòu)實現(xiàn)了工作流程自動化。第三代OA 系統(tǒng)是融合信息處理、業(yè)務流程和知識管理于一體的基于B/S 結(jié)構(gòu)的網(wǎng)絡協(xié)同工作階段[2]。中國辦公自動化是80 年代中期才發(fā)展起來的,大多提供公文審批、文檔存儲、管理、查詢這些公眾化功能,遠遠不能適應目前可擴展性、可移動性以及企業(yè)的多樣化的要求。
云計算是隨著互聯(lián)網(wǎng)的發(fā)展而出現(xiàn)的一種先進的理念和技術(shù),在Google,IBM,Amazon 等眾多著名IT 公司的積極推動下迅速發(fā)展[3]。云計算的核心理念是將計算和存儲形成大規(guī)模資源池,通過云平臺的管理和虛擬化技術(shù),使計算資源和存儲資源按照用戶需求進行彈性伸縮,按需提供服務[4]。SaaS(Software as a Service)軟件即服務作為一種新型的軟件架構(gòu)與應用模式,也是云計算所提供的服務之一,近年來得到學術(shù)界和產(chǎn)業(yè)界的廣泛關(guān)注。軟件開發(fā)者可以利用基于云平臺的SaaS 模式,給某類用戶或組織以服務的方式開發(fā)通用或特殊的應用。
目前中小企業(yè)都非常重視企業(yè)辦公自動化的建設(shè)和實施。傳統(tǒng)B/S 模式的辦公自動化軟件系統(tǒng)開發(fā)成本相對較低,但每個中小企業(yè)都需要購置相關(guān)的數(shù)據(jù)庫服務器和應用服務器,還需要定期進行應用系統(tǒng)維護,無形中會增加企業(yè)的運行成本。對于軟件開發(fā)公司也需要針對每個客戶,耗用人力和物力開發(fā)相似的產(chǎn)品。目前隨著云計算在企業(yè)界的出現(xiàn)和快速發(fā)展,以及基于云平臺SaaS 軟件開發(fā)模式的提出,可以更好的解決上述的問題。因此,將OA 系統(tǒng)置于“云”端為眾多企業(yè)提供服務,是文中探索和實踐的方向。由于Google 公司的云平臺是目前技術(shù)最成熟的公有云平臺之一,文中就以Google App Engine 云平臺為基礎(chǔ),實現(xiàn)了一個面向中小企業(yè)的基于云平臺SaaS 模式的OA 系統(tǒng)。
Google 云計算平臺首先為其著名的搜索引擎提供服務,其次為普通用戶提供了一系列基于SaaS 模式的云應用(例如郵件系統(tǒng)、Google 云端文檔系統(tǒng))服務和開發(fā)接口。Google 云計算的基礎(chǔ)架構(gòu)包含四個相互獨立又緊密結(jié)合在一起的系統(tǒng),包括提供分布式文件管理的文件系統(tǒng)Google File System,Google 提出的特有的Map/Reduce 編程模式,分布式的鎖機制Chubby 以及模型簡單的大規(guī)模分布式數(shù)據(jù)庫BigTable[5]。
Google 的GAE 平臺的服務之一是為開發(fā)者提供應用程序托管服務,服務對象是擁有大量并發(fā)用戶的Web 應用系統(tǒng)。在GAE 上運行的應用程序隨著用戶人數(shù)的增多,GAE 會自動為其分配更多的計算和存儲資源,并提供自動管理,應用程序不需要考慮使用資源的分配情況。在GAE 上應用程序所使用的資源包括CPU 使用率、每月存儲容量、出入口帶寬以及其他特定于App Engine 服務。與Web 托管或自管服務不同的是用戶無需按月付費或者預付費,只需要為那些使用到的資源付費。
GAE 可分為3 大塊:運行時環(huán)境、數(shù)據(jù)存儲區(qū)、以及提供的服務。其中與系統(tǒng)開發(fā)關(guān)系密切的是數(shù)據(jù)存儲區(qū)。在GAE 中通過數(shù)據(jù)存儲區(qū)對應用系統(tǒng)提供事務的支持,數(shù)據(jù)存儲區(qū)在其分布式網(wǎng)絡中使用“實體組”實現(xiàn)事務,事務處理單個組中的實體,同一組中的實體存儲在一起以提高事務執(zhí)行效率。在數(shù)據(jù)存儲區(qū)中使用開放式并發(fā)性控制,應用程序可以在一個事務中執(zhí)行多個數(shù)據(jù)存儲區(qū)操作,這些操作要么全部成功要么全部失敗,從而確保了數(shù)據(jù)的完整性[5-6]。在GAE 中提供了基于消息驅(qū)動的服務協(xié)調(diào)技術(shù),可以讓開發(fā)者透明的快速實現(xiàn)業(yè)務流中不同模塊間的互操作。
1.2.1 BigTable 基本概念
在云環(huán)境中也需要某種存儲模式來保存虛擬機映像、用戶的應用和應用所需的持久化數(shù)據(jù),因此在云中也具有數(shù)據(jù)庫的概念。Google 采用Big-Table 作為它的云數(shù)據(jù)庫,BigTable 是“鍵-值”的NoSQL 結(jié)構(gòu)的數(shù)據(jù)模型的典型代表,它的首要任務是保證Google 的快速搜索所涉及的海量數(shù)據(jù)。BigTable 本質(zhì)上是稀疏的、分布式的、持久化存儲的多維度排序Map,它的物理存儲模式采用了類似數(shù)據(jù)結(jié)構(gòu)中B+樹索引組織表的模式,稱為多維度的分類映射,其中的分支和葉節(jié)點可以分布在多臺機器上,通過在成千臺計算機上分布數(shù)據(jù),提供了對PB 級數(shù)據(jù)的快速訪問。由于節(jié)點是分布式的,隨著樹的增長節(jié)點會拆分,根據(jù)應用需求量獲得高伸縮性成為可能[6]。
1.2.2 BigTable 的應用實例
下面是結(jié)合文中的開發(fā)實例給出的一個完整的BigTable 數(shù)據(jù)模型,用來描述公文實體數(shù)據(jù),如下段(1)所示:
其中table 表示一張表,row 表示表中1 行的數(shù)據(jù)。title,content,state,realseState,flowId,create-Time,createTime 為該行的列,setting 為列族包括2列:isSendTelephone,isSendMessage,其中每一列保存不同的版本,以時間戳來區(qū)分。伴隨著行的增多Table 會根據(jù)行鍵自動劃分為tablet,這些tablet會分布在不同的計算機上,tablet 中的數(shù)據(jù)最終會存儲到GFS 文件系統(tǒng)中[7]。
本項目以實際A 公司結(jié)合多家同等公司的需求為開發(fā)背景。A 公司原有的OA 是一個B/S 模式的MIS 系統(tǒng),但該系統(tǒng)已經(jīng)不能適應目前的辦公需要。例如在公文審批的整個環(huán)節(jié)中,當有新公文需要處理或者公文處理失敗和成功時,沒有向相關(guān)人員發(fā)送任何形式的提醒,公司人員只能頻繁的登陸系統(tǒng)查詢公文的處理信息,這嚴重影響了工作效率。該系統(tǒng)也無法擴展移動辦公,同時公司需要能在新OA 系統(tǒng)中可以共享某種常用的辦公軟件(例如電子文檔系統(tǒng))和郵件系統(tǒng),云平臺的出現(xiàn)可以為上述的需求提供一種新的思路。
由于Google 云平臺中不但提供開發(fā)接口,同時也提供SaaS 模式的Google 文檔系統(tǒng)和郵件系統(tǒng),可以在不增加企業(yè)成本的情況下快速創(chuàng)建共享電子文檔、電子表格等協(xié)同應用。因此本項目以Google 的GAE 為開發(fā)平臺,設(shè)計實現(xiàn)了SaaS 模式的OA 系統(tǒng)。
系統(tǒng)包括公文審批、短信管理、人事管理、公告管理、訂餐管理、考勤管理、規(guī)章制度管理、分享平臺及注冊和登錄功能,其中公文審批功能包括待審批公文管理、已審批公文管理、創(chuàng)建公文、創(chuàng)建審批流程等功能。在公文審批中將會伴隨系統(tǒng)消息,發(fā)送郵件提醒,短信發(fā)送等子功能。以上功能都可以按照企業(yè)需求進行有效組合。系統(tǒng)的功能如圖1 所示。
圖1 系統(tǒng)功能圖Fig.1 System module function frame
2.2.1 OA 系統(tǒng)的數(shù)據(jù)模型
數(shù)據(jù)模型是對業(yè)務數(shù)據(jù)的抽象化。GOA 項目主要涉及的數(shù)據(jù)模型有:用戶、部門、公文、工作流程、公文處理、工作流-用戶、任務、短信、群組、群組-用戶、系統(tǒng)消息等。模型如圖2 所示。
2.2.2 GAE 中的Datastore 對象
在Google 云平臺上開發(fā)應用軟件,仍然可以采用目前流行的Web 開發(fā)方法。但GAE 中數(shù)據(jù)存儲是基于BigTable 設(shè)計的,它不是一個關(guān)系型的數(shù)據(jù)庫,更像是一個分布式的、分類的哈希表,這種分布式的設(shè)計讓并行數(shù)據(jù)以及數(shù)據(jù)查詢非常高效[8-9]。本系統(tǒng)開發(fā)的關(guān)鍵問題是如何將數(shù)據(jù)模型的實體形式對應于云平臺的存儲形式,也就是數(shù)據(jù)對象的映射和持久化問題。Google 云平臺通過Datastore 對象提供了數(shù)據(jù)對象的映射和數(shù)據(jù)持久化的支持。
圖2 數(shù)據(jù)模型圖Fig.2 Database model
Datastore 中的對象稱為實體。數(shù)據(jù)存儲區(qū)中的每個實體使用鍵來唯一地標識該實體。每個實體具有一個或多個屬性,支持的數(shù)據(jù)類型是整數(shù)、浮點值、字符串、日期、二進制等常用數(shù)據(jù)類型。Datastore 中的每個實體都屬于一個特定的類型,類型是由應用程序指定的一個名稱。與關(guān)系數(shù)據(jù)庫不同的是,同一類型的2 個實體不必具有相同的屬性。每個實體的唯一鍵的一部分可用作該實體的標識符。應用程序可以分配要在鍵中使用的它自己的標識符(稱為鍵名稱),也可以在首次存儲實體時由數(shù)據(jù)存儲區(qū)分配的數(shù)字ID。由于標識符是鍵的一部分,所以在創(chuàng)建實體后,實體的ID 或名稱無法更改。
2.2.3 GAE 中的持久化對象
GAE 分別支持Java Data Object(JDO)以及Java Persistence API(JPA)2 種標準接口來調(diào)用數(shù)據(jù)對象[10-11]。這2 種接口都允許用戶使用類型安全的Java 類來描述數(shù)據(jù)結(jié)構(gòu)。在本項目中使用JPA來實現(xiàn)數(shù)據(jù)實例化的功能。
JPA(Java Persistence API,Java 持久化API)定義了對象-關(guān)系映射(ORM)以及實體對象持久化的標準接口[12]。在利用JPA 持久化對象時,首先要獲取EntityManager 實例,可以通過在EntityManagerFactory 類的實例上實例化并調(diào)用一個方法來獲取此實例。如以下代碼(2)所示。
通過Psistent 類,可以創(chuàng)建EntityManager 實例,如以下代碼(3)所示。
當獲取到Entity Manager 對象,就可以調(diào)用其API 提供的方法對數(shù)據(jù)做存儲、更新、查詢、刪除的操作。
如以下代碼(4)執(zhí)行對User 對象的保存。
如以下代碼(5)執(zhí)行對User 對象的查找。
如以下代碼(6)執(zhí)行對User 對象的更新。
如以下代碼(7)執(zhí)行對User 對象的刪除。
應用系統(tǒng)采用Struts2. 0 + spring3. 0 開源框架,開發(fā)語言采用Java 語言。在Eclipse 4.2 的開發(fā)工具下,需要安裝Google App Engine Java SDK 1.7.7,它是GAE 支持Java 開發(fā)應用的軟件開發(fā)工具包;以及Eclipse4.2 版本專用的Google 插件程序Google Plugin for Eclipse 4.2[12]。
1)系統(tǒng)的主要模塊-公文審批具體實現(xiàn)如圖3 所示。
2)公文流轉(zhuǎn)的過程會伴隨著短信息的發(fā)送,本項目將短信功能獨立出來,不但可以嵌入公文審批功能中,給用戶發(fā)送短信提醒,而且可以作為一個獨立的功能模塊,提供給用戶發(fā)送短信。
圖3 審批公文模塊Fig.3 Archives examine and approve modular
短信功能模塊主要包括短信發(fā)送、群組管理、黑名單管理和已發(fā)送短信。短信模塊功能采用了SMGP 形式,SMGP 是GOA 項目中的短信模塊和運營商網(wǎng)管之間的橋梁。短息模塊通過Http 的形式,將數(shù)據(jù)提交給SMGP,SMGP 最終將短信提交給運營商網(wǎng)管。系統(tǒng)成功的在云平臺下的Web 系統(tǒng)中調(diào)用非云平臺下的系統(tǒng)。在SMGP 中采用線程池的技術(shù)來處理短信的發(fā)送,具體處理流程如圖4所示。
圖4 SMGP 處理短信流程Fig.4 SMGP note-dealing note modular
系統(tǒng)的具體實現(xiàn)如圖5 所示。
圖5 發(fā)送短信Fig.5 Note-sending modular
3)可定制化。本項目是以企業(yè)的實際OA 需求出發(fā),每個公司都可以根據(jù)自己實際需求在該項目中定制相應的功能。中小企業(yè)以租用SaaS 服務的方式申請這些服務的使用權(quán),基于Web 使用這些服務,管理自己的數(shù)據(jù),以滿足企業(yè)多樣化的需求[13]。下圖為2 個不同的企業(yè)所定制的GOA系統(tǒng)。
4)項目開發(fā)完成后,需要在GAE 中部署應用程序。
圖6 不同公司需求的定制化服務Fig.6 Custom-made service modular
首先需要線下編輯工程war 目錄下的appengine-web.xml 文件,將 <application ></application >元素更改為已注冊的ID:GOA. 隨后選擇google- >deploy to app engine,點擊配置工程信息,配置好工程信息以后,就可以將工程上傳到GAE 云平臺之上。GAE 提供了Eclipse Google Plugins 的上傳界面來將應用程序上傳到GAE 云平臺中。工程上傳以后,可以在GAE 的應用管理頁面看到上傳的應用,完成部署。
當部署完成后,用戶利用GoAgent 代理服務器(Google App Engine 的服務器充當代理),通過瀏覽器就可以進行功能使用和訪問。用戶不但可以體驗利用Google 云平臺的數(shù)據(jù)存儲和并行處理的優(yōu)勢提供的應用軟件按需服務,同時還可以共享Google 的云端的文檔系統(tǒng)及郵件系統(tǒng),增加OA 系統(tǒng)的網(wǎng)絡協(xié)同和共享特性。
本系統(tǒng)分別在普通環(huán)境下和GAE 環(huán)境下測試,其中普通環(huán)境下的數(shù)據(jù)庫采用MySql. 測試主要包括數(shù)據(jù)存儲,讀取速率的測試以及系統(tǒng)性能測試。在進行數(shù)據(jù)存儲、讀取速率測試時,測試了同時插入以及讀取100、1000、10000 條數(shù)據(jù)的所需時間。性能測試主要測試ART(AverageResponse-Time,平均響應時間)和TPS(RequestsPerSeeond,每秒可相應的請求數(shù))。測試結(jié)果見表1.
表1 普通環(huán)境數(shù)據(jù)讀寫速度Tab.1 Data reading and writing speed in normal circumstances
表2 GAE 環(huán)境數(shù)據(jù)讀寫速度Tab.2 Data reading and writing speed in GAE
表3 GAE 環(huán)境下系統(tǒng)壓力測試Tab.3 System stress test in GAE
從表1 和表2 可以看出,GAE 環(huán)境中BigTable的存儲速率遠遠大于普通環(huán)境下數(shù)據(jù)的存儲速讀,并且隨著數(shù)據(jù)量的增大,這種優(yōu)勢會越來越大。但是GAE 環(huán)境中數(shù)據(jù)的讀取速率小于普通環(huán)境下數(shù)據(jù)讀取的速率,這與BigTable 的設(shè)計有關(guān),BigTable 并不完全支持關(guān)系數(shù)據(jù)庫,在數(shù)據(jù)的查詢中沒有像關(guān)系數(shù)據(jù)庫那樣對查詢做了優(yōu)化。由于Web 系統(tǒng)中大數(shù)據(jù)量的獲取可以通過分頁技術(shù)實現(xiàn)數(shù)據(jù)的分批加載,因此可以忽略BigTable 讀取數(shù)據(jù)速率方面的不足。
表3 描述了在GAE 環(huán)境下系統(tǒng)的性能測試結(jié)果。性能測試采用Loadruuner 自動化測試化工具,測試分2 組進行。第一組設(shè)定200 個vuser(虛擬用戶),第二組設(shè)定400 個vuser,2 組的測試時間均為2 min.從圖中可以看出隨著虛擬用戶的增加,用戶請求數(shù)會增多,同時也會有部分丟失的情況,但是這與并發(fā)用戶數(shù)有關(guān),而實際情況并不會有如此高的并發(fā)。2 組測試數(shù)據(jù)的ART 結(jié)果,符合Web 壓力測試標準,可見系統(tǒng)的性能良好。
從上面的分析可以看出,GAE 環(huán)境下的Web應用在數(shù)據(jù)的存儲以及性能方面均高于普通環(huán)境中的Web 應用。GAE 環(huán)境下的Web 應用在數(shù)據(jù)讀取方面等同于傳統(tǒng)的基于關(guān)系數(shù)據(jù)庫的應用系統(tǒng)。
文中分析了傳統(tǒng)OA 系統(tǒng)的缺陷,提出了將云計算技術(shù)應用于傳統(tǒng)OA 系統(tǒng)。根據(jù)大多高科技中小企業(yè)的實際需求,基于GAE 平臺設(shè)計并實現(xiàn)了一個云端的OA 系統(tǒng)。并將其成功的部署到Google 云平臺下,目前系統(tǒng)運行穩(wěn)定,正在對A 企業(yè)提供OA 系統(tǒng)的支持。作者通過對本系統(tǒng)的設(shè)計和開發(fā),認為目前在云端適合開發(fā)部署一些基于請求-應答的高伸縮性的互聯(lián)網(wǎng)應用系統(tǒng)(例如電子商務系統(tǒng));或一些非戰(zhàn)略的不涉及多表關(guān)聯(lián)查詢的公共應用系統(tǒng),例如人事管理系統(tǒng)、OA系統(tǒng);還可以應用在智慧城市的建設(shè)中。
References
[1] 薛 涵,張靜芳,趙 寧.融入知識管理的高校圖書館OA 系統(tǒng)研究[J]. 情報科學,2013,31(1):140 -144.XUE Han,ZHANG Jing-fang,ZHAO Ning. Reacher on university library office automation system integrated into advanced idea of kowledge management[J].Information Science,2013,31(1):140 -144.
[2] 莊 玫,何 玉,向 陽.清華大學圖書館協(xié)同辦公體系基于Web 2.0 的實踐與思考[J].高校圖書館工作,2011,31(4):19 -21.ZHUANG Mei,HE Yu,XIANG Yang. Practice and research of the collaborative office system in Tsinghai university library based on Web2.0[J].Bulletin of College Library,2011,31(4):19 -21.
[3] 翟 勃,劉 柯.基于云計算的煤炭企業(yè)電子采購系統(tǒng)研究與設(shè)計[J].西安科技大學學報,2012,32(2):255 -261.ZHAI Bo,LIU Ke. Design of e-procurement system of coal enterprises based on cloud computing[J]. Journal of Xi’an University of Science and Technology,2012,32(2):255 -261.
[4] 王 磊,陳 剛,陸忠華.基于云計算的高效科學計算應用軟件框架[J]. 華中科技大學學報,2011,39(1):167 -172.WANG Lei,CHEN Gang,LU Zhong-hua. Cloud-based software framework for efficient scientific computing[J]. Journal of Huazhong University of Science and Technology,2011,39(1):167 -172.
[5] 邢文凱,翟玉梅.面向用戶的通用云計算平臺負載均衡機制[J].科學技術(shù)與工程,2012,12(12):1 671 -1 815.XING Wen-kai,ZHAI Yu-mei. Vertical deformation analysis on mixed structure considering the load simulation methods and the time-varying performance of concrete[J].Science Technology and Engineering,2012,12(12):1 671 -1 815.
[6] 蘭建文,劉 敏,任高峰.多業(yè)態(tài)企業(yè)安全生產(chǎn)管理信息系統(tǒng)設(shè)計與實現(xiàn)[J].西安科技大學學報,2012,32(4):532 -538.LAN Jian-wen,LIU Min,REN Gao-feng.Design and implementation of multi-format enterprise safety production management information system[J]. Journal of Xi’an University of Scinece and Technology,2012,32(4):532-538.
[7] Demirkan Haluk,Cheng Hsing Kenet,Bandyopadhyay Subhajyoti. Coordination strategies in an SaaS supplychain[J]. Journal of Management Information Systems,2010,26(4):119 -143.
[8] 王 磊,陳 剛,陸忠華.基于云計算的高效科學計算應用軟件框架[J]. 華中科技大學學報,2011,39(1):167 -172.WANG Lei,CHEN Gang,LU Zhong-hua. Cloud-based software framework for efficient scientific computing[J]. Journal of Huazhong University of Science and Technology,2011,39(1):167 -172.
[9] Gonzalez H,Halevy A Y,Jensen C S,et al. Google fusion tables:Web-centered data management and collaboration[C]//Acm Sigmod 2010:Proceedings of the ACM SIGMOD International Conference on Management of Data,Indianapolis,Indiana,USA,New York:ACM Press,2010.
[10] 王意潔,孫偉東,周 松,等.云計算環(huán)境下分布存儲關(guān)鍵技術(shù)[J].軟件學報,2012,23(4):962 -986.WANG Yi-Jie,SUN Wei-Dong,ZHOU Song,et al. Key technologies of distributed storage for cloud computing[J].Journal of Software,2012,23(4):962 -986.
[11] 丁雪芳,張 銳.一種基于場景的輕量級軟件架構(gòu)分析方法[J].西安科技大學學報,2011,31(5):636 -672.DING Xue-fang,ZHANG Rui.A scenario-based software architecture analysis method[J].Journal of Xi’an University of Science and Technology,2011,31(5):636 -672.
[12] 龔尚福,王艷軍.多線程保護應用程序自動加載研究與實踐[J].西安科技大學學報,2013,33(2):230 -236.GONG Shang-fu,WANG Yan-jun. Research and Practice of automatic loading of applications based on multi threaded Protection[J]. Journal of Xi’an University of Scinece and Technology,2013,33(2):230 -236.
[13] 林子雨,賴永炫,林 琛,等.云數(shù)據(jù)庫研究[J].軟件學報,2012,23(5):1 148 -1 166.LIN Zi-yu,LAI Yong-xuan,LIN Chen,et al. Research on cloud databases[J]. Journal of Software,2012,23(5):1 148 -1 166.