数据报文处理方法及装置与流程

文档序号:23426432发布日期:2020-12-25 11:56阅读:98来源:国知局
数据报文处理方法及装置与流程

本发明涉及信息技术领域,尤其涉及数据报文处理方法及装置。



背景技术:

在系统的调用外部交易的过程中,随异构系统交互方的增加,往往要同时处理多种不同协议的报文,如在银行系统间,定长,变长,xml等协议都是极常用的交易报文形式,就需要应用开发者了解学习掌握不同报文协议的规范以进行报文的解析和构建,并且常常还需要涉及报文域特殊处理,如加解密,加验签,base64编解码等,这一处理过程依赖开发者技术能力,通常学习成本高,出错率高,效率低下。

因此,亟需一种可以克服上述问题的数据报文处理方案。



技术实现要素:

本发明实施例提供一种数据报文处理方法,用以高效处理数据报文,降低出错率,该方法包括:

获得数据源对象,所述数据源对象包括:字节流和/或字节数组;

根据所述数据源对象和预先生成的报文映射器,进行数据报文处理,所述报文映射器用于将数据源对象解析为键值对数据,其中按如下方式预先生成所述报文映射器:

获得目标报文类型和报文规范配置文件编号;

根据所述目标报文类型,获得对应的报文映射器工厂;

根据所述报文规范配置文件编号,获得目标报文映射配置信息;

将所述目标报文映射配置信息输入报文映射器工厂,生成报文映射器。

本发明实施例提供一种数据报文处理装置,用以高效处理数据报文,降低出错率,该装置包括:

获得模块,用于获得数据源对象,所述数据源对象包括:字节流和/或字节数组;

处理模块,用于根据所述数据源对象和预先生成的报文映射器,进行数据报文处理,所述报文映射器用于将数据源对象解析为键值对数据,其中按如下方式预先生成所述报文映射器:

获得目标报文类型和报文规范配置文件编号;

根据所述目标报文类型,获得对应的报文映射器工厂;

根据所述报文规范配置文件编号,获得目标报文映射配置信息;

将所述目标报文映射配置信息输入报文映射器工厂,生成报文映射器。

本发明实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述数据报文处理方法。

本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有执行上述数据报文处理方法的计算机程序。

本发明实施例通过获得数据源对象,所述数据源对象包括:字节流和/或字节数组;根据所述数据源对象和预先生成的报文映射器,进行数据报文处理,所述报文映射器用于将数据源对象解析为键值对数据,其中按如下方式预先生成所述报文映射器:获得目标报文类型和报文规范配置文件编号;根据所述目标报文类型,获得对应的报文映射器工厂;根据所述报文规范配置文件编号,获得目标报文映射配置信息;将所述目标报文映射配置信息输入报文映射器工厂,生成报文映射器。本发明实施例学习成本较低,只需要预先生成报文映射器,在获得数据源对象后根据数据源对象和预先生成的报文映射器就可以高效处理数据报文,有效降低出错率。

本发明实施例提供一种数据报文处理方法,用以高效处理数据报文,降低出错率,该方法包括:

获得数据源对象,所述数据源对象包括:键值对数据;

根据所述数据源对象和预先生成的报文映射器,进行数据报文处理,所述报文映射器用于将数据源对象构建为报文结构对象,其中按如下方式预先生成所述报文映射器:

获得目标报文类型和报文规范配置文件编号;

根据所述目标报文类型,获得对应的报文映射器工厂;

根据所述报文规范配置文件编号,获得目标报文映射配置信息;

将所述目标报文映射配置信息输入报文映射器工厂,生成报文映射器。

本发明实施例提供一种数据报文处理装置,用以高效处理数据报文,降低出错率,该装置包括:

获得模块,用于获得数据源对象,所述数据源对象包括:键值对数据;

处理模块,用于根据所述数据源对象和预先生成的报文映射器,进行数据报文处理,所述报文映射器用于将数据源对象构建为报文结构对象,其中按如下方式预先生成所述报文映射器:

获得目标报文类型和报文规范配置文件编号;

根据所述目标报文类型,获得对应的报文映射器工厂;

根据所述报文规范配置文件编号,获得目标报文映射配置信息;

将所述目标报文映射配置信息输入报文映射器工厂,生成报文映射器。

本发明实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述数据报文处理方法。

本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有执行上述数据报文处理方法的计算机程序。

