利用WebService這種跨編程語言和跨操作系統(tǒng)平臺的遠程調(diào)用技術(shù),能實現(xiàn)在線數(shù)據(jù)跨部門交互,讓數(shù)據(jù)交互變得簡易、便捷、高效,有效彌補傳統(tǒng)方式的不足:數(shù)據(jù)擁有方(如被審計對象)作為服務端,通過WebService接口把相關(guān)的數(shù)據(jù)及業(yè)務應用在網(wǎng)絡(luò)中發(fā)布給指定的數(shù)據(jù)需求方;數(shù)據(jù)需求方(如審計部門)作為客戶端,通過網(wǎng)絡(luò)調(diào)用數(shù)據(jù)擁有方發(fā)布的WebService服務,實時完成數(shù)據(jù)交互和業(yè)務開展。
在某省級民生審計項目實施中,地市州數(shù)據(jù)采集人員反饋當?shù)毓矐艏块T無法提供戶籍信息數(shù)據(jù)。省審計廳匯集各地情況后與省公安廳進行溝通商討,確定用WebService接口方式通過政務網(wǎng)向?qū)徲嫴块T在線提供戶籍信息。技術(shù)組審計人員按照省公安廳信息部門提供的戶籍信息共享服務接口文檔,在政務網(wǎng)中用Storm工具測試接口運行情況后,使用Python編寫代碼調(diào)用省公安廳戶籍信息WebService接口,在線獲取戶籍信息。
在省審計廳與省公安廳戶籍信息請求與應答的數(shù)據(jù)交互中,省公安廳是數(shù)據(jù)擁有方,省審計廳是數(shù)據(jù)需求方。省公安廳負責WebSer?vice服務端的編寫,具體包括數(shù)據(jù)請求參數(shù)獲取、獲取請求后的內(nèi)部業(yè)務處理邏輯、業(yè)務處理結(jié)果的返回以及服務的發(fā)布。省審計廳作為客戶端,按照服務發(fā)布地址鏈接接口,發(fā)送數(shù)據(jù)請求參數(shù)后接收結(jié)果數(shù)據(jù)。服務端與客戶端共同完成完整的WebService數(shù)據(jù)交互,且服務端屏蔽了業(yè)務實現(xiàn)邏輯,僅按客戶端請求返回業(yè)務處理結(jié)果,客戶端也不參與服務端的業(yè)務邏輯,只關(guān)注業(yè)務處理結(jié)果。
WebService架構(gòu)的服務端程序與客戶端程序可以采用不同編程語言編寫,服務端程序和客戶端程序可以在不同的操作系統(tǒng)上運行,簡化了數(shù)據(jù)交互的模式,方便系統(tǒng)功能的集成。其三大技術(shù)構(gòu)成分別是XML+XSD、SOAP和 WSDL(Web Services Description Language,網(wǎng)絡(luò)服務描述語言)。WebService架構(gòu)下的數(shù)據(jù)交互流程如圖1所示。
圖1 WebService架構(gòu)數(shù)據(jù)交互流程
①客戶端通過WebService的發(fā)布地址(WebService的獲取一般是通過注冊中心查詢獲取,也可以由服務提供者直接提供給數(shù)據(jù)需求者),向服務端詢問服務調(diào)用方法。
②服務端收到客戶端的查詢后,返回一個WSDL文檔,描述Web Ser?vice提供的各類方法接口、參數(shù)。
③客戶端根據(jù)WSDL描述,以SOAP報文封裝接口請求,通過HTTP發(fā)送給服務端。
④服務器端收到客戶端的接口調(diào)用請求后,經(jīng)過內(nèi)部邏輯處理后以SOAP報文封裝結(jié)果,通過HTTP返回給客戶端。
上述①至④共四步完成一次完整(首次)的請求-應答,客戶端根據(jù)WSDL進行后續(xù)處理;在此基礎(chǔ)上,重復③、④兩個步驟,客戶端可進行多次接口調(diào)用并獲取數(shù)據(jù)。
結(jié)合WSDL和省公安廳接口文檔中信息,選擇“request”方法調(diào)用服務接口,調(diào)用時傳入?yún)?shù)和返回結(jié)果均是XML格式的文本,必須按照文檔中規(guī)定的請求參數(shù)、返回結(jié)果的格式對數(shù)據(jù)進行封裝和解析。
為簡化應用步驟,方便審計人員使用省公安廳提供戶籍接口進行在線數(shù)據(jù)交互,技術(shù)人員用Python完成接口客戶端代碼的編寫,整理為“戶籍數(shù)據(jù)交換程序”,并添加配置參數(shù)處理、請求數(shù)據(jù)格封裝、返回結(jié)果解析、數(shù)據(jù)庫操作等額外功能。
1.配置參數(shù)
配置參數(shù)用JSON(JavaScript ob?ject notation,JavaScript對象表示法)格式表示和存儲,使用配置參數(shù)的目的是讓代碼獨立于執(zhí)行的環(huán)境,使程序的適用性更加廣泛。參數(shù)主要分為公共參數(shù)、WebService接口描述參數(shù)、數(shù)據(jù)庫參數(shù)等三類。
2.WS_Config類設(shè)計
WS_Config類由專業(yè)編碼人員設(shè)計,著重于WebService戶籍數(shù)據(jù)交互功能的實現(xiàn)(如圖2所示的UML類圖),對配置參數(shù)、WebService接口調(diào)用、數(shù)據(jù)庫操作、輸出格式等功能借助引用庫(見表1)進行有效、合理的封裝,屏蔽XML、JSON、WebService及數(shù)據(jù)庫等相關(guān)技術(shù)細節(jié),既方便代碼管理,又適合于普通開發(fā)人員使用。
圖2 WS_Config的UML類圖
表1 引用庫功能簡介
戶籍數(shù)據(jù)交換程序是終端執(zhí)行類應用程序,從審計獲取戶籍信息的操作方式入手,分別提供手工和批量戶籍信息交換功能。
1.戶籍數(shù)據(jù)交換的主流程
如圖3所示,主流程結(jié)構(gòu)清晰,初始化工作后輸出功能菜單,根據(jù)用戶的選擇執(zhí)行具體任務:輸出Web?Service接口信息、手工戶籍交換、啟動批量戶籍交換現(xiàn)成等。
圖3 應用程序主流程
2.手工戶籍交換子流程
該子流程主要是完成手工輸入或文件讀入身份信息后,通過接口調(diào)用獲取服務端返回的對應身份的完整戶籍信息,適合少量待查戶籍信息的場合。如圖4所示,進入子流程啟動基礎(chǔ)準備工作后,輸出手工戶籍交換的功能菜單,等待用戶的選擇,執(zhí)行相應任務:單個信息輸入、多個信息輸入、文本文件輸入及保存查詢結(jié)果等。
圖4 手工戶籍交換子流程
3.批量戶籍交換線程
如圖5所示數(shù)據(jù)庫,交換線程從配置參數(shù)中獲取源、目標數(shù)據(jù)庫的相關(guān)信息,而后從源數(shù)據(jù)庫中讀取待交互的身份證信息,并將交互的結(jié)果信息存入目標數(shù)據(jù)庫中,適合大批量待查戶籍信息的場合,主要任務包括:
圖5 批量戶籍交換線程的處理流程
(1)初始化工作
根據(jù)配置參數(shù)信息創(chuàng)建源數(shù)據(jù)庫、目標數(shù)據(jù)庫的鏈接對象、游標對象,獲取兩個配置參數(shù):提交記錄條數(shù)和休眠時長。
(2)批次處理
使用源數(shù)據(jù)庫游標對象獲取一個批次的待處理記錄集,枚舉記錄集中的每一條記錄,輸出當前的批次及批次內(nèi)的序號信息后,調(diào)用“查詢?nèi)藛T戶籍信息”模塊完成當前記錄的數(shù)據(jù)交互,源數(shù)據(jù)庫游標執(zhí)行當前處理記錄的更新語句,更新已處理標志和數(shù)據(jù)交互結(jié)果標志。
(3)結(jié)束線程
所有批次的記錄集處理完畢后,清理數(shù)據(jù)庫相關(guān)對象,正常結(jié)束線程。在處理過程中,如果檢測到主流程的結(jié)束線程信號,進行數(shù)據(jù)庫更新、插入操作的提交,并清理數(shù)據(jù)庫相關(guān)對象后,人工結(jié)束線程。
4.查詢?nèi)藛T戶籍信息模塊
此模塊是完成WebService接口調(diào)用、獲取交互數(shù)據(jù)的公共處理模塊,是手工戶籍交換子流程及批量戶籍交換線程中用到的基礎(chǔ)模塊,以待查身份證號碼、WebService接口客戶端對象、配置參數(shù)對象、戶籍結(jié)果對象集等作為傳入?yún)?shù),返回值是戶籍結(jié)果對象。
如圖6所示,模塊調(diào)用后首先進行變量的初始化操作,調(diào)用WS_Con?fig類的generateWebserviceRequestIn?fo方法,按格式生成客戶端請求參數(shù)后,調(diào)用接口客戶端的request方法發(fā)送請求參數(shù);在得到服務器端的交互結(jié)果(XML格式的字符串)后,調(diào)用WS_Config 類的 parseWebserviceRe?sponseInfo方法將交互結(jié)果按格式解析為戶籍結(jié)果對象,并將其放入結(jié)果對象集中。判斷戶籍結(jié)果對象中的有效標志屬性,如果無效,則輸出錯誤信息;如果有效,則輸出戶籍結(jié)果對象的明細信息。
圖6 查詢?nèi)藛T戶籍信息模塊的流程
在審計項目實施過程中,數(shù)據(jù)組成員一方面從已有的業(yè)務數(shù)據(jù)中整理出需要明確戶籍信息的身份信息,使用戶籍數(shù)據(jù)交換應用程序的批量戶籍交換功能,通過省政務網(wǎng)從省公安廳的服務端獲取需要的戶籍信息;另一方面根據(jù)多個審計組的要求,使用手工戶籍交換功能的單個信息輸入、多個信息輸入、文本文件信息輸入等多種方式,高效、便捷地完成其單個、多個以及少批量的戶籍信息的獲取,為方案的落實、審計思路的推進提供有效的數(shù)據(jù)支撐。
獲取備份數(shù)據(jù)與基于WebSer?vice接口這兩種數(shù)據(jù)獲取方式的特點見表2。從表2中可見:使用WebSer?vice接口的方式獲取數(shù)據(jù)有較多的優(yōu)勢,是傳統(tǒng)數(shù)據(jù)獲得方式的有效助手。若能將接口調(diào)用程序包裝為B/S架構(gòu)集成至本單位業(yè)務平臺中,直接向?qū)徲嬋藛T提供數(shù)據(jù)服務,則可僅通過本單位業(yè)務系統(tǒng)的頁面實現(xiàn)數(shù)據(jù)交互。
表2 數(shù)據(jù)獲取方式比較
基于WebService實現(xiàn)跨部門的在線數(shù)據(jù)交互,需要數(shù)據(jù)擁有者和數(shù)據(jù)使用者雙方進行協(xié)商。工作量主要在數(shù)據(jù)擁有方,由其按照自身的責任和義務對所管理的數(shù)據(jù)進行業(yè)務功能歸類,再由技術(shù)人員轉(zhuǎn)變?yōu)閃eb?Service服務接口供數(shù)據(jù)需求方調(diào)用。身份驗證及數(shù)據(jù)加密等相關(guān)細節(jié)也是必須考慮的方面。
雖然WebService接口依賴于網(wǎng)絡(luò)并對數(shù)據(jù)擁有者有更高的技術(shù)要求,但隨著政府推進政務信息系統(tǒng)整合和數(shù)據(jù)資源共享工作的深入,政府部門之間數(shù)據(jù)共享和業(yè)務協(xié)同程度的提高,WebService接口會成為政府部門共享數(shù)據(jù)的一種常態(tài),政府各部門將會主動以WebService方式按照相關(guān)規(guī)范制度的要求通過政務網(wǎng)在部門之間共享本部門的業(yè)務數(shù)據(jù)。屆時,WebService接口技術(shù)和數(shù)據(jù)獲取方式會隨著審計實踐的開展不斷規(guī)范、完善,在審計領(lǐng)域?qū)⒂懈鼮閺V泛和深入的應用。
[圖片新聞]
2020年12月一個寒冬凌晨,市民還沉浸在夢鄉(xiāng),京山市一家早餐店已燈火通明,該市審計局青年突擊隊正在為環(huán)衛(wèi)工人制做愛心早餐。愛心早餐是該市義工聯(lián)公益項目之一,項目開展兩年來每天為環(huán)衛(wèi)工人供應免費早餐,成為京山志愿服務亮點品牌。
(朱春陽 攝影報道)