利用WebService這種跨編程語言和跨操作系統平臺的遠程調用技術,能實現在線數據跨部門交互,讓數據交互變得簡易、便捷、高效,有效彌補傳統方式的不足:數據擁有方(如被審計對象)作為服務端,通過WebService接口把相關的數據及業務應用在網絡中發布給指定的數據需求方;數據需求方(如審計部門)作為客戶端,通過網絡調用數據擁有方發布的WebService服務,實時完成數據交互和業務開展。
在某省級民生審計項目實施中,地市州數據采集人員反饋當地公安戶籍部門無法提供戶籍信息數據。省審計廳匯集各地情況后與省公安廳進行溝通商討,確定用WebService接口方式通過政務網向審計部門在線提供戶籍信息。技術組審計人員按照省公安廳信息部門提供的戶籍信息共享服務接口文檔,在政務網中用Storm工具測試接口運行情況后,使用Python編寫代碼調用省公安廳戶籍信息WebService接口,在線獲取戶籍信息。
在省審計廳與省公安廳戶籍信息請求與應答的數據交互中,省公安廳是數據擁有方,省審計廳是數據需求方。省公安廳負責WebSer?vice服務端的編寫,具體包括數據請求參數獲取、獲取請求后的內部業務處理邏輯、業務處理結果的返回以及服務的發布。省審計廳作為客戶端,按照服務發布地址鏈接接口,發送數據請求參數后接收結果數據。服務端與客戶端共同完成完整的WebService數據交互,且服務端屏蔽了業務實現邏輯,僅按客戶端請求返回業務處理結果,客戶端也不參與服務端的業務邏輯,只關注業務處理結果。
WebService架構的服務端程序與客戶端程序可以采用不同編程語言編寫,服務端程序和客戶端程序可以在不同的操作系統上運行,簡化了數據交互的模式,方便系統功能的集成。其三大技術構成分別是XML+XSD、SOAP和 WSDL(Web Services Description Language,網絡服務描述語言)。WebService架構下的數據交互流程如圖1所示。

圖1 WebService架構數據交互流程
①客戶端通過WebService的發布地址(WebService的獲取一般是通過注冊中心查詢獲取,也可以由服務提供者直接提供給數據需求者),向服務端詢問服務調用方法。
②服務端收到客戶端的查詢后,返回一個WSDL文檔,描述Web Ser?vice提供的各類方法接口、參數。
③客戶端根據WSDL描述,以SOAP報文封裝接口請求,通過HTTP發送給服務端。
④服務器端收到客戶端的接口調用請求后,經過內部邏輯處理后以SOAP報文封裝結果,通過HTTP返回給客戶端。
上述①至④共四步完成一次完整(首次)的請求-應答,客戶端根據WSDL進行后續處理;在此基礎上,重復③、④兩個步驟,客戶端可進行多次接口調用并獲取數據。
結合WSDL和省公安廳接口文檔中信息,選擇“request”方法調用服務接口,調用時傳入參數和返回結果均是XML格式的文本,必須按照文檔中規定的請求參數、返回結果的格式對數據進行封裝和解析。
為簡化應用步驟,方便審計人員使用省公安廳提供戶籍接口進行在線數據交互,技術人員用Python完成接口客戶端代碼的編寫,整理為“戶籍數據交換程序”,并添加配置參數處理、請求數據格封裝、返回結果解析、數據庫操作等額外功能。
1.配置參數
配置參數用JSON(JavaScript ob?ject notation,JavaScript對象表示法)格式表示和存儲,使用配置參數的目的是讓代碼獨立于執行的環境,使程序的適用性更加廣泛。參數主要分為公共參數、WebService接口描述參數、數據庫參數等三類。
2.WS_Config類設計
WS_Config類由專業編碼人員設計,著重于WebService戶籍數據交互功能的實現(如圖2所示的UML類圖),對配置參數、WebService接口調用、數據庫操作、輸出格式等功能借助引用庫(見表1)進行有效、合理的封裝,屏蔽XML、JSON、WebService及數據庫等相關技術細節,既方便代碼管理,又適合于普通開發人員使用。

圖2 WS_Config的UML類圖

表1 引用庫功能簡介
戶籍數據交換程序是終端執行類應用程序,從審計獲取戶籍信息的操作方式入手,分別提供手工和批量戶籍信息交換功能。
1.戶籍數據交換的主流程
如圖3所示,主流程結構清晰,初始化工作后輸出功能菜單,根據用戶的選擇執行具體任務:輸出Web?Service接口信息、手工戶籍交換、啟動批量戶籍交換現成等。