本发明实施例通过获得数据源对象,所述数据源对象包括:键值对数据;根据所述数据源对象和预先生成的报文映射器,进行数据报文处理,所述报文映射器用于将数据源对象构建为报文结构对象,其中按如下方式预先生成所述报文映射器:获得目标报文类型和报文规范配置文件编号;根据所述目标报文类型,获得对应的报文映射器工厂;根据所述报文规范配置文件编号,获得目标报文映射配置信息;将所述目标报文映射配置信息输入报文映射器工厂,生成报文映射器。本发明实施例学习成本较低,只需要预先生成报文映射器,在获得数据源对象后根据数据源对象和预先生成的报文映射器就可以高效处理数据报文,有效降低出错率。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:

图1为本发明实施例中数据报文处理方法示意图;

图2为本发明实施例中数据报文处理装置结构图;

图3为本发明实施例中数据报文处理方法示意图;

图4为本发明实施例中数据报文处理装置结构图;

图5-图9为本发明具体实施例中数据报文处理方法示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。

首先,对本申请实施例中涉及的名词进行介绍:

报文:由一系列报文域通过有规律有协议的组织而成的数据结构。常见如xml,json,定长报文,变长报文,8583包,分隔符报文,对象序列化字节流等协议。报文按照报文数据中是否自带识别性,可分为自解释性报文与非自解释性报文两类,其中可通过数据结构中的路径名称等标识即可识别出数据域值的报文,为自解释型报文,如xml,json等报文协议;而需要依靠数据结构外附加的辅助定义信息来帮助从数据结构中识别出数据域值的报文,为非自解释型报文,如定长、变长、8583包等。

报文域:分为原子报文域与嵌套报文域。原子报文域中包含的数据不可再拆分,嵌套报文域中内涵的“数据”则为一个嵌套的子报文。

报文的解析:从一段字节流中将报文提取解析成拥有可遍历报文域的报文结构对象,并可获取每个报文域的值数据的过程。

报文的构建:将若干数据值,按照指定报文结构,生成一个完整的报文结构对象,并将此报文结构序列化成一段字节流的过程。

报文映射框架:本发明的核心产品,通过提供标准化的报文处理方案,将不同报文协议的处理细节封装于各自的报文协议映射器中,为应用开发人员提供了统一的应用操作api。

如前所述,数据报文处理过程依赖开发者技术能力,通常学习成本高,出错率高,效率低下,且每次开发的交易报文程序无法标准化,基础代码不可复用,造成了大量的重复开发。现有技术中,大多将开源java组件做了接口级别的简要包装,以便应用开发者在调用代码上进行简化,并未从整体的报文理念上进行抽象。java自带的jaxb,允许程序员用它的注解规范,将javabean对象与报文进行相互转化,但它仅支持xml和json。jaxb映射主要由四个部分组成:schema、jaxb、xml文档和java对象。schema可以看作是报文结构声明,document(xml文档)是目标报文数据,而jaxb提供schema到java对象的映射,类似于xxx.hbm格式的映射文件。将xml转换成java对象的过程叫unmarshal.而将java对象转换成xml的过程叫marshal。当前业界解决方案如上述jaxb,均不是面向通用报文理念进行设计,无法通过一套接口为各种报文协议的处理提供统一的应用层调用接口,jaxb至多支持xml和json,无法进一步支持其他自解释型报文,更遑论定长变长等非自解释类型报文协议;其次在jaxb中也仅进行了报文的拼装和解析,并未为报文域的特殊处理留出接口或钩子。

为了高效处理数据报文,降低出错率,本发明实施例提供一种数据报文处理方法,如图1所示,该方法可以包括:

步骤101、获得数据源对象,所述数据源对象包括:字节流和/或字节数组;

步骤102、根据所述数据源对象和预先生成的报文映射器,进行数据报文处理,所述报文映射器用于将数据源对象解析为键值对数据,其中按如下方式预先生成所述报文映射器:

获得目标报文类型和报文规范配置文件编号;

根据所述目标报文类型,获得对应的报文映射器工厂;

根据所述报文规范配置文件编号,获得目标报文映射配置信息;

将所述目标报文映射配置信息输入报文映射器工厂,生成报文映射器。

