温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
基于
SOAP
平台
系统
数据
交换
应用
研究
张正做
2023.6电脑编程技巧与维护1概述随着云计算、大数据和移动计算等新技术的广泛应用,社会各行业信息化应用不断加快、加深,以“互联网+政务服务”为抓手,持续推进“四张清单一张网”和“最多跑一次”改革,形成了全省事项清单统一发布、网上服务一站汇聚、数据资源集中共享的运行机制。为了深化“最多跑一次”改革在医疗卫生领域的推进落实,与民生息息相关的食品药品监管业务也逐步纳入政务服务,着力打造“最多跑一次”升级版,实现服务“零距离”。随着“最多跑一次”改革不断推进,基于LotusDomino平台开发的药品检验管理系统面临与外部系统数据对接和交换的问题,研究跨平台异构系统间的数据交换方案成为必需。在Lotus Domino平台上,允许开发者运用SOAP调用Web Service实现不同系统间的数据交换。结合Web Service的特点,基于SOAP在Domino平台构建数据交换方案,并以药品检验管理系统费用管理子系统与统一公共支付平台的数据交互为例阐明方案的实现原理和技术。2XML 与 WebServiceXML是由万维网联盟(W3C)的XML工作组定义的结构化标记语言,是标准通用标记语言(SGML)的子集,用于标记数据、定义数据类型,比SGML更容易操作,便于在Web环境下实现。其具有适用于异构系统间的数据共享、可进行数据检索和支持多种编程语言等优点。Web Service是新一代的Web应用程序,是一种跨编程语言和操作系统平台的远程调用技术,不依赖于平台和语言,可以实现不同编程语言间的相互调用,具有可互操作性、低耦合、自包含、自描述和模块化特点,服务请求者可以通过构建客户端程序来调用服务提供者开放的Web Service1。Web Service是建立可互操作的分布式应用程序的新平台,定义了一套标准的调用过程,Web服务提供者将功能通过Web服务注册中心进行发布,并进行注册,以便有需要的请求者进行请求。WebService服务端通过Web服务注册中心向外界进行功能发布,Web Service客户端通过在服务注册中心查找Web服务描述文件(WSDL),通过WSDL文件创建相应的SOAP请求消息,服务注册中心收到请求后查找满足条件的服务。Web Service服务端在完成客户的请求后,将SOAP消息通过文件传输协议返回给客户端,客户端再根据Web服务描述文件对返回的SOAP消息进行解析23。3SOAP3.1概述SOAP是一种交换数据的协议规范,一种轻量的、简单的、基于XML的协议,主要应用于Web Service中4。它定义了一种消息处理框架,描述消息内容是什么,消息发送方传输到接收方的过程中如何处理的规则,该框架旨在独立于任何特定的编程语言、平台、操作系统和目标模型。一种简化的SOAP消息处理过程如图1所示,其中一个应用程序(即SOAP消息发送方)向另一个应用程序(SOAP消息接收方)发送一条SOAP请求,SOAP接收方处理完成后向SOAP发送方发送应答消息。对于Web Service而言,SOAP是一种主流实现形式,主要通过SOAP传递参数信息进行Web Service调用4。具体来说,SOAP一般使用超文本传输(HTTP)基于 SOAP 的跨平台异构系统数据交换应用研究张正做(浙江省食品药品检验研究院,杭州310052)摘要:为了解决药品检验管理系统内部数据与外部数据的交换问题,描述采用简单对象访问协议(SOAP)在 Domino 平台上进行数据交换的原理,并以内部费用管理系统为例,详细阐述了采用 SOAP实现与外部数据交换的相关技术和方案。实践表明,该方案在不改变原有数据逻辑和程序的基础上实现了在原有平台上安全有效地进行数据交换。关键词:Web Service 技术;Lotus Domino 平台;数据交换;简单对象访问协议;XML 语言作者简介:张正做(1977),男,硕士,高级工程师,研究方向为计算机应用技术。图1SOAP消息处理过程SOAP发送方任何传输协议请求消息SOAP接收方应答消息89DOI:10.16184/prg.2023.06.0342023.6电脑编程技巧与维护协议来发送XML格式的请求消息,然后由Web服务器来处理HTTP请求,SOAP具有和远程过程调用(RPC)协议相同的目的,RPC请求映射到HTTP请求上,而RPC应答映射到HTTP应答,SOAP还可以使用其他的文件传输协议,例如,传输控制协议(TCP)和用户数据报(UDP)协议。3.2SOAP 消息结构由于XML具有独立于任何语言和体系结构、方便数据共享等优点,所以SOAP消息采用XML格式封装,即SOAP消息是一个包含Envelope元素、Header元素和Body元素的XML文档4。SOAP消息的基本格式如下。Envelope是必需的,是SOAP消息结构的主体,用于把XML文档定义为一条SOAP消息。Header是可选的,是控制信息的通用容器,包含有关SOAP消息的应用程序专用信息,例如,身份验证、支付等,必须是Envelope元素的第一个子元素。Body元素是SOAP消息的必需元素,提供了接收方必须处理的信息。它是一种通用容器,可包含来自任何命名空间的任意数量的元素。Fault元素也是可选的,用于指示错误,提供有关在处理此消息时所发生的错误信息,必须是Body元素的子元素,并且只能出现一次。3.3SOAP 的工作原理SOAP的工作原理就是把相关的XML结构化数据放到一个XML的封装包中,通过HTTP传送相关的请求数据和结果数据5,也可以简单地理解为SOAP=RPC+HTTP+XML,允许Web Service服务器和Web Service客户端跨越防火墙在Internet上进行通信,使用HTTP作为底层通信协议,以XML格式进行数据传送,而RPC作为一致性的调用途径4。4Domino平台数据交换的实现方案4.1应用背景Lotus Domino/Notes是IBM公司的群件软件产品,是建立在Internet/Intranet之上,面向文档的企业级通信、协同工作应用平台;是一个可编程的数据库管理系统,具有一套完整的开发工具;具有完善的工作流控制、数据库复制技术和完善可靠的安全机制6。某省院药品检验管理系统以Lotus Domino/notes R5为开发平台,采用客户/服务器(C/S)模式,由于平台版本低,对SOAP的处理没有现成可用的工具,而且系统开发语言为Lo-tusScript,数据交换方案采用LotusScript语言处理SOAP与统一公共支付平台的数据交互。4.2Microsoft SOAP ToolkitMicrosoft SOAP Toolkit(MSSOAP)是微软公司开发的一个灵活的SOAP开发框架,可以很方便地使用任何一种编程语言来编写SOAP应用,为各种内部网和互联网应用解决方案构建可伸缩的Web服务,可用于向COM组件和应用程序添加XML Web Service功能。虽然所有SOAP工具包已被Microsoft.NET Framework替代,但是在非.NET Framework平台(Lotus Domino)上仍 然 可 以 使 用MSSOAP提 供 的COM对 象 来 处 理 与SOAP相关的所有数据,并且支持使用任何一种编程语言编写SOAP应用。由于MSSOAP支持使用LotusScript语言在Domino中处理SOAP对象,所以选择使用该工具包可以提高开发效率。MSSOAP开发工具包有两种,即高级应用程序接口(API)和低级API。高级API允许客户端和服务器使用简单的过程调用、RPC通过SOAP进行通信;低级API使客户端和服务应用程序能够完全控制在它们之间发送SOAP消息的内容,支持一些高级API不支持的SOAP功能,并提供一些性能提升。数据交换方案采用更简单的高级API,不必像低级API关注实现细节。4.3XML 解析器所有的SOAP消息都使用XML编码,因此需要对XML文档进行解析才能进行后续处理。XML解析器就是一个为应用程序读取XML文档并分析其结构的程序包,目标是把XML转换为可读的代码。目前,广泛使用 的 解 析 器 主 要 有IBM公 司 的Xerces、Sun公 司 的JAXP、Microsoft公司的MSXML等,它们都遵循SAX1.0和DOM 1.0标准。由于Microsoft MSXML可以支持Lo-tusScript语言,生成MSXML对象,所以数据交换方案使用微软公司的MSXML解析器。MSXML作为微软公司发布的XML的核心服务组件,主要用来执行或开发经由XML所设计的新应用程序。MSXML是W3C DOM模型的组件对象模型(COM)的实现,根据XML文档,生成一个DOM树结构,并根据XML文档内容创建一个902023.6电脑编程技巧与维护节点的逻辑结构,能够利用MSXML所提供的接口操作XML文档中的信息7。4.4方案实现为了满足统一公共支付平台数据交换要求,药品检验管理系统费用管理子系统提供收费信息上传、缴款结果查询、缴款单冲正(退款)、作废缴款单和每日下载对账单等功能。费用管理子系统与统一公共支付平台的交互示意图,如图2所示。具体过程如下。(1)缴款人在省院业务系统上办理事项。(2)费用管理子系统根据缴款人办理事项生成缴款单。(3)费用管理子系统向统一公共支付平台发起线上缴款请求并获取缴款单信息。(4)统一公共支付平台生成支付单,缴款人确认支付单后通过代收机构完成支付。(5)统一公共支付平台生成缴款凭证并返回给费用管理子系统,同时传递缴款单、支付单和缴款凭证给财政部门非税征管系统。(6)缴款人赴省院按需取票。(7)统一公共支付平台与代收机构、非税征管系统和收款银行完成对账后,费用管理子系统获取对账文件。以单笔上传缴款单为例说明实现过程。费用管理子系统通过政务网专用网络发起Web Service请求,通过统一公共支付平台向财政部门非税征管系统单笔发送需要进行网上缴款的缴款单信息。系统使用MSSOAP提供的SoapClient30组件构造SOAP消息,通过指定WSDL,调用对应的Web服务。(1)创建MSSOAP的SoapClient30对象,用WSDL作为参数调用MSSoapInit2方法向服务器发起Web Ser-vice请求,SoapClient30对象根据WSDL文件传递调用的方法和参数信息。(2)调用Web Service提供的接口方法synchroPay-info发送符合Web Service要求的SOAP请求报文完成信息上传。(3)获取Web Service返回的应答报文,使用MSXML对象的loadXML函数创建XML应答文档,后继使用MSXML提供的DOM方法解析结果。部分关键代码如下。Set SoapRequest=_&_收 费 单 编 号&_100.50&_&_创建SOAP请求报文Set SoapClient=CreateObject(MSSOAP.Soap-Client30)创建SoapClient30对象SoapClient.MSSoapInit2 http:/服务器IP:端口/fsServer/services/zsdwService?wsdl,zsdwService,zsdwServiceHttpPort,http:/发起WebService请求Set Response=SoapClient.synchroPayinfo(SoapRequest)发送SOAP请求报文并获取应答报文Set MSXML=CreateObject(Msxml2.DOMDoc-ument.3.0)调用创建MSXML3.0对象MSXML.loadXML(Response)将应答报文转换为成XML格式Set IS_SUCCESS=MSXML.selectSingleN-ode(/IS_SUCCESS).getAttribute(CODE)获取名为IS_SUCCESS节点的属性code值If IS_SUCCESS=00 ThenMsgbox 已成功上传缴款单!End If