許雪松 王 崢 郭丹丹 王雨辰* 康燕燕
1(航天科工智慧產業發展有限公司 北京 100854) 2(國家開發銀行北京市分行 北京 100031) 3(北京市西城區規劃管理信息中心 北京 100035)
在信息化快速發展的今天,數據打通和共享是[1-3]長期困擾政府和企業的一道難題,其中,部門內部數據碎片化、多源化及數據結構差異大等問題,導致大數據資源很難互聯互通、共享以及最大化地被挖掘和利用[3]。當前我國各級政府政務信息系統建設面臨著“各自為政、條塊分割、煙囪林立”的突出問題,因此,政務公共數據共享開放具有一定困難。
本文的動態數據服務發布引擎是面向政府或企業信息化建設過程中解決數據統一發布與共享問題,特別是在當下智慧城市建設場景下尤為突出,其首要任務就是實現公共數據統一共享。本文中動態數據服務發布引擎的作用是建立數據庫系統統一服務發布和接口管理視圖,將所有與數據庫相關操作(增、刪、改、查)都通過服務一個接口來完成[4]。在信息化進程中會有很多不同的業務部門,這些部門都建立了自己的業務系統和數據庫,而這些數據庫則形成一個個“信息孤島”[4-5]。要想達到數據全面共享的狀態,首先需要連接這些數據庫,然后對外提供一個統一的、透明的數據庫接口服務。它是連通各接入系統與各接出系統進行信息交換共享的紐帶、橋梁[6-8]。同時這些數據庫也需要相互之間共享,達到轉發數據的目的[9]。本文主要是為了實現各業務系統數據資源的發布和共享。
對于不同部門中的業務系統,通常由不同廠家建設,大都采用不同類型數據庫,因此動態數據服務發布引擎需要支持市場各類主流數據庫(Oracle、DB2、MSSQL、MYSQL等),通過建立一個基于B/S模式的發布引擎系統,以動態可視化管理視圖進行管理和操作。本系統需要解決數據源不統一、數據地域不統一、操作平臺不統一等問題。能夠實現諸多功能,包括查看數據庫表元數據、建立服務模型、管理服務模型屬性/操作與數據庫表元數據的關聯關系,以及服務的啟用/停用控制等,使得用戶快速將數據庫數據表發布成服務,進而提高數據的快速異地的訪問效率。該系統在總體結構上劃分為服務配置控制臺、服務運行引擎和公共支撐三個模塊,各模塊組合起來實現系統的總體功能。
服務配置控制臺,以B/S視圖提供用戶操作及配置界面,通過Web頁面管理和配置數據連接方式、數據庫數據抽取、服務發布和管理等。
服務運行引擎,為后臺引擎系統,完成對數據服務接口的封裝和調度分發,能夠對服務使用者的服務調用請求進行識別、解析,執行服務操作并返回數據服務請求結果,該部分為系統的核心部分,實現數據服務的訪問、操作及轉發控制。
系統用例圖如圖1所示。

圖1 系統用例圖
公共支撐,對多種類型數據源的支撐,完成數據源元數據的解析,分析元數據(屬性、操作)及與相關數據庫表元數據的關系。
將角色定義為兩種,分別為服務管理員與服務使用者。服務管理員的主要職責是將來自于多個數據源的數據配置成為服務,同時有查看元數據源,服務模型配置,服務狀態控制的權限。服務使用者的主要職責是新增資源、修改資源、刪除資源、獲取資源和檢索資源。
動態數據服務發布引擎系統主要針對單個或多個數據庫表,提供快速生成響應Restful協議的服務。由服務配置控制臺配置生成服務,無需編寫代碼。數據服務引擎支持多數據源、數據庫元數據管理等。動態數據服務發布引擎系統由服務配置控制臺、服務運行引擎和公共支撐組成,公共支撐模塊支撐服務配置控制臺和服務運行引擎。系統功能結構如圖2所示。

圖2 系統功能結構圖
服務運行引擎:服務運行引擎為生成的服務提供運行環境,對服務調用請求進行解析,處理服務的調用過程,并返回調用結果。服務運行引擎負責管理服務的生命周期,包括服務啟動、服務初始化、接收服務請求,處理服務邏輯、返回服務結果、服務關閉等過程。
服務配置控制臺:服務配置控制臺提供對服務的方便配置,使得通過簡單的配置即可生成相應的服務。服務配置控制臺通過可視化頁面操作,配置要使用的數據庫連接(支持多種數據源,多種數據類型)、查看數據庫表元數據、建立服務模型、管理服務模型屬性/操作與數據庫表元數據的關聯關系,以及服務的啟用/停用控制等。
公共支撐模塊:公共支撐模塊為服務運行引擎和服務配置控制臺提供相關的支撐,包括多數據源連接的控制、數據庫表元數據解析、數據映射等。
系統總體分為應用層、邏輯層、展現層及用戶層。在應用層中包括服務統一接口、服務綁定映射、服務執行操作和數據源連接池管理,對數據表服務的統一封裝,將表和服務進行綁定映射,執行服務請求的各項操作,及對數據源持久化管理。邏輯層包括服務模型解析、元數據解析和服務狀態控制,對頁面展現層和應用層進行銜接,對數據服務模型進行打包、拆包處理,將元數據與數據源進行映射處理,以及服務啟動、停止等狀態進行管理,展現層面向用戶操作包括數據源顯示、服務模型顯示、元數據查看、服務狀態顯示。系統技術架構如圖3所示。