由图1所示可以得知,本发明实施例通过获得数据源对象,所述数据源对象包括:字节流和/或字节数组;根据所述数据源对象和预先生成的报文映射器,进行数据报文处理,所述报文映射器用于将数据源对象解析为键值对数据,其中按如下方式预先生成所述报文映射器:获得目标报文类型和报文规范配置文件编号;根据所述目标报文类型,获得对应的报文映射器工厂;根据所述报文规范配置文件编号,获得目标报文映射配置信息;将所述目标报文映射配置信息输入报文映射器工厂,生成报文映射器。本发明实施例学习成本较低,只需要预先生成报文映射器,在获得数据源对象后根据数据源对象和预先生成的报文映射器就可以高效处理数据报文,有效降低出错率。

发明人发现,从开发的角度而言,在设计层面可以对多种报文协议的共性进行高度抽象,以提取其共有要素作为标准框架层的核心模型,并充分参考使用场景,提供统一而实用的标准api面向应用层调用,而同时将各种报文协议的规范差异封装到各个报文适配器中,保证各种报文规范处理差异的隔离性和框架兼容更多类型报文适配器的扩展性;在实施层面,通过预定的映射框架的适配器接口,自带常用的标准化报文(如xml,json,定长,变长,8583包等)适配器,报文域处理器及其配置规范的开发,覆盖大部分常用报文的处理场景。其中,需要有对多种报文协议从规范到实际处理的深刻认识和经验提炼,才能进一步建立以报文,报文域为中心的抽象模型,进而令本发明的报文映射框架可以提供面向通用报文的普适性。

实施例中,根据所述数据源对象和预先生成的报文映射器,进行数据报文处理,包括:

获得数据编辑器接口链和数据域映射配置列表;

根据所述数据编辑器接口链,对数据源对象进行处理,得到数据域数值;

根据所述数据域映射配置列表,对数据源对象进行处理,得到数据域编号;

根据所述数据域数值和数据域编号,确定键值对数据。

基于同一发明构思,本发明实施例还提供了一种数据报文处理装置,如下面的实施例所述。由于这些解决问题的原理与数据报文处理方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。

图2为本发明实施例中数据报文处理装置的结构图,如图2所示,该数据报文处理装置包括:

获得模块201,用于获得数据源对象,所述数据源对象包括:字节流和/或字节数组;

处理模块202,用于根据所述数据源对象和预先生成的报文映射器,进行数据报文处理,所述报文映射器用于将数据源对象解析为键值对数据,其中按如下方式预先生成所述报文映射器:

获得目标报文类型和报文规范配置文件编号;

根据所述目标报文类型,获得对应的报文映射器工厂;

根据所述报文规范配置文件编号,获得目标报文映射配置信息;

将所述目标报文映射配置信息输入报文映射器工厂,生成报文映射器。

一个实施例中,所述处理模块202进一步用于:

获得数据编辑器接口链和数据域映射配置列表;

根据所述数据编辑器接口链,对数据源对象进行处理,得到数据域数值;

根据所述数据域映射配置列表,对数据源对象进行处理,得到数据域编号;

根据所述数据域数值和数据域编号,确定键值对数据。

为了高效处理数据报文,降低出错率,本发明实施例提供一种数据报文处理方法,如图3所示,该方法可以包括:

步骤301、获得数据源对象,所述数据源对象包括:键值对数据;

步骤302、根据所述数据源对象和预先生成的报文映射器,进行数据报文处理,所述报文映射器用于将数据源对象构建为报文结构对象,其中按如下方式预先生成所述报文映射器:

获得目标报文类型和报文规范配置文件编号;

根据所述目标报文类型,获得对应的报文映射器工厂;

根据所述报文规范配置文件编号,获得目标报文映射配置信息;

将所述目标报文映射配置信息输入报文映射器工厂,生成报文映射器。

由图3所示可以得知,本发明实施例通过获得数据源对象,所述数据源对象包括:键值对数据;根据所述数据源对象和预先生成的报文映射器,进行数据报文处理,所述报文映射器用于将数据源对象构建为报文结构对象,其中按如下方式预先生成所述报文映射器:获得目标报文类型和报文规范配置文件编号;根据所述目标报文类型,获得对应的报文映射器工厂;根据所述报文规范配置文件编号,获得目标报文映射配置信息;将所述目标报文映射配置信息输入报文映射器工厂,生成报文映射器。本发明实施例学习成本较低,只需要预先生成报文映射器,在获得数据源对象后根据数据源对象和预先生成的报文映射器就可以高效处理数据报文,有效降低出错率。

实施例中,根据所述数据源对象和预先生成的报文映射器,进行数据报文处理,包括:

获得数据编辑器接口链,数据域编号和数据域映射配置列表;

根据所述数据域编号和数据域映射配置列表,对数据源对象进行处理,得到数据域数值;

