专利名称:一种动态映射接口调用系统及方法
技术领域:
本发明涉及工程设计信息系统集成和异构多数据源互操作技术领域,尤其 涉及一种动态接口调用系统及方法。
技术背景随着工程设计信息系统集成复杂度的急剧提高,系统中的异构多数据源操 作的互操作性要求不断提高,特别是系统对于不同设备接入的要求越来越高, 典型的应用有如轨道交通自动售检票系统中新型的检票机、售票机的无缝接 入、出版系统中异种广告代理系统的接入等应用场合,现有技术中,往往针对 异种系统及设备的接入需要修改大量程序,升级版本处理,这在大型分布式应 用中会带来相当大的程序一致性风险。现有技术中,申请号为CN1920837A,发明名称为"面向复杂装备多学科设 计软件集成的参数映射方法",该发明提供了设计参数的辨识机制,正确识别 多学科设计软件的输入、输出文件中每个参数的语义和语法,在多学科设计软 件处理的非结构化数据和集成平台处理的结构化数据之间建立动态映射。该发 明专利是将所有要处理的文件编号保存到数据库的各分类表中,并且通过操作 者给出每个具体参^t的文件中的位置及控制信息,^_得变量定位对象属性与数 据库表中的字段值——对应。可以看出该专利重点在参数的辨识,而实际系统 中,接口与调用之间存在更大的差异,典型如接口函数有三个参数,boolbOpen =Open ( string sFilename, string sLocation, int32nMode), 而"i周用方只发送两 个参数bool bOpend = OpenFile ( string sFilepath, short iMode )等。综上所述,现有技术中异种系统及设备的接入需要修改大量程序,而且, 因参数缺省或参数合并造成异种系统参数非——对应不能进行函数调用。发明内容本发明涉及一种接口调用系统装置及方法,用以解决现有技术中,异种系 统及设备的接入需要修改大量程序,因参数缺省或参数合并造成异种系统参数 非一一对应不能进行函数调用的问题。本发明实施例提供的一种动态接口调用的方法,包括 调用方发送调用函数给接口调用系统;接口调用系统根据保存的映射配置信息,将所述调用函数转换为被调用方 函数调用形式进行调用。本发明实施例提供的一种动态接口调用的系统,包括接口调用系统和接 口,其中,所述接口,用于接收来自调用方的调用函数;所述接口调用系统,用于根据保存的映射配置信息,将所述调用函数转换 为被调用方函数调用形式进行调用。采用本发明实施例中的系统及方法,通过接口转换的方式,实现了非—— 对应参数变换的缺省处理、参数合并计算处理等复杂应用情况,并且通过堆栈 有效保证调用返回参数的返回。本发明通过接口调用代理,实现基于代理的动 态映射接口调用,完成异构的系统接口之间的数据格式转换与接口动态映射。
图1为本发明实施例的接口调用系统调用方法流程图;图2为本发明实施例中存在返回值时返回方法流程图;图3是本发明实施例的基于代理的动态映射接口调用系统的结构图;图4是本发明实施例的基于代理的动态映射接口调用方法的流程图。
具体实施方式
在本发明实施例中,调用方发送调用函数给接口调用系统;接口调用系统根据保存的映射配置信息,将所述调用函数转换为被调用方函数调用形式进行 调用。参见图l所示,本发明实施例的流程如下步骤101:调用方将调用函数封装为可序列化数据流,并发送给接口调用 系统。步骤102:保存该数据流调用,接口调用系统将所述可序列化数据流解封 装为调用方函数形式的数据流。步骤103:根据映射配置信息将调用函数转化为被调用方函数格式。所述映射配置信息可以包括接口模板以及数据格式转换信息,所述接口模 板包括调用函数转换前后的名称及参数序的对应关系,所述接口转换模板可以 由正则表达式构成。可以按照如下方式将所述调用函数转换为被调用方函数调 用形式进行调用进行接口模板的匹配,按照所匹配的接口模板变更所述调用 函数的名称及参数序,并且根据所述数据格式转换信息转换参数的数据类型;步骤104:对所述调用函数进行调用,并且可以按照名空间调用所述函数, 或进行远程调用。对于某些调用不需要返回执行结果,则流程执行到步骤103结束;若需将 执行结果返回调用方的操作,则根据图2所示的流程返回执行结果 步骤201:接口调用系统保存执行结果。 步骤202:将被调用方函数转换为调用方函数形式。 步骤203:根据返回值更新步骤102所述可序列化数据流的相应部分。 步骤204:接口调用代理返回执行结果。在进行函数调用之后,所述接口调用系统可以根据数据格式转换表,对调 用函数的执行结果按照数据格式转换表反向转换参数的数据类型,并对参数进 行接口模板变更反向转换;将接口调用后函数参数值和返回值返回给调用方。所述将接口调用后函数参数值和返回值返回给调用方的具体方式如下所述接口调用系统利用所述函数参数值和返回值修改所述可序列化数据流,并将修改后的所述可序列化数据流返回给所述调用方;所述调用方将所述 可序列化数据流转换为调用函数的形式。参见图3所示,本发明实施例的一种动态接口调用的系统包括接口调用 系统301和接口321,其中,所述接口 321,完成调用方与接口调用装置之间 的通信交互,比如用于接收来自调用方的调用函数,将执行结果返回给调用 方;当接口调用系统启用时,调用方通过接口调用封装模块将调用函数封装为 可序列化数据流发送给接口调用系统301进行处理;所述4妻口调用系统301 , 用于根据保存的映射配置信息,将所述调用函数转换为被调用方函数调用形式 进行调用。所述接口调用系统301可以包括接口调用代理302、接口转换模板管理 器306和数据格式转化管理器305。其中,接口调用代理302,用于保存提供公开的统一接口调用函数与错误 获取函数,接收并处理来自所述接口的函数调用;接口转换模板管理器306, 用于进行接口模板的匹配,按照所匹配的接口模板更新所述调用函数的名称及 参数序,包含函数参数与被调用的参数的非一一对应参数变换处理。数据格式 转化管理器305,根据数据格式转换信息实现调用函数与被调用函数参数数据 格式的转换。所述接口调用系统还包括封装模块303,所述封装模块实现调用函数和 可序列化数据流之间的相互转化。当来自调用方的调用函数为可序列化数据流 时,将所述可序列化数据流转换为调用函数形式的it据流。进一步地,所述接口转换模板管理器306,还用于根据数据格式转换表, 对调用函数的执行结果按照数据格式转换表反向转换参数的数据类型;所述数 据格式转化管理器305,还用于并对参数进行接口模板变更反向转换;将接口 调用后函数参数值和返回值返回给调用方;所述封装^t块303还用于,利用所 述函数参数值和返回值数据流返回给所述调用方。所述接口调用系统还可以包括接口注册管理器304。封装模块303还可 以将数据流转化为调用方函数的形式并发送给接口注册管理器304,接口注册 管理器304用于对所述调用函数进行登记注册,并负责按照映射配置信息进行 接口转换的时候调用接口转换模板管理器和数据格式转化管理器。所述接口调用系统还可以包括数据堆栈307,用于存储函数调用过程中 使用到的函数参数名称及相关数据。下面结合说明书附图和具体实施方式
进行详细描述。在本实施例中,调用方将调用函数封装为可序列化数据流,接口调用代理 收到该可序列化数据流之后,将该数据流解封装为被调用方调用函数的形式, 依据接口注册登记的接口转换模板进行参数序调整并对参数数据格式进行转换,以符合被调用方函数形式,进行调用。以下结合本发明实施例提供的上述方法和装置,以XML编程语言为例加 以说明上述系统的工作流程。调用方程序中定义函数为bool bOpen = Open(string sFilename, string sLocation, int32 nMode);被调用方程序中定义的相应函数为bool bOpened = OpenFile(string sFilepath, short openmode);纟克一4妻口 "i周用函凄t为string sRet = command(string sCommand)。在本实施例中,所述接口调用系统,其被调用方动态调用的接口,必须能 够通过名空间调用函数,并且与调用方使用相同的封装模块,允许与调用方处 于不同进程、不同设备上。如图4所示,本实施例的具体处理过程如下步骤401:调用方的封装模块将调用方函数封装为可序列化数据流,发送 给接口调用装置的接口。调用方的封装模块将调用函数封装为可序列结构化数据流,该调用封装模块与接口调用系统中的调用封装模块配置相同,对接口调用封装为可序列化数 据流,主要用于跨进程空间以及远程调用支持。本实施例中调用方的程序调用函数实例为Open ("book", "c:/books", 2),由 调用方的接口调用封装模块处理形成的可序列结构化数据流为下列XML格式 数据流< xml version="1.0" encoding="utf-8" >〈invokerxml xmlns:type="http://hold.foundersoft.com/invoke/type" 乂1111113="111^://1101<1£"01111<16^06:.(:0111^611^1316/">〃定义名空间属'I"生 <fimctions><function name="Open" type="bool"> 〃定义功能名称、返回值凄史量 <parelist><parameter name="sFilename " type="type:string"> book</parameter> 〈parameter name="sLocation " type="type:string">c:/books</parameter> <parameter name=" nMode " type="type:int32">2</parameter></parelist><returnlist>〈parameter name=" bOpen" type="type:int32"></parameter> </retumlist> </fUnction> </fimctions> </invokerxml>步骤402:接口调用系统的接口接收到可序列化数据流。步骤403:通过调用封装模块将所述可序列化数据流反解成为调用函数的 形式,并将该数据流调用压栈。接口调用系统的接口接受到XML格式的数据流之后,由接口调用代理将 其形成统一才妄口调用函凄史表达式为string sRet = command(string sCommand), 同时将该数据流调用压栈。通过调用封装模块将统一接口调用函数接受的sCommand可序列化数据流反解成为调用函数实例的形式即Open ("book","c:/books", 2)。步骤404:接口调用系统从接口注册管理器中查找映射表。该查找映射表 中保存了被调用方的程序函数OpenFile登记到的接口注册管理器中,此接口调用模 块向外公开的调用接口形式为Open,同时配置了上述两种函数相互映射的模 板及数据格式的转换表,接口转换模板由正则表达式构成。所述的接口调用系 统通过接口与调用方通讯,接口调用代理仅包含统一接口调用函数与错误获取 函数。步骤405:按照匹配的接口模板变更函数名称及参数序。 上述步骤中按照接口注册管理器提供的匹配的接口模板变更调用函数名 称及参数序,这里参数序变换一般通过正则表达式实现。接口函数之间的转换 方式由接口转换模板管理器管理,接口注册管理器负责对接口转换模板管理器 的调用。步骤406:依据数据格式转换表转换参数的数据类型。依据数据格式转换表转换参数的数据类型,这里数据一各式转换表是针对不 同系统间数据类型定义差异以及参数类型差异的数据转换。数据格式转换表, 记录系统间有P艮数据格式定义之间的转换规则,典型如调用方nMode数据类 型为32位字节长度int类型,而被调用方nMode数据类型为数据类型为16位 字节长度short类型。接口注册管理器负责对数据格式转换表的调用,对于现 有系统而言,数据才各式转换表管理的数据类型相对固定。本实施例中在接口注册中查找映射表,进行参数和数据格式的转换后的函 数实例格式为OpenFile ("c:/books/book", 2),从而转化为被调用方定义的函数。步骤407:接口调用系统按照转换后的被调用方的函数,按照名空间调用 函数执行调用或者进行远程调用;所述的接口调用系统在完成调用转换后,按照名空间调用相应函数执行调 用或者进行远程函数调用,完成的OpenFile("c:/books/book", 2)指令打开指定路径文件的操作。对于某些调用不需要返回结果,则到步骤407完成整个调用过程;若需将 执行结果返回调用方的操作,则继续执行以下步骤,以返回执行结果 步骤408:取得函数执行结果并保存到数据堆栈中。本实施例中,运行后取得执行结果,即返回值bOpened参数,若指定路径 不存在此文件,则该参数返回false,将此执行结果保存在堆栈中。步骤409:对堆栈中执行结果依据数据格式转换表反向转换为调用参数的 数据类型。本实施例中,被调用方完成指定操作之后,需要将其执行结果即bOpened 参数按照转换表反向转换为相应的bOpen参数的数据类型。 步骤410:对参数等进行接口模板变更反向转换。本实施例中,对参数等进行接口模板变更反向转换后函数转化为原调用方 定义的函数bOpen = Open("book", "c:/books", 2)。步骤411:将步骤403中的数据流出栈修改可序列化数据流的接口调用的 返回值相应部分。步骤412:将执行结果返回给调用方。步骤413:调用方接受到封装数据流之后,调用接口调用封装模块还原成 为调用函数的形式,完成接口调用过程。本实施例中,通过接口模板转换管理器的接口模板,可以实现接口函数参 数与调用的参数的非——对应参数变换处理,包括前者参数多的情况下的后者 增加缺省参数处理,以及前者参数少的情况下后者合并计算参数或者舍弃参数 的处理。采用本发明所述的系统及方法通过接口调用系统,完成异构的系统接口之 间的数据格式转换与接口动态映射,特别适用于分布式计算环境。本发明通过 接口转换的方式,可以实现了非一一对应参数变换的缺省处理、参数合并计算 处理等复杂应用情况,并且通过堆栈有效保证调用返回参数的返回。员根据本发明的技术方案得出其他的实施方式,同样属于本发明的技术创新范 围。显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发 明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及 其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
权利要求
1、一种动态接口调用的方法,其特征在于,该方法包括以下步骤调用方发送调用函数给接口调用系统;接口调用系统根据保存的映射配置信息,将所述调用函数转换为被调用方函数调用形式进行调用。
2、 如权利要求1所述的方法,其特征在于,所述调用方发送调用函数给 调用系统,包括所述调用方将调用函数封装为可序列化数据流,并将所述可序列化数据流 发送给接口调用系统;所述接口调用系统将所述可序列化数据流解封装为调用函数形式的数据流o
3、 如权利要求2所述的方法,其特征在于,所述映射配置信息包括接口 模板以及数据格式转换信息,所述接口模板包括调用函数转换前后的名称及参 数序的对应关系,则将所述调用函数转换为被调用方函数调用形式进行调用,包括 进行接口模板的匹配,按照所匹配的接口模板变更所述调用函数的名称及参数序,并且根据所述数据格式转换信息转换参数的数据类型;所述接口调用系统按照经过数据类型转换后的调用函数,进行调用,其中 调用是按照名空间调用所述函数,或进行远程调用。
4、 如权利要求3所述的方法,其特征在于,该方法进一步包括 所述接口调用系统根据数据格式转换表,对调用函数的执行结果按照数据格式转换表反向转换参数的数据类型,并对参数进行接口模板变更反向转换; 将接口调用后函数参数值和返回值返回给调用方。
5、 如权利要求4所述的方法,其特征在于,所述将接口调用后函数参数 值和返回值返回给调用方,包括所述接口调用系统利用所述函数参数值和返回值修改所述可序列化数据流,并将修改后的所述可序列化数据流返回给所述调用方; 所述调用方将所述可序列化数据流转换为调用函数的形式。
6、 如权利要求1所述的方法,其特征在于,所述接口转换模板由正则表 达式组成的结构化数据构成。
7、 一种动态接口调用的系统,其特征在于,该系统包括接口调用系统 和接口,其中,所述接口,用于接收来自调用方的调用函数;所述接口调用系统,用于根据保存的映射配置信息,将所述调用函数转换 为被调用方函数调用形式进行调用。
8、 根据权利要求7所述的系统,其特征在于,所述接口调用系统包括 接口调用代理,用于提供公开的统一接口调用函数与错误获取函数,接收并处理来自所述接口的函数调用。
9、 如权利要求7所述的系统,其特征在于,所述接口调用系统还包括 接口注册管理器,用于对所述调用函数进行登记注册,并负责按照映射配置信息进行接口转换的时候调用接口转换模板管理器和数据格式转化管理器; 接口转换模板管理器,用于进行接口模板的匹配,按照所匹配的接口模板更新所述调用函数的名称及参数序;数据格式转化管理器,用于根据数据格式转换信息转换所述调用函数的参 数的数据类型。
10、 如权利要求7所述的系统,其特征在于,所述接口调用系统还包括 封装模块,用于当来自调用方的调用函数为可序列化数据流时,将所述可序列化数据流转换为调用函数形式的数据流。
11、 如权利要求7所述的系统,其特征在于,所述接口调用系统还包括 数据堆栈,用于存储函数调用过程中使用到的函数参数名称及相关数据。
全文摘要
本发明公开了一种动态接口调用的系统与方法,属于工程设计信息系统集成和异构多数据源互操作技术领域。本发明的方法包括调用方发送调用函数给接口调用系统;接口调用系统根据保存的映射配置信息,将所述调用函数转换为被调用方函数调用形式进行调用。本发明通过接口转换的方式,实现了异种系统及模块的接口调用的灵活配置与动态注册,特别适用于分布式计算环境。
文档编号G06F9/44GK101216760SQ200710304690
公开日2008年7月9日 申请日期2007年12月28日 优先权日2007年12月28日
发明者戴笑涛, 健 龚 申请人:北京方正国际软件系统有限公司