冀汶莉,李向軍,戴 旭
(1.西安科技大學 通信與信息工程學院,陜西 西安710032;2.杭州市數字城管信息處置中心,浙江 杭州310003)
辦公自動化(Office Automation,OA)系統開始于美國,70 年代后期逐步發展成為一門涉及通信、系統科學等多種技術的新型學科[1]。第一代OA系統利用個人電腦上的Office,WPS 等辦公軟件,實現了辦公流程中數據統計和文檔寫作的電子化。第二代OA 系統引入了協同工作流的概念,利用網絡技術基于C/S 結構實現了工作流程自動化。第三代OA 系統是融合信息處理、業務流程和知識管理于一體的基于B/S 結構的網絡協同工作階段[2]。中國辦公自動化是80 年代中期才發展起來的,大多提供公文審批、文檔存儲、管理、查詢這些公眾化功能,遠遠不能適應目前可擴展性、可移動性以及企業的多樣化的要求。
云計算是隨著互聯網的發展而出現的一種先進的理念和技術,在Google,IBM,Amazon 等眾多著名IT 公司的積極推動下迅速發展[3]。云計算的核心理念是將計算和存儲形成大規模資源池,通過云平臺的管理和虛擬化技術,使計算資源和存儲資源按照用戶需求進行彈性伸縮,按需提供服務[4]。SaaS(Software as a Service)軟件即服務作為一種新型的軟件架構與應用模式,也是云計算所提供的服務之一,近年來得到學術界和產業界的廣泛關注。軟件開發者可以利用基于云平臺的SaaS 模式,給某類用戶或組織以服務的方式開發通用或特殊的應用。
目前中小企業都非常重視企業辦公自動化的建設和實施。傳統B/S 模式的辦公自動化軟件系統開發成本相對較低,但每個中小企業都需要購置相關的數據庫服務器和應用服務器,還需要定期進行應用系統維護,無形中會增加企業的運行成本。對于軟件開發公司也需要針對每個客戶,耗用人力和物力開發相似的產品。目前隨著云計算在企業界的出現和快速發展,以及基于云平臺SaaS 軟件開發模式的提出,可以更好的解決上述的問題。因此,將OA 系統置于“云”端為眾多企業提供服務,是文中探索和實踐的方向。由于Google 公司的云平臺是目前技術最成熟的公有云平臺之一,文中就以Google App Engine 云平臺為基礎,實現了一個面向中小企業的基于云平臺SaaS 模式的OA 系統。
Google 云計算平臺首先為其著名的搜索引擎提供服務,其次為普通用戶提供了一系列基于SaaS 模式的云應用(例如郵件系統、Google 云端文檔系統)服務和開發接口。Google 云計算的基礎架構包含四個相互獨立又緊密結合在一起的系統,包括提供分布式文件管理的文件系統Google File System,Google 提出的特有的Map/Reduce 編程模式,分布式的鎖機制Chubby 以及模型簡單的大規模分布式數據庫BigTable[5]。
Google 的GAE 平臺的服務之一是為開發者提供應用程序托管服務,服務對象是擁有大量并發用戶的Web 應用系統。在GAE 上運行的應用程序隨著用戶人數的增多,GAE 會自動為其分配更多的計算和存儲資源,并提供自動管理,應用程序不需要考慮使用資源的分配情況。在GAE 上應用程序所使用的資源包括CPU 使用率、每月存儲容量、出入口帶寬以及其他特定于App Engine 服務。與Web 托管或自管服務不同的是用戶無需按月付費或者預付費,只需要為那些使用到的資源付費。
GAE 可分為3 大塊:運行時環境、數據存儲區、以及提供的服務。其中與系統開發關系密切的是數據存儲區。在GAE 中通過數據存儲區對應用系統提供事務的支持,數據存儲區在其分布式網絡中使用“實體組”實現事務,事務處理單個組中的實體,同一組中的實體存儲在一起以提高事務執行效率。在數據存儲區中使用開放式并發性控制,應用程序可以在一個事務中執行多個數據存儲區操作,這些操作要么全部成功要么全部失敗,從而確保了數據的完整性[5-6]。在GAE 中提供了基于消息驅動的服務協調技術,可以讓開發者透明的快速實現業務流中不同模塊間的互操作。
1.2.1 BigTable 基本概念
在云環境中也需要某種存儲模式來保存虛擬機映像、用戶的應用和應用所需的持久化數據,因此在云中也具有數據庫的概念。Google 采用Big-Table 作為它的云數據庫,BigTable 是“鍵-值”的NoSQL 結構的數據模型的典型代表,它的首要任務是保證Google 的快速搜索所涉及的海量數據。BigTable 本質上是稀疏的、分布式的、持久化存儲的多維度排序Map,它的物理存儲模式采用了類似數據結構中B+樹索引組織表的模式,稱為多維度的分類映射,其中的分支和葉節點可以分布在多臺機器上,通過在成千臺計算機上分布數據,提供了對PB 級數據的快速訪問。由于節點是分布式的,隨著樹的增長節點會拆分,根據應用需求量獲得高伸縮性成為可能[6]。
1.2.2 BigTable 的應用實例
下面是結合文中的開發實例給出的一個完整的BigTable 數據模型,用來描述公文實體數據,如下段(1)所示:

其中table 表示一張表,row 表示表中1 行的數據。title,content,state,realseState,flowId,create-Time,createTime 為該行的列,setting 為列族包括2列:isSendTelephone,isSendMessage,其中每一列保存不同的版本,以時間戳來區分。伴隨著行的增多Table 會根據行鍵自動劃分為tablet,這些tablet會分布在不同的計算機上,tablet 中的數據最終會存儲到GFS 文件系統中[7]。
本項目以實際A 公司結合多家同等公司的需求為開發背景。A 公司原有的OA 是一個B/S 模式的MIS 系統,但該系統已經不能適應目前的辦公需要。例如在公文審批的整個環節中,當有新公文需要處理或者公文處理失敗和成功時,沒有向相關人員發送任何形式的提醒,公司人員只能頻繁的登陸系統查詢公文的處理信息,這嚴重影響了工作效率。該系統也無法擴展移動辦公,同時公司需要能在新OA 系統中可以共享某種常用的辦公軟件(例如電子文檔系統)和郵件系統,云平臺的出現可以為上述的需求提供一種新的思路。
由于Google 云平臺中不但提供開發接口,同時也提供SaaS 模式的Google 文檔系統和郵件系統,可以在不增加企業成本的情況下快速創建共享電子文檔、電子表格等協同應用。因此本項目以Google 的GAE 為開發平臺,設計實現了SaaS 模式的OA 系統。
系統包括公文審批、短信管理、人事管理、公告管理、訂餐管理、考勤管理、規章制度管理、分享平臺及注冊和登錄功能,其中公文審批功能包括待審批公文管理、已審批公文管理、創建公文、創建審批流程等功能。在公文審批中將會伴隨系統消息,發送郵件提醒,短信發送等子功能。以上功能都可以按照企業需求進行有效組合。系統的功能如圖1 所示。

圖1 系統功能圖Fig.1 System module function frame
2.2.1 OA 系統的數據模型
數據模型是對業務數據的抽象化。GOA 項目主要涉及的數據模型有:用戶、部門、公文、工作流程、公文處理、工作流-用戶、任務、短信、群組、群組-用戶、系統消息等。模型如圖2 所示。
2.2.2 GAE 中的Datastore 對象
在Google 云平臺上開發應用軟件,仍然可以采用目前流行的Web 開發方法。但GAE 中數據存儲是基于BigTable 設計的,它不是一個關系型的數據庫,更像是一個分布式的、分類的哈希表,這種分布式的設計讓并行數據以及數據查詢非常高效[8-9]。本系統開發的關鍵問題是如何將數據模型的實體形式對應于云平臺的存儲形式,也就是數據對象的映射和持久化問題。Google 云平臺通過Datastore 對象提供了數據對象的映射和數據持久化的支持。

圖2 數據模型圖Fig.2 Database model
Datastore 中的對象稱為實體。數據存儲區中的每個實體使用鍵來唯一地標識該實體。每個實體具有一個或多個屬性,支持的數據類型是整數、浮點值、字符串、日期、二進制等常用數據類型。Datastore 中的每個實體都屬于一個特定的類型,類型是由應用程序指定的一個名稱。與關系數據庫不同的是,同一類型的2 個實體不必具有相同的屬性。每個實體的唯一鍵的一部分可用作該實體的標識符。應用程序可以分配要在鍵中使用的它自己的標識符(稱為鍵名稱),也可以在首次存儲實體時由數據存儲區分配的數字ID。由于標識符是鍵的一部分,所以在創建實體后,實體的ID 或名稱無法更改。
2.2.3 GAE 中的持久化對象
GAE 分別支持Java Data Object(JDO)以及Java Persistence API(JPA)2 種標準接口來調用數據對象[10-11]。這2 種接口都允許用戶使用類型安全的Java 類來描述數據結構。在本項目中使用JPA來實現數據實例化的功能。
JPA(Java Persistence API,Java 持久化API)定義了對象-關系映射(ORM)以及實體對象持久化的標準接口[12]。在利用JPA 持久化對象時,首先要獲取EntityManager 實例,可以通過在EntityManagerFactory 類的實例上實例化并調用一個方法來獲取此實例。如以下代碼(2)所示。

通過Psistent 類,可以創建EntityManager 實例,如以下代碼(3)所示。

當獲取到Entity Manager 對象,就可以調用其API 提供的方法對數據做存儲、更新、查詢、刪除的操作。
如以下代碼(4)執行對User 對象的保存。

如以下代碼(5)執行對User 對象的查找。

如以下代碼(6)執行對User 對象的更新。

如以下代碼(7)執行對User 對象的刪除。