根据所述数据编辑器接口链,对数据域数值进行处理,得到报文结构对象。

基于同一发明构思,本发明实施例还提供了一种数据报文处理装置,如下面的实施例所述。由于这些解决问题的原理与数据报文处理方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。

图4为本发明实施例中数据报文处理装置的结构图,如图4所示,该装置包括:

获得模块401,用于获得数据源对象,所述数据源对象包括:键值对数据;

处理模块402,用于根据所述数据源对象和预先生成的报文映射器,进行数据报文处理,所述报文映射器用于将数据源对象构建为报文结构对象,其中按如下方式预先生成所述报文映射器:

获得目标报文类型和报文规范配置文件编号;

根据所述目标报文类型,获得对应的报文映射器工厂;

根据所述报文规范配置文件编号,获得目标报文映射配置信息;

将所述目标报文映射配置信息输入报文映射器工厂,生成报文映射器。

一个实施例中,所述处理模块402进一步用于:

获得数据编辑器接口链,数据域编号和数据域映射配置列表;

根据所述数据域编号和数据域映射配置列表,对数据源对象进行处理,得到数据域数值;

根据所述数据编辑器接口链,对数据域数值进行处理,得到报文结构对象。

下面给出一个具体实施例,说明本发明实施例中数据报文处理方法的具体应用。在本具体实施例中,dataform与formelement为报文数据对象与报文域数据对象,为java应用中可访问和修改的报文元素的数据模型。dataformmapping与dataformmappingmanager:数据报文映射配置及其管理器,用于加载并管理应用配置的每一份对报文结构及处理的描述性配置文件。simpledataformmapper(simpledataformconstructor、simpledataformparser)与simpledataformmapperfactory为报文映射框架的报文映射器(构建与解析器)接口与映射器工厂,供各类报文协议适配器继承并实现各种报文规范的构建与解析细节,同时面向应用提供统一调用api接口。比如xmlcontructor和xmlparser就分别是simpledataformconstructor与simpledataformparser的xml协议适配器子类,通过封装org.w3c.dom的接口装配进报文映射框架,以提供应用。dataeditor与dataeditorconfig为数据编辑器接口,用于报文域的特殊处理。比如报文域的加解密,编解码,填充到指定长度,清空连续空格等操作。formeditor与formeditorconfig为报文格式编辑器接口,用于报文整体的特殊处理,比如报文验签,加签,计算或截取报文头部长度域等操作。启动时“数据报文映射管理器”加载装配各种报文协议的适配器,如图5所示。启动时“数据报文映射管理器”将指定路径下的报文规范配置文档加载为“数据报文映射”,如图6所示。应用通过输入目标报文映射配置的dataformmappingid,从“数据报文映射管理器”获取到“数据报文映射器”,由其提供的统一api接口进行调用,如图7所示。以从流中解析xml报文为例,演示java应用调用报文映射器的统一接口,映射框架内部进行的解析过程,如图8所示。以从流中解析json报文为例,演示java应用调用报文映射器的统一接口,映射框架内部进行的构建过程,如图9所示。

在本具体实施例中,应用开发者按照报文映射框架发布的规范完成报文结构规范(dataformmapping,其中每个报文结构具有唯一的id)的配置,保存为文件。应用开发者在java应用代码中将报文结构规范配置文件目录位置作为参数传入dataformmappingmanager作为构造方法参数,dataformmappingmanager启动后,将递归搜目录下所有配置文件,完成对其中dataformmapping配置的加载。当应用开发者需要从字节流中解析出报文获取map数据域,或将map数据转换成某一报文结构的报文时,首先通过传入目标报文类型(dataformmapping.datatype)dataformmappingmanager获取该类报文的映射器工厂(simpledataformmapperfactory),然后通过传入目标报文结构的dataformmappingid,从dataformmappingmanager中获取目标报文的dataformmapping(其中包含目标报文结构的一系列映射配置信息)。将获取到的dataformmapping作为参数传入映射器工厂(对于解析报文场景,还需传入数据源对象,如inputstream,byte[]等),就可以生成后续供应用调用报文映射器(simpledataformparser和simpledataformconstructor,分别为解析器和构建器)。

