楊絲雨,孫連山
(陜西科技大學(xué) 電氣與信息工程學(xué)院,陜西 西安 710021)
基于RESTful Web Services的智能報表系統(tǒng)設(shè)計
楊絲雨,孫連山
(陜西科技大學(xué) 電氣與信息工程學(xué)院,陜西 西安 710021)
為提高企業(yè)總部與分支機構(gòu)之間報表數(shù)據(jù)交換效率,降低報表系統(tǒng)客戶端與服務(wù)器之間的耦合度,結(jié)合REST架構(gòu)簡單性、松散耦合、高度可伸縮性以及良好的性能等特點,提出了以RESTful Web Services作為在線智能報表系統(tǒng)Web服務(wù)的方案。分析了系統(tǒng)的整體業(yè)務(wù)功能,詳細介紹了系統(tǒng)在服務(wù)端和客戶端的設(shè)計,實現(xiàn)了該系統(tǒng),驗證了RESTful Web Services對提高系統(tǒng)整體性能的作用。
RESTful;智能報表;URI;HTTP方法;智能報表系統(tǒng)
在企業(yè)信息化建設(shè)中,報表占據(jù)著非常重要的地位,越來越多的智能報表系統(tǒng)應(yīng)運而生。大型企業(yè)通常采用樹狀的組織架構(gòu),總部下轄多個分部,而各個分部又可能進一步管轄多個單位,每個單位甚至又可以進一步細分為部門和班組。智能報表系統(tǒng)就用于滿足企業(yè)總部與分支機構(gòu)之間的基于靈活可定制報表的數(shù)據(jù)交換和匯總。主要功能包括:企業(yè)各單位設(shè)計創(chuàng)建報表模板、分發(fā)報表模板至下屬單位或協(xié)作單位、對所獲得的上報數(shù)據(jù)進行匯總并持久化封存,形成企業(yè)管理的信息資源庫。各單位需填寫來自上級或協(xié)作單位的報表模板并上報企業(yè)運行數(shù)據(jù)。顯而易見,在企業(yè)不同層次的機構(gòu)之間存在著復(fù)雜的數(shù)據(jù)交換,協(xié)調(diào)著企業(yè)運營。提高數(shù)據(jù)交換效率,并加快其查詢速度是智能報表系統(tǒng)亟需解決的問題。
多數(shù)研究者傾向于報表系統(tǒng)的靈活性以及方便用戶使用等特性的研究,例如,蘇子林和王林[1]研究并實現(xiàn)了中國式報表的通用格式,設(shè)計出多層結(jié)構(gòu)的智能報表系統(tǒng),使得系統(tǒng)能夠面向開發(fā)人員、系統(tǒng)管理員和一般用戶(業(yè)務(wù)處理人員和高層決策人員)。胡佐和肖文[2]介紹了將模板技術(shù)應(yīng)用于智能報表系統(tǒng),提高了系統(tǒng)的易用性及可維護性。本文旨在使用RESTful API技術(shù),提高智能報表系統(tǒng)的數(shù)據(jù)交換效率及系統(tǒng)整體性能,同時保持其靈活性、易用性等特點。
REST(Representational State Transfer,表述性狀態(tài)移交)是由Roy Fielding博士2000年在其博士于論文中首次提出,作為分布式系統(tǒng)設(shè)計的一種架構(gòu)風格,它使得HTTP協(xié)議最初的設(shè)計思想得到了最大發(fā)揮,讓人們真正理解HTTP的本來面貌。在REST的名稱“表述性狀態(tài)轉(zhuǎn)移”中,省略了主語,表述性指資源的表述性,所謂“資源”,就是網(wǎng)絡(luò)上的一個實體,或者說是網(wǎng)絡(luò)上的一個具體信息,可以是一段文本、一張圖片、一首歌曲、一種服務(wù),總之就是一個具體的實在。用一個特定的URI(統(tǒng)一資源定位符)指向每種資源,要獲取該資源,只需訪問它的URI。因此URI就成了每個資源的地址或獨一無二的識別符[3]。對資源的獲取、創(chuàng)建、修改和刪除4種基本操作對應(yīng)于HTTP協(xié)議提供的GET、POST、PUT和DELETE方法[4]。當一個客戶端對一個資源發(fā)起GET請求時,服務(wù)器會以一種有效的方式提供一個采集了資源信息的文檔作為回應(yīng)。這就是表述——一種以機器可讀的方式對資源當前狀態(tài)的說明[5]。
總體而言,在REST的概念中,整個Web被看作是一組資源的集合,資源由URI標識,對資源進行的操作由客戶端指定的URI和HTTP協(xié)議動詞的組合來實施,同時將資源和資源的表示分開,為構(gòu)建可擴展、簡單性、可移植和松耦合的Web程序提供了一個架構(gòu)上的準則,REST這種基于資源的設(shè)計改變了傳統(tǒng)的基于服務(wù)的設(shè)計思想,可以降低開發(fā)的復(fù)雜性,提高系統(tǒng)的可伸縮性,提高資源的訪問效率[6]。
RESTful Web服務(wù)是面向資源的服務(wù),因此構(gòu)建基于RESTful Web服務(wù)的智能報表系統(tǒng),重點是分析智能報表系統(tǒng)的業(yè)務(wù),將業(yè)務(wù)所涉及的事物抽象成資源,根據(jù)業(yè)務(wù)為每個資源設(shè)計URI和資源表示。資源確定后,才可以設(shè)計和實現(xiàn)整個系統(tǒng)。本文所設(shè)計的智能報表系統(tǒng)基本業(yè)務(wù)功能主要包括六大部分。
2.1 報表模板及模板類別管理
模板定義了用戶上報數(shù)據(jù)的規(guī)范,企業(yè)內(nèi)部數(shù)據(jù)流轉(zhuǎn)是基于模板的,因此報表模板在智能報表系統(tǒng)中占據(jù)重要地位。模板具有類別,例如財務(wù)報表、生產(chǎn)報表,生產(chǎn)報表又可以細分為生產(chǎn)情況完成表、生產(chǎn)成本表等。即模板的類別形成一個層次結(jié)構(gòu),而模板則是最下層類別中的元素。企業(yè)中的各個部門可基于系統(tǒng)創(chuàng)建的報表類別樹新增自定義的模板。每個單位自主創(chuàng)建一系列模板。每個單位可以查找并使用其自己創(chuàng)建的模板或系統(tǒng)提供的模板,創(chuàng)建周期性下發(fā)任務(wù)或單個下發(fā)任務(wù)。
2.2 數(shù)據(jù)采集任務(wù)管理
數(shù)據(jù)采集任務(wù)管理即報表的下發(fā)任務(wù)管理,是用戶管理其數(shù)據(jù)采集工作過程的核心概念。數(shù)據(jù)采集任務(wù)可以大致分為兩類:一類是隨機發(fā)布的單個采集任務(wù),一類是周期性下發(fā)的一系列采集任務(wù)。
2.3 上報任務(wù)及上報數(shù)據(jù)管理
企業(yè)內(nèi)的某個部門既可能作為數(shù)據(jù)采集方,主動下發(fā)報表模板,采集數(shù)據(jù),又可能作為數(shù)據(jù)提供方,填報數(shù)據(jù)。一般地,一個數(shù)據(jù)采集的報表模板會下發(fā)給多個不同的部門,即每個部門實際上接受了一個需要完成的數(shù)據(jù)上報任務(wù),需要在系統(tǒng)中填報數(shù)據(jù)并將這些數(shù)據(jù)保存在數(shù)據(jù)庫中。即下發(fā)任務(wù)和上報任務(wù)之間是一對多的關(guān)系。
2.4 報表匯總數(shù)據(jù)管理
針對同一報表模板進行填報所得的上報數(shù)據(jù)均可被匯總在一起,展現(xiàn)企業(yè)運營過程中的價值和規(guī)律。因此匯總表與報表模板以及匯總范圍密切相關(guān)。報表模板和匯總范圍就確定了一個匯總表。對符合同一模板的不同數(shù)據(jù)上報表的匯總,就是將各單位數(shù)據(jù)上報表中相同位置的單元格數(shù)據(jù)進行累加并保存在匯總表中的相應(yīng)位置。
允許用戶對匯總表的相應(yīng)位置進行透視查詢,獲取匯總明細數(shù)據(jù),即觀察該匯總數(shù)據(jù)的數(shù)據(jù)來源以及具體的數(shù)據(jù)內(nèi)容。
2.5 企業(yè)分支機構(gòu)管理
企業(yè)一般包含總部與多個分支機構(gòu)。各個分支機構(gòu)內(nèi)部也包含多個部門,分支機構(gòu)之間也存在著層次關(guān)系,系統(tǒng)需要對企業(yè)的各個分支機構(gòu)進行管理。
2.6 用戶信息管理
按照用戶權(quán)限,可以將用戶分為一般用戶、系統(tǒng)管理員及超級管理員。除了超級管理員外,其他系統(tǒng)用戶必須隸屬于唯一的一個部門,允許管理員新增人員、修改其基本信息、根據(jù)其姓名或編號查詢?nèi)藛T。允許所有用戶修改其基本信息及登錄密碼,但一般用戶不能修改其部門等信息。
REST風格的Web Services即按照REST原則創(chuàng)建“輕量級”的Web服務(wù),它是一種面向資源的架構(gòu)[7],所有智能報表系統(tǒng)的數(shù)據(jù)和功能都被設(shè)計成資源對外呈現(xiàn),用戶通過資源的URI和統(tǒng)一的HTTP方法(GET、POST、PUT、DELETE等)訪問資源、執(zhí)行操作。本文提出了一種基于REST架構(gòu)風格的Web服務(wù)的系統(tǒng)體系結(jié)構(gòu)(見圖1),主要由Web服務(wù)客戶端和Web服務(wù)器兩大部分構(gòu)成。
圖1 REST風格Web服務(wù)體系結(jié)構(gòu)
客戶端部分包括Web瀏覽器、桌面應(yīng)用以及移動設(shè)備等。本文所設(shè)計的智能報表系統(tǒng)采用B/S架構(gòu)即瀏覽器和服務(wù)器的網(wǎng)絡(luò)結(jié)構(gòu)模式[8]。這種結(jié)構(gòu)具有分布性特點,可以隨時隨地進行查詢、瀏覽等業(yè)務(wù)處理,并且方便業(yè)務(wù)的拓展,因此采用Web瀏覽器作為Web服務(wù)的客戶端。通過報表資源的URI(通常就是URL)和標準的HTTP方法向服務(wù)器發(fā)出請求。如果請求成功,服務(wù)器將返回HTTP響應(yīng)狀態(tài)碼200 OK,對于GET和PUT請求將返回相應(yīng)格式的資源表述(如XML、JSON等);否則,服務(wù)器返回其它相應(yīng)的HTTP響應(yīng)狀態(tài)碼和錯誤信息。對于本文所采用的Web瀏覽器,可以直接在地址欄輸入地理信息資源的URL,根據(jù)所需通過HTTP GET方法獲取資源相對應(yīng)的表述。如下為通過GET請求報表模板資源的請求和響應(yīng)代碼,資源的表述形式為JSON格式,資源的具體表現(xiàn)可在HTTP請求頭中進行設(shè)置:
GET /base/template/10001 HTTP/1.1
Host:localhost:8080
服務(wù)器返回的響應(yīng):
HTTP/1.1 200 OK
Content-Type:application/json
…
{
“Template”:[
{
“TemplateID”: “10001”,
“TemplateName”: “for test”,
““”TemplateData”: “0x2deab8f…..”,
“TemplateType”: “type”,
“TemplateDesc”: “for test”,
“CreatorId”: “00001”,
“CreatorName”: “sonya”,
“CreateTime”: “2016-10-20T15:58:22.674Z”
}
]
}
服務(wù)器端主要由Web服務(wù)器、服務(wù)應(yīng)用程序和數(shù)據(jù)庫組成。當Web服務(wù)器接收到REST服務(wù)請求后,由服務(wù)應(yīng)用程序來解析并處理請求,然后對數(shù)據(jù)庫執(zhí)行相應(yīng)的CRUD操作,并返回相應(yīng)請求的資源表示。依據(jù)上文對智能報表系統(tǒng)業(yè)務(wù)進行分析,所有模板、周期性下發(fā)任務(wù)、上報任務(wù)及報表數(shù)據(jù)、匯總報表數(shù)據(jù)、系統(tǒng)用戶信息,以及企業(yè)各個分支機構(gòu)信息等均應(yīng)被設(shè)計為資源,有相應(yīng)的URI和允許的HTTP操作(即RESTful API),本文以模板資源為例,分析資源的抽象過程,其它主要資源的URI和HTTP方法如表1所示。為便于系統(tǒng)擴展,本文在設(shè)計時為每類資源均提供了HTTP的4個標準方法。
表1 部分資源及其對應(yīng)的URI和HTTP方法
報表系統(tǒng)的業(yè)務(wù)功能復(fù)雜多樣,但都圍繞報表模板展開,因此模板可被抽象成資源,其中模板的創(chuàng)建對應(yīng)資源的創(chuàng)建,查詢對應(yīng)資源的讀取,對模板的修改對應(yīng)資源的修改,廢棄對應(yīng)資源的刪除。查詢還可細分為3類:查詢所有模板、按模板ID查詢、按關(guān)鍵詞查詢。進一步分析發(fā)現(xiàn),模板的創(chuàng)建、查詢和按關(guān)鍵詞查詢均是針對整個模板資源而言,因此模板資源還需要劃分為所有模板資源和單個模板資源,其URI設(shè)計如下:①所有模板資源URI:/template;②單個模板資源URI:/template/{templateid}。
利用Restful Web Services實現(xiàn)企業(yè)信息管理系統(tǒng),可以避免傳統(tǒng)基于SOAP協(xié)議的Web Services復(fù)雜的協(xié)議集解析,更易于實現(xiàn),更符合Web的本源,具有簡單性、可尋址性及緩存性等特性,服務(wù)器的開銷和維護成本更低,同時方便更多的服務(wù)無縫地在桌面和手持式平臺進行大規(guī)模部署。本文針對REST架構(gòu)的Web Services的特點,研究了其在智能報表系統(tǒng)中的應(yīng)用與實現(xiàn)。所設(shè)計的方案能夠提高智能報表系統(tǒng)數(shù)據(jù)交換的效率,也提高了系統(tǒng)的整體性能,同時降低了開發(fā)成本,具有良好的可擴展性和廣闊的應(yīng)用前景。此后,還需要更深入地研究REST這種全新并且優(yōu)秀的Web設(shè)計風格,以更好地為企業(yè)信息系統(tǒng)服務(wù)。企業(yè)信息管理系統(tǒng)是個龐大復(fù)雜的系統(tǒng),有著不同的機構(gòu)、不同類別的內(nèi)容等,因此,如何規(guī)劃數(shù)據(jù)集、如何將數(shù)據(jù)集轉(zhuǎn)化為資源、如何命名資源、如何設(shè)計表示、如何將資源與資源間的聯(lián)系表達出來即創(chuàng)建資源的連通性整合資源等諸多問題都需要作進一步研究。
[1] 李大鵬.基于Rest風格web服務(wù)的研究[J].電子商務(wù),2010(4):63-65.
[2] 阮一峰.理解RESTful架構(gòu)[EB/OL].[2011-9-12].http://www.ruanyifeng.com/blog/2011/09/restful.html.
[3] RICHARDSON L,RUBY S.RESTful web services[M].Reilly Media,2007.
[4] 王非,蔡勇,賀志軍.RESTful Web Services在信息系統(tǒng)中的應(yīng)用[J].計算機系統(tǒng)應(yīng)用,2013,2(22):221-225.
[5] [美]RICHARDSON,L AMUNDSEN M.RESTful Web APIs中文版[M].趙震一,李哲,譯.北京:電子工業(yè)出版社,2014.
[6] 單劍鋒,馬德錦.常用Web服務(wù)技術(shù)研究[J].計算機技術(shù)與發(fā)展,2013,6(23):253-257.
[7] L RICHARDSON.RESTful web services中文版[M].徐涵,譯.北京:電子工業(yè)出版社,2008.
[8] 王進.B/S模式下的三層架構(gòu)模式[J].軟件導(dǎo)刊,2011,10(3):30-31.
(責任編輯:孫 娟)
楊絲雨(1993-),女,陜西潼關(guān)人,陜西科技大學(xué)電氣與信息工程學(xué)院碩士研究生,研究方向為軟件技術(shù);孫連山(1977-),男,黑龍江佳木斯人,博士,陜西科技大學(xué)電氣與信息工程學(xué)院副教授,研究方向為可信軟件技術(shù)、軟件安全工程。
10.11907/rjdk.162841
TP319
A
1672-7800(2017)003-0077-03