應用系統采用Struts2. 0 + spring3. 0 開源框架,開發語言采用Java 語言。在Eclipse 4.2 的開發工具下,需要安裝Google App Engine Java SDK 1.7.7,它是GAE 支持Java 開發應用的軟件開發工具包;以及Eclipse4.2 版本專用的Google 插件程序Google Plugin for Eclipse 4.2[12]。
1)系統的主要模塊-公文審批具體實現如圖3 所示。
2)公文流轉的過程會伴隨著短信息的發送,本項目將短信功能獨立出來,不但可以嵌入公文審批功能中,給用戶發送短信提醒,而且可以作為一個獨立的功能模塊,提供給用戶發送短信。

圖3 審批公文模塊Fig.3 Archives examine and approve modular
短信功能模塊主要包括短信發送、群組管理、黑名單管理和已發送短信。短信模塊功能采用了SMGP 形式,SMGP 是GOA 項目中的短信模塊和運營商網管之間的橋梁。短息模塊通過Http 的形式,將數據提交給SMGP,SMGP 最終將短信提交給運營商網管。系統成功的在云平臺下的Web 系統中調用非云平臺下的系統。在SMGP 中采用線程池的技術來處理短信的發送,具體處理流程如圖4所示。

圖4 SMGP 處理短信流程Fig.4 SMGP note-dealing note modular
系統的具體實現如圖5 所示。

圖5 發送短信Fig.5 Note-sending modular
3)可定制化。本項目是以企業的實際OA 需求出發,每個公司都可以根據自己實際需求在該項目中定制相應的功能。中小企業以租用SaaS 服務的方式申請這些服務的使用權,基于Web 使用這些服務,管理自己的數據,以滿足企業多樣化的需求[13]。下圖為2 個不同的企業所定制的GOA系統。
4)項目開發完成后,需要在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 云平臺的數據存儲和并行處理的優勢提供的應用軟件按需服務,同時還可以共享Google 的云端的文檔系統及郵件系統,增加OA 系統的網絡協同和共享特性。
本系統分別在普通環境下和GAE 環境下測試,其中普通環境下的數據庫采用MySql. 測試主要包括數據存儲,讀取速率的測試以及系統性能測試。在進行數據存儲、讀取速率測試時,測試了同時插入以及讀取100、1000、10000 條數據的所需時間。性能測試主要測試ART(AverageResponse-Time,平均響應時間)和TPS(RequestsPerSeeond,每秒可相應的請求數)。測試結果見表1.

表1 普通環境數據讀寫速度Tab.1 Data reading and writing speed in normal circumstances

表2 GAE 環境數據讀寫速度Tab.2 Data reading and writing speed in GAE

表3 GAE 環境下系統壓力測試Tab.3 System stress test in GAE
從表1 和表2 可以看出,GAE 環境中BigTable的存儲速率遠遠大于普通環境下數據的存儲速讀,并且隨著數據量的增大,這種優勢會越來越大。但是GAE 環境中數據的讀取速率小于普通環境下數據讀取的速率,這與BigTable 的設計有關,BigTable 并不完全支持關系數據庫,在數據的查詢中沒有像關系數據庫那樣對查詢做了優化。由于Web 系統中大數據量的獲取可以通過分頁技術實現數據的分批加載,因此可以忽略BigTable 讀取數據速率方面的不足。
表3 描述了在GAE 環境下系統的性能測試結果。性能測試采用Loadruuner 自動化測試化工具,測試分2 組進行。第一組設定200 個vuser(虛擬用戶),第二組設定400 個vuser,2 組的測試時間均為2 min.從圖中可以看出隨著虛擬用戶的增加,用戶請求數會增多,同時也會有部分丟失的情況,但是這與并發用戶數有關,而實際情況并不會有如此高的并發。2 組測試數據的ART 結果,符合Web 壓力測試標準,可見系統的性能良好。
從上面的分析可以看出,GAE 環境下的Web應用在數據的存儲以及性能方面均高于普通環境中的Web 應用。GAE 環境下的Web 應用在數據讀取方面等同于傳統的基于關系數據庫的應用系統。
文中分析了傳統OA 系統的缺陷,提出了將云計算技術應用于傳統OA 系統。根據大多高科技中小企業的實際需求,基于GAE 平臺設計并實現了一個云端的OA 系統。并將其成功的部署到Google 云平臺下,目前系統運行穩定,正在對A 企業提供OA 系統的支持。作者通過對本系統的設計和開發,認為目前在云端適合開發部署一些基于請求-應答的高伸縮性的互聯網應用系統(例如電子商務系統);或一些非戰略的不涉及多表關聯查詢的公共應用系統,例如人事管理系統、OA系統;還可以應用在智慧城市的建設中。
References
[1] 薛 涵,張靜芳,趙 寧.融入知識管理的高校圖書館OA 系統研究[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] 莊 玫,何 玉,向 陽.清華大學圖書館協同辦公體系基于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] 翟 勃,劉 柯.基于云計算的煤炭企業電子采購系統研究與設計[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].科學技術與工程,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] 蘭建文,劉 敏,任高峰.多業態企業安全生產管理信息系統設計與實現[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] 王意潔,孫偉東,周 松,等.云計算環境下分布存儲關鍵技術[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] 丁雪芳,張 銳.一種基于場景的輕量級軟件架構分析方法[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] 林子雨,賴永炫,林 琛,等.云數據庫研究[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.