在本具体实施例中,当应用需要从字节流(同时支持其他数据源,字节数组等)中解析出报文映射为map数据域时,直接调用simpledataformparser的parse方法,参数即为需要注入经解析映射出键值对数据的map,之后解析过程如下:首先,simpledataformparser生成一个初始的dataform。并从数据源对象中,按dataformmapping中配置的formeditor链,逐次对数据源对象进行整体加工,并保存加工后的数据源对象。之后,按照dataformmapping中配置的dataelementmappingconfig列表,从数据源中逐一提取出原始的dataelement,并且根据每一个dataelementmappingconfig中各自配置的dataeditor链,逐次对该dataelement的value进行加工。提取并加工完成后的dataelement顺次加入到dataform中,同时以dataelement的id为键,dataelement的value为值,加入作为参数的数据map中。持续上一步,直到配置的所有dataelementmappingconfig处理完成(对于处理嵌套报文域的nestingmappingconfig,将采取递归调用),此时参数数据map中已经保存了从原始报文中提取并加工的键值对数据,可供应用层直接使用了。

在本具体实施例中,当应用需要将map数据映射为指定协议和结构的报文时,直接调用simpledataformconstrucor的construct方法,参数即为需要应用所设置的键值对数据map,之后构建过程如下:首先,simpledataformconstructor生成一个初始的dataform。之后,按照dataformmapping中配置的dataelementmappingconfig列表,通过dataelement的id为键从参数map中查找到原始的value数据,并且根据每一个dataelementmappingconfig中各自配置的dataeditor链,逐次对该dataelement的value进行加工。生成并加工完成后的dataelement顺次加入到dataform中。持续上一步,直到配置的所有dataelementmappingconfig处理完成(对于处理嵌套报文域的nestingmappingconfig,将采取递归调用),此时dataform已经构建成为了目标的报文结构对象,通过dataform自有的序列化,完成字节流的输出,就可供应用层直接使用了。

在本发明实施例中,还可以增加异常处理流程,用以在解析或构建报文的过程中由于数据原因处理失败时实时反馈通知应用,供应用程序完成异常处理。

在本发明实施例中,还可以增加资源加载模块,用以支持应用采用多形式的报文映射配置存储形式,如可以存储于xml文件,json文件,数据库表等。

在本发明实施例中,还可以增加动态解析模块,用以赋予dataformmapping按实际报文域值进行动态解析的能力,如子报文循环次数等。

本发明实施例设计出面向通用报文的报文映射框架,对报文与报文域的抽象模型可适配满足当下已知报文协议,对常用流程报文协议提供内置实现,支持扩展自定义报文协议规范映射器。有效屏蔽了具体报文协议的规范细节,提供统一的api供应用层操作解析和构建。对报文,报文域的特殊加工需求提供编辑器框架支持,并可扩展自定义编辑器。本发明的报文映射框架,通过对报文与报文域的高度模型抽象,达到兼容适配多种报文协议规范的效果,对同时采用多种报文协议与多种异构系统交互的应用,可统一使用同一套api进行报文处理,大大增加了可维护性和代码复用性。本发明通过简明的报文映射框架配置规范,为应用开发者封装屏蔽了各类报文协议规范处理的琐碎细节,很大程度减小了应用开发者的学习成本,提升了开发效率和报文处理的质量。

综上所述,本发明实施例通过获得数据源对象,所述数据源对象包括:字节流和/或字节数组;根据所述数据源对象和预先生成的报文映射器,进行数据报文处理,所述报文映射器用于将数据源对象解析为键值对数据,其中按如下方式预先生成所述报文映射器:获得目标报文类型和报文规范配置文件编号;根据所述目标报文类型,获得对应的报文映射器工厂;根据所述报文规范配置文件编号,获得目标报文映射配置信息;将所述目标报文映射配置信息输入报文映射器工厂,生成报文映射器。本发明实施例学习成本较低,只需要预先生成报文映射器,在获得数据源对象后根据数据源对象和预先生成的报文映射器就可以高效处理数据报文,有效降低出错率。

本发明实施例通过获得数据源对象,所述数据源对象包括:键值对数据;根据所述数据源对象和预先生成的报文映射器,进行数据报文处理,所述报文映射器用于将数据源对象构建为报文结构对象,其中按如下方式预先生成所述报文映射器:获得目标报文类型和报文规范配置文件编号;根据所述目标报文类型,获得对应的报文映射器工厂;根据所述报文规范配置文件编号,获得目标报文映射配置信息;将所述目标报文映射配置信息输入报文映射器工厂,生成报文映射器。本发明实施例学习成本较低,只需要预先生成报文映射器,在获得数据源对象后根据数据源对象和预先生成的报文映射器就可以高效处理数据报文,有效降低出错率。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1