圖3 系統技術架構圖
本系統采用Spring MVC設計,最上層為服務接口層與WEB表現層,服務接口層采用REST風格的Web Service。WEB表現層提供給用戶通過瀏覽器訪問系統,WEB層使用MVC架構實現表現與業務邏輯相分離。業務邏輯層則實現具體的功能邏輯處理,并通過調用基礎訪問層,通過基礎訪問層與數據庫相連,完成數據存取操作。
數據服務發布系統獲取數據整體架構流程圖如圖4所示。

圖4 整體架構流程圖
2.2.1 動態服務生成流程
動態服務生成的流程(見圖5)如下:
1) 對數據源中的數據進行抽取,獲取數據源中數據庫表中數據字段。
2) 對需要發布服務的數據庫表配置相應的服務模型。
3) 將服務模型打包為服務模板,并以JSON的形式存儲。
4) 發布成Restful架構風格的服務鏈接地址。
通過上述的業務流程描述可知,數據服務引擎核心的功能模塊組成是公共支撐模塊、服務運行引擎和服務配置控制臺。圍繞這些核心功能的輔助功能主要有多數據源的配置以及數據庫元數據的管理等功能。

圖5 動態服務生成流程圖
2.2.2 數據服務調用流程
數據服務調用的業務流程如下:
1) 根據服務調用請求,解析、識別出服務操作指令。
2) 判斷服務的有效性。
3) 獲取請求參數并解析服務模型與數據庫表關系,分析其元數據(屬性、操作)與相關數據庫表元數據的關系。
4) 執行服務操作。
5) 返回服務給調用者。
調用數據服務的流程如圖6所示。

圖6 調用數據服務圖
動態數據服務發布引擎包括服務配置控制臺、服務運行引擎和公共支撐三大部分組成,系統總體功能架構設計如圖7所示。

圖7 總體功能架構圖
2.3.1 服務配置控制臺
服務配置控制臺由數據源配置、查看元數據、服務模型配置和服務狀態控制四部分組成。其中數據源配置可靈活配置服務需要用到的數據庫連接,可配置多個不同類型數據庫的連接信息(基于JDBC接口),支持連接池配置;查看元數據提供在可視化頁面中查看相關數據庫連接中包含的數據庫表及其元數據信息的功能;服務模型配置可對需要發布服務的數據庫表配置相應的服務模型,對服務模型的元數據(屬性、操作)及其與數據庫表元數據之間的關系進行維護;服務狀態控制提供對服務的啟用/停用狀態的控制。
1) 數據源配置。數據源配置提供對服務需要用到的數據庫連接進行靈活配置,可配置多個不同類型數據庫的連接信息(基于JDBC接口),支持連接池配置。
2) 查看元數據。提供在可視化頁面中查看相關數據庫連接中包含的數據庫表及其元數據信息。
3) 服務模型配置。提供對需要發布服務的數據庫表配置相應的服務模型,對服務模型的元數據(屬性、操作)及其與數據庫表元數據之間的關系進行維護。
4) 服務狀態控制提供對服務的啟用/停用狀態的控制。
2.3.2 服務運行引擎
服務運行引擎由服務統一接口、服務綁定映射、服務操作執行三部分組成。其中服務統一接口負責提供對外統一的服務接口,對于服務使用者的服務調用請求進行識別、解析,而后判斷服務調用的有效性,獲取請求參數,再通過服務綁定映射模塊解析服務模型與數據庫表的關系,并通過調用服務操作執行模塊,執行服務操作并將結果返回給服務使用者;服務操作執行模塊負責對服務操作的實際執行,通過服務綁定映射模塊解析服務模型元數據與數據庫表元數據之間的關系,將請求參數從服務模型元數據表示形式轉化為數據庫元數據表示形式,執行操作之后,再將執行結果從數據庫元數據表示形式轉換成服務模型元數據表示形式;服務綁定映射模塊負責管理服務的啟動、初始化、關閉,維持服務模型及元數據與數據庫表及元數據之間的關系,并提供解析和調用接口,供服務統一接口和服務操作執行使用。
獲取資源是一個根據主鍵值獲取對應資源詳細信息的接口,該接口通過識別、解析服務的調用請求,對于有效的服務調用請求,解析請求參數獲取資源主鍵值,調用服務操作執行中的根據主鍵值獲取操作,從數據庫相應表中獲取主鍵值對應的資源數據并返回該資源數據。
1) 服務統一接口。服務統一接口負責提供對外統一的服務接口,包括對基礎信息資源的新增、修改、刪除、獲取、檢索等。服務統一接口需要對服務請求進行識別、解析,判斷服務調用的有效性,執行相應的服務操作,返回執行結果。
2) 服務綁定映射。服務綁定映射模塊負責管理服務的啟動、初始化、關閉,維持服務模型及元數據與數據庫表及元數據之間的關系,并提供解析和調用接口,供服務統一接口和服務操作執行使用。
服務綁定映射模塊提供包括判斷服務的可用性、服務操作的可用性、服務屬性的有效性、服務相關數據庫表的列的有效性、服務名與相關數據庫表名的相互轉換、服務屬性與相關數據庫表列名相互轉換等功能接口。
3) 服務操作執行。服務操作執行模塊負責對服務操作的實際執行,即實際與數據庫表進行相關持久化處理,包括新增、修改、刪除、獲取、檢索等。服務操作執行模塊需要通過調用服務綁定映射模塊解析服務模型元數據與數據庫表元數據之間的關系,將請求參數從服務模型元數據表示形式轉化為數據庫元數據表示形式,執行操作之后,將執行結果從數據庫元數據表示形式轉換成服務模型元數據表示形式。
2.3.3 公共支撐
公共支撐模塊由多數據源支持、元數據解析和數據映射三部分組成。其中多數據源支撐提供對多數據庫連接的管理,支持多種類型的數據庫,包括對結構化數據、半結構化數據與非結構化數據的支持。并提供連接池的管理,不同的服務可使用不同的數據庫連接,運用JPA框架封裝對數據庫的操作邏輯,它以面向對象的自然語法構造查詢語句,并將運行期的實體對象持久化到數據庫中。元數據解析模塊提供對數據庫表元數據的解析功能,能夠解析數據庫表的列信息(包含列名、數據類型、長度等),以及主鍵列等;數據映射模塊可對建立的服務模型進行解析,分析其元數據(屬性、操作)及與相關數據庫表元數據的關系。
2.4.1 服務操作執行設計與實現
獲取操作提供根據待修改的服務資源主鍵值從相應數據庫表中獲取相關資源數據,通過調用服務綁定映射模塊解析服務模型元數據與數據庫表元數據之間的關系,將數據庫中獲取的數據從數據庫元數據表示形式轉換成服務模型元數據表示形式,并返回結果,如圖8所示。

