APP下载

基于WebService实现跨部门在线数据交互

2021-04-24

审计月刊 2021年1期
关键词:服务端调用线程

利用WebService这种跨编程语言和跨操作系统平台的远程调用技术,能实现在线数据跨部门交互,让数据交互变得简易、便捷、高效,有效弥补传统方式的不足:数据拥有方(如被审计对象)作为服务端,通过WebService接口把相关的数据及业务应用在网络中发布给指定的数据需求方;数据需求方(如审计部门)作为客户端,通过网络调用数据拥有方发布的WebService服务,实时完成数据交互和业务开展。

一、WebService应用背景

在某省级民生审计项目实施中,地市州数据采集人员反馈当地公安户籍部门无法提供户籍信息数据。省审计厅汇集各地情况后与省公安厅进行沟通商讨,确定用WebService接口方式通过政务网向审计部门在线提供户籍信息。技术组审计人员按照省公安厅信息部门提供的户籍信息共享服务接口文档,在政务网中用Storm工具测试接口运行情况后,使用Python编写代码调用省公安厅户籍信息WebService接口,在线获取户籍信息。

在省审计厅与省公安厅户籍信息请求与应答的数据交互中,省公安厅是数据拥有方,省审计厅是数据需求方。省公安厅负责WebSer⁃vice服务端的编写,具体包括数据请求参数获取、获取请求后的内部业务处理逻辑、业务处理结果的返回以及服务的发布。省审计厅作为客户端,按照服务发布地址链接接口,发送数据请求参数后接收结果数据。服务端与客户端共同完成完整的WebService数据交互,且服务端屏蔽了业务实现逻辑,仅按客户端请求返回业务处理结果,客户端也不参与服务端的业务逻辑,只关注业务处理结果。

二、技术基础、功能与框架设计

(一)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 查询人员户籍信息模块的流程

三、WebService数据交互特点及与传统方式的比较

在审计项目实施过程中,数据组成员一方面从已有的业务数据中整理出需要明确户籍信息的身份信息,使用户籍数据交换应用程序的批量户籍交换功能,通过省政务网从省公安厅的服务端获取需要的户籍信息;另一方面根据多个审计组的要求,使用手工户籍交换功能的单个信息输入、多个信息输入、文本文件信息输入等多种方式,高效、便捷地完成其单个、多个以及少批量的户籍信息的获取,为方案的落实、审计思路的推进提供有效的数据支撑。

获取备份数据与基于WebSer⁃vice接口这两种数据获取方式的特点见表2。从表2中可见:使用WebSer⁃vice接口的方式获取数据有较多的优势,是传统数据获得方式的有效助手。若能将接口调用程序包装为B/S架构集成至本单位业务平台中,直接向审计人员提供数据服务,则可仅通过本单位业务系统的页面实现数据交互。

表2 数据获取方式比较

四、应用建议和展望

基于WebService实现跨部门的在线数据交互,需要数据拥有者和数据使用者双方进行协商。工作量主要在数据拥有方,由其按照自身的责任和义务对所管理的数据进行业务功能归类,再由技术人员转变为Web⁃Service服务接口供数据需求方调用。身份验证及数据加密等相关细节也是必须考虑的方面。

虽然WebService接口依赖于网络并对数据拥有者有更高的技术要求,但随着政府推进政务信息系统整合和数据资源共享工作的深入,政府部门之间数据共享和业务协同程度的提高,WebService接口会成为政府部门共享数据的一种常态,政府各部门将会主动以WebService方式按照相关规范制度的要求通过政务网在部门之间共享本部门的业务数据。届时,WebService接口技术和数据获取方式会随着审计实践的开展不断规范、完善,在审计领域将有更为广泛和深入的应用。

[图片新闻]

2020年12月一个寒冬凌晨,市民还沉浸在梦乡,京山市一家早餐店已灯火通明,该市审计局青年突击队正在为环卫工人制做爱心早餐。爱心早餐是该市义工联公益项目之一,项目开展两年来每天为环卫工人供应免费早餐,成为京山志愿服务亮点品牌。

(朱春阳 摄影报道)

猜你喜欢

服务端调用线程
基于C#线程实验探究
基于国产化环境的线程池模型研究与实现
核电项目物项调用管理的应用研究
线程池调度对服务器性能影响的研究*
系统虚拟化环境下客户机系统调用信息捕获与分析①
新时期《移动Web服务端开发》课程教学改革的研究
利用RFC技术实现SAP系统接口通信
摸清黑客套路防范木马侵入
C++语言中函数参数传递方式剖析
Java的多线程技术探讨