圖3 應用程序主流程
2.手工戶籍交換子流程
該子流程主要是完成手工輸入或文件讀入身份信息后,通過接口調用獲取服務端返回的對應身份的完整戶籍信息,適合少量待查戶籍信息的場合。如圖4所示,進入子流程啟動基礎準備工作后,輸出手工戶籍交換的功能菜單,等待用戶的選擇,執行相應任務:單個信息輸入、多個信息輸入、文本文件輸入及保存查詢結果等。

圖4 手工戶籍交換子流程
3.批量戶籍交換線程
如圖5所示數據庫,交換線程從配置參數中獲取源、目標數據庫的相關信息,而后從源數據庫中讀取待交互的身份證信息,并將交互的結果信息存入目標數據庫中,適合大批量待查戶籍信息的場合,主要任務包括:

圖5 批量戶籍交換線程的處理流程
(1)初始化工作
根據配置參數信息創建源數據庫、目標數據庫的鏈接對象、游標對象,獲取兩個配置參數:提交記錄條數和休眠時長。
(2)批次處理
使用源數據庫游標對象獲取一個批次的待處理記錄集,枚舉記錄集中的每一條記錄,輸出當前的批次及批次內的序號信息后,調用“查詢人員戶籍信息”模塊完成當前記錄的數據交互,源數據庫游標執行當前處理記錄的更新語句,更新已處理標志和數據交互結果標志。
(3)結束線程
所有批次的記錄集處理完畢后,清理數據庫相關對象,正常結束線程。在處理過程中,如果檢測到主流程的結束線程信號,進行數據庫更新、插入操作的提交,并清理數據庫相關對象后,人工結束線程。
4.查詢人員戶籍信息模塊
此模塊是完成WebService接口調用、獲取交互數據的公共處理模塊,是手工戶籍交換子流程及批量戶籍交換線程中用到的基礎模塊,以待查身份證號碼、WebService接口客戶端對象、配置參數對象、戶籍結果對象集等作為傳入參數,返回值是戶籍結果對象。
如圖6所示,模塊調用后首先進行變量的初始化操作,調用WS_Con?fig類的generateWebserviceRequestIn?fo方法,按格式生成客戶端請求參數后,調用接口客戶端的request方法發送請求參數;在得到服務器端的交互結果(XML格式的字符串)后,調用WS_Config 類的 parseWebserviceRe?sponseInfo方法將交互結果按格式解析為戶籍結果對象,并將其放入結果對象集中。判斷戶籍結果對象中的有效標志屬性,如果無效,則輸出錯誤信息;如果有效,則輸出戶籍結果對象的明細信息。

圖6 查詢人員戶籍信息模塊的流程
在審計項目實施過程中,數據組成員一方面從已有的業務數據中整理出需要明確戶籍信息的身份信息,使用戶籍數據交換應用程序的批量戶籍交換功能,通過省政務網從省公安廳的服務端獲取需要的戶籍信息;另一方面根據多個審計組的要求,使用手工戶籍交換功能的單個信息輸入、多個信息輸入、文本文件信息輸入等多種方式,高效、便捷地完成其單個、多個以及少批量的戶籍信息的獲取,為方案的落實、審計思路的推進提供有效的數據支撐。
獲取備份數據與基于WebSer?vice接口這兩種數據獲取方式的特點見表2。從表2中可見:使用WebSer?vice接口的方式獲取數據有較多的優勢,是傳統數據獲得方式的有效助手。若能將接口調用程序包裝為B/S架構集成至本單位業務平臺中,直接向審計人員提供數據服務,則可僅通過本單位業務系統的頁面實現數據交互。

表2 數據獲取方式比較
基于WebService實現跨部門的在線數據交互,需要數據擁有者和數據使用者雙方進行協商。工作量主要在數據擁有方,由其按照自身的責任和義務對所管理的數據進行業務功能歸類,再由技術人員轉變為Web?Service服務接口供數據需求方調用。身份驗證及數據加密等相關細節也是必須考慮的方面。
雖然WebService接口依賴于網絡并對數據擁有者有更高的技術要求,但隨著政府推進政務信息系統整合和數據資源共享工作的深入,政府部門之間數據共享和業務協同程度的提高,WebService接口會成為政府部門共享數據的一種常態,政府各部門將會主動以WebService方式按照相關規范制度的要求通過政務網在部門之間共享本部門的業務數據。屆時,WebService接口技術和數據獲取方式會隨著審計實踐的開展不斷規范、完善,在審計領域將有更為廣泛和深入的應用。
[圖片新聞]

2020年12月一個寒冬凌晨,市民還沉浸在夢鄉,京山市一家早餐店已燈火通明,該市審計局青年突擊隊正在為環衛工人制做愛心早餐。愛心早餐是該市義工聯公益項目之一,項目開展兩年來每天為環衛工人供應免費早餐,成為京山志愿服務亮點品牌。
(朱春陽 攝影報道)