圖8 獲取調用轉換圖
檢索操作根據給定的過濾條件、排序條件和分頁參數從相應數據庫表中查找滿足條件的資源數據,通過調用服務綁定映射模塊解析服務模型元數據與數據庫表元數據之間的關系。將過濾條件、排序條件從服務模型元數據表示形式轉換為數據庫元數據表示形式,將得到的檢索結果從數據庫元數據表示形式轉換成服務模型元數據表示形式,并返回轉換后的結果如圖9所示。

圖9 調用服務綁定映射模塊圖
檢索資源提供統一的檢索資源服務的對外接口,該接口通過識別、解析服務的調用請求,時序圖設計如圖10所示。對于有效的服務調用請求,解析請求參數獲取要檢索的過濾條件、排序條件和分頁參數,調用服務操作執行中的分頁檢索操作指令,從數據庫相應表中查找符合條件的資源數據,并返回查找到的資源數據。

圖10 查找資源數據圖
2.4.2 服務配置控制臺設計與實現
新增數據源用于配置新的數據庫連接信息,可以增加多個數據庫連接,支持各種常用的數據庫類型。在新增數據源時,對新增數據源的名稱,驅動器類名,連接url等進行正確性校驗。流程圖如圖11所示。

圖11 新增數據源圖
創建數據源時序圖如圖12所示。服務管理員在服務配置控制臺填寫數據源信息,填寫完畢后提交新增資源請求,公共支撐模塊接收到新增請求后,對請求中的數據源信息進行核驗,無誤后持久化到數據庫中,并將新增結果返回給服務管理員。

圖12 創建數據源時序圖
本系統經過了單元測試和功能測試兩個過程。通過單元測試保障系統遵照系統設計進行開發,確保系統功能模塊準確性,使系統在設計和開發過程中模塊化且降低耦合度。在系統進行功能測試過程中,整個流程包括編制測試方案、測試計劃、測試用例及執行測試用例,記錄測試過程中出現的各類功能性問題及性能問題。測試內容涵蓋了數據源支持度、服務響應速度、系統穩定性等。最后完成了回歸測試,保證系統完成開發和設計。服務狀態管理頁面如圖13所示。

圖13 服務狀態管理頁面圖
本系統基于B/S架構模式,利用了數據解析、服務分發、JDBC、元數據等關鍵技術,成功設計并實現了一個動態數據服務發布引擎,并詳細描述了系統功能結構和數據服務處理流程。與行業API服務接口管理系統相關軟件相比,該系統易用性較高,創新點在于可快速實現視圖、表的CRUD快速數據服務封裝及發布,實現外部系統的快速調用。本系統的數據服務采用了Restful架構風格,具有可重用性、簡單性、可擴展性等特點。該系統在投入多個政務數據共享交換項目中使用,大大地促進了政務數據共享和開發,能夠解決政府或企業各部門間“信息孤島”的問題,且運行穩定,具有很高的使用價值。