一种报文生成方法及装置与流程

文档序号:16062438发布日期:2018-11-24 12:19阅读:755来源:国知局

本申请涉及报文处理技术领域,尤其涉及一种报文生成方法及装置。

背景技术

目前全球大多数国家大多数银行已使用swift(societyforworldwideinterbankfinancialtelecommunications,环球同业银行金融电讯协会)系统。swift系统的使用,使银行的结算提供了安全、可靠、快捷、标准化、自动化的通讯业务,从而大大提高了银行的结算速度。由于swift报文的格式具有标准化,目前信用证的格式主要都是用swift报文。swift运营着世界级的金融报文网络,银行和其他金融机构通过它与同业交换报文(message)来完成金融交易。除此之外,swift还向金融机构销售软件和服务,其中大部分的用户都在使用swift网络。

swift报文由基本报头(basicheaderblock)、应用报头(applicationheaderblock)、用户报头(userheaderblock)、正文(textblock)、报尾(trailerblock)组成。swift报文还会标明发报银行等。

swift报文种类繁多,是次托管行与主托管行进行有效沟通的重要途径。不同种类的报文存在个性化和差异化,取数来源和制报时点均存在差异,所以swift报文的生成方法需要具备很强的兼容性。

此外,swift报文标准每年固定升级,加之托管业务需求变化非常频繁,不同主托管行对不同报文存在定制化需求,且均要求在短时间内完成功能修改,所以,swift报文的生成方法需要具备很强的灵活性和易维护性。



技术实现要素:

有鉴于此,为了使得swift报文的生成方法具备很强的兼容性、灵活性和易维护性,本申请提供了一种报文生成方法和装置。

为了达到上述发明目的,本申请采用了如下技术方案:

一种报文生成方法,包括:

获取用户配置的配置信息,所述配置信息包括制报设置信息和报文模板;所述制报设置信息包括报文种类;

根据所述制报设置信息获取与所述制报设置信息对应的报文模板;

根据所述报文模板获取业务变量业务变量列表;

根据报文种类与业务数据对象的映射表从业务数据对象中获取与所述业务变量业务变量列表中的业务变量相对应的业务变量属性值;

将所述业务变量属性值替换所述报文模板中对应的业务变量;

将报文报头、报文报尾和被所述业务变量属性值替换后的业务变量组合在一起,生成报文。

一种报文生成装置,包括:

配置信息获取单元,用于获取用户配置的制报设置信息和报文模板;所述制报设置信息包括报文种类;

业务变量列表获取单元,用于根据所述报文模板获取业务变量列表;

业务变量属性值获取单元,用于根据报文种类与业务数据对象的映射表从业务数据对象中获取与所述业务变量列表中的业务变量相对应的业务变量属性值;

替换单元,用于将所述业务变量属性值替换所述报文模板中对应的业务变量;

组合单元,用于将报文报头、报文报尾和被所述业务变量属性值替换后的业务变量组合在一起,生成报文。

相较于现有技术,本申请具有以下有益效果:

基于以上技术方案可知,通过本申请提供的报文生成方法,用户可以根据自身需求配置生成报文的配置信息,该配置信息包括制报设置信息和报文模板,制报设置信息包括报文种类,然后,系统可以根据该配置的报文模板自动获取对应的报文模板以及业务变量业务变量列表,然后根据报文种类与业务数据对象的映射表从业务数据对象中获取对应的业务变量属性值。而这些业务变量可以包括报文中的各种元素。因此,在制报过程中,各种变化的元素的属性值均可以根据报文业务变量业务变量列表及其与业务数据对象的映射表从业务数据对象中获取到。也就是说,各种变化的元素的属性值可以通过配置表通过标签配置的方式来处理,如此有效避免了硬编码带来的维护更新的不便,同时,兼容了各种不同报文种类的差异性,并且对后期频繁的业务需求变更例如swift报文标准升级能够快速响应。因而,该报文生成方法具有很强的兼容性、灵活性和易维护性。

附图说明

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

图1为本申请实施例一提供的报文生成方法流程图;

图2为本申请实施例提供的mt950报文模板示意图;

图3为本申请实施例提供的真实mt950报文示意图;

图4为本申请实施例二提供的报文生成方法流程图;

图5为本申请实施例提供的循环报文模板示意图;

图6为本申请实施例提供的真实循环报文示意图;

图7为本申请实施例提供的单循环报文模板结构示意图;

图8为本申请实施例提供的真实单循环报文示意图;

图9为本申请实施例提供的单循环分页报文模板结构示意图;

图10a至图10b为本申请提供的单循环分页真实报文的第一页和第二页示意图;

图11为本申请实施例提供的嵌套循环报文模板结构示意图;

图12a至图12f为本申请提供的嵌套循环分页真实报文的各页示意图;

图13为本申请实施例提供的单层并列循环报文模板示意图;

图14为本申请提供的单层并列循环真实报文示意图;

图15为本申请实施例三提供的报文生成装置结构示意图。

具体实施方式

目前,银行间的通讯业务均使用swift,其中信用证的格式主要是swift报文。主托管行与次托管行使用swift报文进行有效的沟通,从而通过报文的交换实现银行间的金融交易。

例如,当第一银行给第二银行发送报文时,第一银行的工作人员需要根据swift报文格式、报文的种类以及需要发送的消息等制作swift报文。

但是,发明人研究发现,上述人工制作swift报文的方法具有以下不足:

swift报文种类繁多,不同种类的报文存在个性化和差异化,取数来源和制报时点均存在差异,因而,使得现有的swift报文制作方法的兼容性差。

swift报文标准每年固定升级,加之托管业务需求变化非常频繁,不同主托管行对不同报文存在定制化需求,且均要求在短时间内完成功能修改,但是,现有的swift报文制作方法因采用人工制作的过程,因而该方法无法灵活的适应不同的报文需求,以及该方法无法及时的随着升级的swift报文标准进行维护。

为了解决上述swift报文制作方法存在的问题,本申请实施例提供了一种报文生成方法,该方法包括:获取用户配置的配置信息,所述配置信息包括制报设置信息和报文模板;所述制报设置信息包括报文种类;根据所述制报设置信息获取与所述制报设置信息对应的报文模板;根据所述报文模板获取业务变量业务变量列表;根据报文种类与业务数据对象的映射表从业务数据对象中获取与所述业务变量业务变量列表中的业务变量相对应的业务变量属性值;将所述业务变量属性值替换所述报文模板中对应的业务变量;将报文报头、报文报尾和被所述业务变量属性值替换后的业务变量组合在一起,生成报文。

本申请实施例提供的报文生成方法,用户可以根据自身需求配置生成报文的配置信息,该配置信息包括制报设置信息和报文模板,制报设置信息包括报文种类,然后,系统可以根据该配置的报文模板自动获取对应的报文模板以及业务变量业务变量列表,然后根据报文种类与业务数据对象的映射表从业务数据对象中获取对应的业务变量属性值。而这些业务变量可以包括报文中的各种元素。因此,在制报过程中,各种变化的元素的属性值均可以根据报文业务变量业务变量列表及其与业务数据对象的映射表从业务数据对象中获取到。也就是说,各种变化的元素的属性值可以通过配置表通过标签配置的方式来处理,如此有效避免了硬编码带来的维护更新的不便,同时,兼容了各种不同报文种类的差异性,并且对后期频繁的业务需求变更例如swift报文标准升级能够快速响应。因而,该报文生成方法具有很强的兼容性、灵活性和易维护性。

为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

实施例一

参见图1,该图为本申请实施例提供的报文生成方法流程图。

本实施例提供的报文生成方法包括:

s101:获取用户配置的配置信息,所述配置信息包括制报设置信息和报文模板;所述制报设置信息包括报文种类。

作为示例,所述制报设置信息可以包括产品信息、报文种类、制报频率、制报行以及收报行地址等。其中,产品信息用来标记该报文为常规报文还是特殊定制的报文;报文种类繁多,在swift报文标准中均用报文代码表示业务需求。例如,报文代码mt950表示对账单,报文代码mt101表示汇款要求,及其其他不同报文代码表示的不同的业务需求。

所述报文模板是根据swift报文标准以及制报设置信息中相关的业务需求定制的。

例如,制报设置信息中的产品信息设定了该报文模板为常规报文模板还是特殊定制的报文模板,报文种类设定了该报文模板为mt950对应的模板还是其他报文种类对应的报文模板。

s102:根据所述报文模板获取业务变量业务变量列表。

在不同种类的报文中存在不同的业务变量,从而实现不同的业务需求。因而在获得报文模板之后,需要根据所述报文模板上的业务变量获取业务变量业务变量列表。所述业务变量业务变量列表可以用表格表示也可以用其他表述表格的方式表示。

s103:根据报文种类与业务数据对象的映射表从业务数据对象中获取与所述业务变量业务变量列表中的业务变量相对应的业务变量属性值。

所述根据报文种类与业务数据对象的映射表从业务数据对象中获取与所述业务变量业务变量列表中的业务变量相对应的业务变量属性值,具体包括:

根据报文种类与业务数据对象的映射表从业务数据对象中直接获取业务变量属性值;

和/或,

根据报文种类与业务数据对象的映射表从业务数据对象中,获取业务变量属性值,并采用反射调用方法对所述业务变量属性值按照报文标准或业务要求进行加工处理,将加工处理后的业务变量属性值作为与所述业务变量业务变量列表中的业务变量相对应的业务变量属性值。

需要说明的是,所述反射调用方法为动态获取信息以及动态调用对象的方法。

所述业务数据对象是包括业务变量、业务变量属性以及业务变量和业务变量属性之间的映射关系的业务数据库。所述的业务变量属性包括swift报文模板变量代码、对应数据表名以及参数字段名称等属性。不同种类的报文对应不同的业务对象,例如,业务数据对象mt950bean为对账单报文对应的业务数据对象。

然而,根据业务变量业务变量列表获取业务变量属性值的过程为:首先,根据报文种类选择业务数据对象,然后根据业务变量和业务变量属性之间的映射关系,从业务数据对象中获取与所述业务变量业务变量列表中的业务变量相对应的业务变量属性值。

s104:将所述业务变量属性值替换所述报文模板中对应的业务变量。

s105:将报文报头、报文报尾和被所述业务变量属性值替换后的业务变量组合在一起,生成报文。

需要说明的是,swift报文由报文报头、报文报尾和报文正文组成。其中报文报头包括基本报头、应用报头以及用户报头;报文正文包括被所述业务变量属性值替换后的业务变量。

为了方便描述以及本领域技术人员更好地理解本申请提供的技术方案,下面将以mt950报文生成方法为例进行说明。

假设第三银行需要向第四银行发送对账单报文。

首先,获取第三银行配置的的配置信息,该配置信息包括制报设置信息和报文模板,其中,制报设置信息的设置为:产品信息为常规报文;报文种类为对账单,其报文代码为mt950;制报行为第三银行,收报行地址为第四银行以及其他制报设置信息。而报文模板设置为mt950报文模板,并根据mt950报文模板获取业务变量业务变量列表。

参见图2,该图为本申请实施例提供的mt950报文模板示意图。

图2中的报文模板为mt950报文的模板,且该模板中业务变量描述了第四银行的业务需求。该模板中的业务变量可以包括两种类型的变量,其可以分别用<>和[]标识,例如<940/950_币种>201为一个业务变量。然而,根据mt950模板获得的业务变量业务变量列表,参见表1,该表为mt950模板的业务变量业务变量列表。

表1mt950模板的业务变量业务变量列表

在表1中,所述业务变量业务变量列表中包括16个业务变量。

然后,根据业务变量和业务变量属性映射表,从账单报文对应的业务数据对象mt950bean中获取与所述业务变量业务变量列表中的业务变量相对应的业务变量属性值。参见表2,该表为业务变量和业务属性映射表。

表2业务变量和业务变量属性映射表

表2为业务变量和业务变量属性映射表。在该映射表中的每个业务变量对应的业务变量属性包括swift报文模板变量代码、对应数据表名以及参数字段名称。表中给出了<940/950_币种>201对应的参数字段名称为ccycode;[940/950_对账日期]对应的swift报文模板变量代码为getmt940950lnlbaldt和参数字段名称为inlbaldt。

报文模板中业务变量包括两种类型的变量,分别用<>和[]标识。然而,用<>标识的业务变量和用[]标识的业务变量采用不同的方式获取业务变量属性值。其中,用<>标识的业务变量的业务变量属性值可以直接从业务对象中获取,而用[]标识的业务变量的业务变量属性值则需要在采用反射调用方法加工后获取。例如,<940/950_币种>的业务变量属性值则可以直接从业务对象中获取,而[940/950_对账日期]的业务变量属性值则需要在采用反射调用方法加工后获取。

为了方便描述以及本领域技术人员更好地理解本申请提供的技术方案,下面将分别以业务变量<940/950_币种>的业务变量属性值和业务变量[940/950_对账日期]的业务属性值为例进行说明。

参见表2,假设获取名称为xxx的方法是getxxx()。

业务变量<940/950_币种>的业务变量属性值的获取过程为:

表2中业务变量<940/950_币种>对应的业务属性中参数字段名称为ccycode,则在制报时可以通过直接调用getccycode()的方法获取其对应的业务变量属性值cny。

业务变量[940/950_对账日期]的业务属性值的获取过程为:

表2中业务变量[940/950_对账日期]对应的业务属性中swift报文模板变量代码为getmt940950lnlbaldt,而参数字段名称为inlbaldt。然而,在制报时需采用反射调用getmt940950lnlbaldt()的方法获取其对应的业务变量属性值。所述反射调用getmt940950lnlbaldt()的方法过程为先获取第一属性值,然后对按照swift日期标准对第一属性值进行加工处理,进而获取第二属性值,即业务变量[940/950_对账日期]的业务属性值。例如,在反射调用getmt940950lnlbaldt()的方法时,先获取的第一属性值为20140804,然后按照对按照swift日期标准对2014年8月4日进行加工处理,进而获取第二属性值为140804,则业务变量[940/950_对账日期]的业务属性值为140804。

然而,根据业务变量业务变量列表获取业务变量属性值的过程为:首先,根据报文种类选择业务数据对象,然后根据业务变量和业务变量属性映射表中业务变量和业务变量属性之间的映射关系,从业务数据对象中获取与所述业务变量业务变量列表中的业务变量相对应的业务变量属性值。

其次,将所述业务变量属性值替换所述报文模板中对应的业务变量。例如,将<940/950_币种>替换为cny。

参见图3,该图为本申请实施例提供的真实mt950报文示意图。

图3中,mt950报文模板中的业务变量均用相应的业务变量属性值替换,其中cny301为<940/950_币种>的业务变量属性值。

由于报文模板中的内容为报文的正文内容,因而需要将报文报头、报文报尾和被所述业务变量属性值替换后的业务变量组合在一起,生成完整的报账单报文。

本实施例提供的报文生成方法,用户可以根据自身需求配置生成报文的配置信息,该配置信息包括制报设置信息和报文模板,制报设置信息包括报文种类,然后,系统可以根据该配置的报文模板自动获取对应的报文模板以及业务变量业务变量列表,然后根据报文种类与业务数据对象的映射表从业务数据对象中获取对应的业务变量属性值。而这些业务变量可以包括报文中的各种元素。因此,在制报过程中,各种变化的元素的属性值均可以根据报文业务变量业务变量列表及其与业务数据对象的映射表从业务数据对象中获取到。也就是说,各种变化的元素的属性值可以通过配置表通过标签配置的方式来处理,如此有效避免了硬编码带来的维护更新的不便,同时,兼容了各种不同报文种类的差异性,并且对后期频繁的业务需求变更例如swift报文标准升级能够快速响应。因而,该报文生成方法具有很强的兼容性、灵活性和易维护性。

以上实施例提供的报文生成的方法中,其中,所述报文模板中的报文正文不包括循环报文,为了实现对循环报文的处理,本申请实施例提供了一种包括循环报文的报文生成方法,下面结合附图进行详细说明。需要说明的是,所述循环报文包括循环体和非循环体,循环体包括至少一个业务变量。

实施例二

参见图4,该图为本申请实施例二提供的报文生成方法流程图。

本实施例提供的报文生成的方法,其中,所述报文模板中的报文为循环报文,该循环报文包括循环体和非循环体,则该方法包括:

s401至s402与s101至s102相同,为了简要起见,在此不再赘述,详细信息请参见s101至s102的详细描述。

针对非循环体,执行以下步骤s403至s404,针对循环体,执行步骤s405:

s403至s404与s103至s104相同,为了简要起见,在此不再详细描述。

s405:对循环报文的循环体进行处理;

对循环报文的循环体的处理方法是根据报文种类与业务数据对象的映射表从业务数据对象中获取与所述循环体中的业务变量对应的变量属性值清单;根据所述变量属性值清单为所述循环体赋值。

所述变量属性值清单为将循环体根据循环次数展开后的业务变量对应的业务变量属性值清单。所述展开是根据循环次数n将已被业务变量属性值替换后的循环体重复n次。

s406:将报文报头、报文报尾、被所述业务变量属性值替换后的业务变量以及处理后的循环报文的循环体组合在一起,生成报文。

所述处理后的循环报文的循环体包括连续的至少一条已被业务变量属性值替换后的循环体。

为了方便描述以及本领域技术人员更好地理解本申请提供的技术方案,下面将以循环重复次数n=2为例来进行说明。

参见图5,该图为本申请实施例提供的循环报文模板示意图。

图5的报文模板包含循环报文501,在循环报文501中循环开始位置用朝右箭头——>标识,循环结束位置用朝左箭头<——标识,而循环体则位于朝右箭头——>与朝左箭头<——之间。

包含循环报文的报文生成方法为:

首先,进行步骤s401-s402,与实施例一中进行步骤s101-s102的过程相同,根据报文模板获取业务变量列表。

然后,对于非循环体,则进行步骤s403至s404,与实施例一中进行步骤s103-s104处理过程相同。对于循环体则进行步骤s405,即根据报文种类与业务数据对象的映射表从业务数据对象中获取与所述循环体中的业务变量对应的变量属性值清单;根据所述变量属性值清单为所述循环体赋值,从而构成处理后的循环报文。

参见图6,该图为本申请实施例提供的真实循环报文示意图。

图6中第一报文601和第二报文602是由循环报文501经过循环处理后得到的,因而第一报文601和第二报文602的报文内容均是被业务变量属性值替换后循环体的内容。所述第一报文601与第二报文602构成了被处理后的循环报文。

最后,将报文报头、报文报尾、被所述业务变量属性值替换后的业务变量以及处理后的循环报文的循环体组合在一起,生成完整的报文。

需要说明的是,在本申请实施例中,对循环体和非循环体的处理顺序不作限定,具体地,循环体和非循环体的处理顺序可以是先处理循环体,再处理非循环体;还可以是先处理非循环体,再处理循环体。

本实施例提供的报文生成的方法中,报文正文包括循环报文,因而报文正文包括被所述业务变量属性值替换后的业务变量以及处理后的循环报文,因而包括循环的报文生成方法包括获取与所述业务变量业务变量列表中的业务变量相对应的业务变量属性值和对循环报文进行处理,而且在生成的完整的报文时需将报文报头、报文报报尾、被所述业务变量属性值替换后的业务变量以及处理后的循环报文的循环体组合在一起生成。

循环报文依据循环类型可以划分为单循环报文、嵌套循环报文以及单层并列循环报文。其中,单循环报文包括循环开始位置、循环结束位置和循环体。嵌套循环报文包括多层循环,每层循环均包括循环起始位置、循环体以及循环结束位置。单层并列循环报文是所述报文中包括至少两个单层循环报文,每个单层循环报文并列于报文模板中。

为了提高生成报文的效率,不同类型的循环报文需要采用不同的处理方法。下面将依次介绍单循环报文、嵌套循环报文以及单层并列循环报文以及相应的处理方法。

当循环报文为单循环报文时,则对循环报文的循环体进行处理,具体包括:

a1:查找所述循环报文的循环开始位置和循环结束位置;

a2:获取位于循环开始位置和所述循环结束位置之间的业务变量,所述位于循环开始位置和所述循环结束位置之间的业务变量为循环体;

a3:根据报文种类与业务数据对象的映射表从业务数据对象中获取与所述循环体中的业务变量对应的变量属性值清单;

所述变量属性值清单为将循环体根据循环次数展开后的业务变量对应的业务变量属性值清单。

a4:根据所述变量属性值清单为所述循环体赋值。

参见图7,该图为本申请实施例提供的单循环报文模板结构示意图。

图7的报文模板中单循环报文701包括循环开始位置701a、循环体701b和循环结束位置701c。

假设循环次数n=2,

对单循环报文701的处理过程为:

首先,在报文正文中查找单循环报文701的循环开始位置701a以及循环结束位置701c,从而确定位于循环开始位置701a与循环结束位置701c之间的单循环报文701的循环体701b;其次,获取循环体701b中包括的业务变量,形成循环体业务变量列表;然后,根据报文种类确定业务数据对象,并从业务数据对象中获取将循环根据循环次数n=2展开后的业务变量属性值表,即变量属性值清单。最后,根据所述变量属性值清单为所述循环体赋值。

参见图8,该图为本申请实施例提供的真实单循环报文示意图。

图8是由图7中所述报文模板生成的真实报文,其中第三报文801是由循环次数n=2的单循环生成的报文。

由于一封报文的篇幅大小有限,因而,需要根据报文的篇幅大小和报文的长度进行分页。

需要进行分页的单循环报文的循环体的处理方法包括以下步骤:

b1:查找所述循环报文的循环开始位置和循环结束位置;

b2:获取位于循环开始位置和所述循环结束位置之间的业务变量,所述位于循环开始位置和所述循环结束位置之间的业务变量为循环体;

b3:根据报文种类与业务数据对象的映射表从业务数据对象中获取与所述循环体中的业务变量对应的变量属性值清单;

b4:根据所述变量属性值清单的大小以及预设报文篇幅大小计算报文封数;

预设报文篇幅大小可以是预先设置报文篇幅的限定值。

b5:根据所述报文封数生成报文页码标识清单。

b6:根据所述变量属性值清单为所述循环体赋值。

参见图9,该图为本申请实施例提供的单循环分页报文模板结构示意图。

图9中的报文模板包括单循环901。

假设循环次数n=21。

对单循环901的处理过程为:

首先,在报文正文中查找单循环报文901的循环开始位置以及循环结束位置,从而确定位于循环开始位置与循环结束位置之间的单循环报文901的循环体;其次,获取循环体中包括的业务变量,形成循环体业务变量列表;然后,根据报文种类确定业务数据对象,并从业务数据对象中获取将循环根据循环次数n=21展开后的业务变量属性值表,即变量属性值清单。其次,根据所述变量属性值清单的大小以及预设报文篇幅大小计算报文封数,并根据所述报文封数生成报文页码标识清单。最后,根据所述变量属性值清单为所述循环体赋值。

参见图10a,该图为本申请提供的单循环分页真实报文第一页示意图。

参见图10b,该图为本申请提供的单循环分页真实报文第二页示意图。

由图9报文模板生成的报文共两页,第一页为图10a中的真实报文,其中,第四报文1001a为15次被所述业务变量属性值替换后的循环体;而第二页为图10b中的真实报文,其中,第五报文1001b为6次被所述业务变量属性值替换后的循环体。

本实施例提供的包括单循环的报文生成方法中对循环报文的处理过程为根据循环开始位置和循环结束位置获取循环体中的业务变量,然后根据业务数据对象获取所述业务变量对应的变量属性值清单,最后根据所述变量属性值清单为所述循环体赋值。该方法,便于快速生成包括多个重复业务变量的报文,提高了报文生成的速度。

另外,为了实现对报文进行分页,则报文生成方法的所述获取与所述循环体中的业务变量对应的变量属性值清单之后,所述根据所述变量属性值清单为所述循环体赋值之前,还可以包括:根据所述变量属性值清单的大小以及预设报文篇幅大小计算报文封数;根据所述报文封数生成报文页码标识清单。该方法可以根据预设报文篇幅大小以及报文的长度对报文进行分页,从而满足了报文篇幅大小的要求,便于灵活的生成报文。

当报文为嵌套循环报文时,对循环报文的循环体进行处理,具体可以包括以下步骤:

c1:查找所述循环报文的循环开始位置和循环结束位置;

c2:获取位于循环开始位置和所述循环结束位置之间的业务变量,所述位于循环开始位置和所述循环结束位置之间的业务变量为循环体;

c3:根据循环体的层次对所述循环体设置循环体序列顺序;

c4:按设置的循环体序列顺序分别处理不同层次的循环体,其中,每个层次的循环体的处理过程均包括:根据报文种类与业务数据对象的映射表从业务数据对象中获取与所述循环体中的业务变量对应的变量属性值清单;

c5:根据所述变量属性值清单的大小以及预设报文篇幅大小计算报文封数;

c6:根据所述报文封数生成报文页码标识清单;

c7:根据所述变量属性值清单为所述循环体赋值。

需要说明的是,所述设置循环体序列顺序是将嵌套循环的每层循环进行排列,而且排列顺序可以是从最内层循环开始排序,到最外层循环结束,即从内到外;还可以是从最外层循环开始排序,到最内层循环结束,即从外到内。例如,三层循环的嵌套循环,所述循环体序列顺序可以是:最外层循环的循环体、中间层循环的循环体和最内层循环的循环体的次序依次是第一层循环体、第二层循环体和第三层循环体;还可以是:最外层循环的循环体、中间层循环的循环体和最内层循环的循环体的次序依次是第三层循环体、第二层循环体和第一层循环体。

为了方便描述以及本领域技术人员更好地理解本申请提供的技术方案,下面将以两层嵌套循环为例进行说明。

参见图11,该图为本申请实施例提供的嵌套循环报文模板结构示意图。

假设两层嵌套循环的最外层循环的循环次数n1=1,最内层循环的循环次数n2=15。

图11的嵌套循环报文1101包括两层循环,最外层循环的循环起始位置1101a和最外层循环的循环结束位置1101d之间的业务变量为最外层循环的循环体,而最内层循环的循环起始位置1101b和最内层循环的循环结束位置1101c之间的业务变量为最内层循环的循环体。

两层嵌套循环报文的处理过程为:

首先,查找最外层循环的循环起始位置1101a、最外层循环的循环结束位置1101d、最内层循环的循环起始位置1101b以及最内层循环的循环结束位置1101c,并确定最外层循环的循环体和最内层循环的循环体;其次,按照从外到内设置最外层循环为第一层循环和最内层循环为第二层循环,则循环体序列循序为最外层的循环体为第一层循环体和最内层循环的循环体为第二层循环体;然后,根据报文种类与业务数据对象的映射表获取业务数据对象,并先从业务数据对象中获取第二层循环体中的业务变量对应的变量属性值清单,再从业务数据对象中获取第一层循环体中的业务变量对应的变量属性值清单;其次,根据所述变量属性值清单的大小以及预设报文篇幅大小计算报文封数,并根据所述报文封数生成报文页码标识清单;最后,根据所述变量属性值清单为所述循环体赋值。

参见图12a,该图为本申请提供的嵌套循环分页真实报文第一页示意图。

参见图12b,该图为本申请提供的嵌套循环分页真实报文第二页示意图。

参见图12c,该图为本申请提供的嵌套循环分页真实报文第三页示意图。

参见图12d,该图为本申请提供的嵌套循环分页真实报文第四页示意图。

参见图12e,该图为本申请提供的嵌套循环分页真实报文第五页示意图。

参见图12f,该图为本申请提供的嵌套循环分页真实报文第六页示意图。

由图11报文模板生成的报文共六页,第一页为图12a中的真实报文,其中,第六报文1201a为嵌套循环的起始报文;而第六页为图12f中的真实报文,其中,第七报文1201b为嵌套循环的终止报文。

本实施例提供的包括嵌套循环的报文生成方法中循环报文的处理过程是:首先,查找每层循环的循环起始位置和循环结束位置,进而得到每层循环的循环体;其次,按照层次设置循环体序列顺序,并按照所述顺序分别处理不同层次的循环体;然后,根据所述变量属性值清单的大小以及预设报文篇幅大小计算报文封数,并根据所述报文封数生成报文页码标识清单;最后,根据所述变量属性值清单为所述循环体赋值。该方法便于快速生成包括多个重复业务变量的报文,提高了报文生成的速度。

当循环报文为单层并列循环报文时,其相应的循环体处理方法:

针对不同循环体,分别执行以下操作:

d1:查找所述循环报文的循环开始位置和循环结束位置;

d2:获取位于循环开始位置和所述循环结束位置之间的业务变量,所述位于循环开始位置和所述循环结束位置之间的业务变量为循环体;

d3:根据报文种类与业务数据对象的映射表从业务数据对象中获取与所述循环体中的业务变量对应的变量属性值清单;

d4:根据所述变量属性值清单为所述循环体赋值。

需要说明的是,单层并列循环中每个循环的处理过程与单层循环的处理过程相同,当单层并列循环包括n个循环时,则需按照单层循环的处理方法分别处理n个单层循环。

单层并列循环中处理不同循环的顺序不唯一,可以按照循环在报文模板中出现位置的顺序处理,也可以采用其他的顺序处理。

为了方便描述以及本领域技术人员更好地理解本申请提供的技术方案,下面将以包括两个循环的单层并列循环为例进行说明。

参见图13,该图为本申请实施例提供的单层并列循环报文模板示意图。

图13中单层并列循环包括两个循环,第一循环1301和第二循环1302并列出现在报文模板中。

假设第一循环1301的循环次数n3=1,第二循环1302的循环次数n4=1。

单层并列循环的处理过程为:

先处理第一循环1301:首先,在报文正文中查找第一循环的循环开始位置以及循环结束位置,从而确定位于循环开始位置与循环结束位置之间的第一循环的循环体;其次,获取循环体中包括的业务变量,形成循环体业务变量列表;然后,根据报文种类确定业务数据对象,并从业务数据对象中获取将循环根据循环次数展开后的业务变量属性值表,即变量属性值清单。其次,根据所述变量属性值清单的大小以及预设报文篇幅大小计算报文封数,并根据所述报文封数生成报文页码标识清单。最后,根据所述变量属性值清单为所述循环体赋值。

再处理第二循环1302,所述循环的处理过程和第一循环1301的处理过程相同,在此不再赘述。

参见图14,该图为本申请提供的嵌套循环真实报文示意图。

图14中第八报文1401由图13中的第一循环1301生成的,第九报文1402由图13中的第二循环1302生成的。

本申请提供的报文生成方法,所述报文模板中包括循环报文,该方法在所述根据所述制报设置信息获取与所述制报设置信息对应的报文模板后,所述将报文报头、报文报尾和被所述业务变量属性值替换后的业务变量组合在一起,生成报文前,还包括:对循环报文进行处理;最后需将报文报头、报文报尾、被所述业务变量属性值替换后的业务变量以及处理后的循环报文组合在一起,生成报文。该方法便于快速生成包括多个重复业务变量的报文,提高了报文生成的速度。另外,根据不同类型的循环报文,采用不同的处理方式,提高了循环报文的生成速度,从而加快了报文的生成速度。

基于以上实施例提供的一种报文生成方法,本申请实施例还提供一种报文生成装置,下面结合附图进行详细说明。

实施例三

参见图15,该图为本申请实施例提供的报文生成装置结构示意图。

本实施例提供的报文生成装置包括:

配置信息获取单元1501,用于获取用户配置的制报设置信息和报文模板;所述制报设置信息包括报文种类;

业务变量列表获取单元1502,用于根据所述报文模板获取业务变量列表;

业务变量属性值获取单元1503,用于根据报文种类与业务数据对象的映射表从业务数据对象中获取与所述业务变量列表中的业务变量相对应的业务变量属性值;

替换单元1504,用于将所述业务变量属性值替换所述报文模板中对应的业务变量;

组合单元1505,用于将报文报头、报文报尾和被所述业务变量属性值替换后的业务变量组合在一起,生成报文。

需要说明的是,所述业务变量属性值获取单元-1503,具体包括:

第一获取子单元,用于根据报文种类与业务数据对象的映射表从业务数据对象中直接获取业务变量属性值;

和/或,

第二获取子单元,用于根据报文种类与业务数据对象的映射表从业务数据对象中,获取业务变量属性值,并采用反射调用方法对所述业务变量属性值按照报文标准或业务要求进行加工处理,将加工处理后的业务变量属性值作为与所述业务变量列表中的业务变量相对应的业务变量属性值。

在上述报文生成装置,可以根据报文的类型、报文的业务需求以及swift报文标准灵活地生成报文。

然而,实际应用中,所述报文模板的报文正文中包括循环报文,为了实现使所述报文生成装置生成包括循环的报文,所述装置还包括:

处理单元,用于获取用户配置的配置信息后,所述将报文报头、报文报尾和被所述业务变量属性值替换后的业务变量组合在一起,生成报文前,对循环报文的循环体进行处理;

所述组合单元具体用于:将报文报头、报文报尾、被所述业务变量属性值替换后的业务变量以及处理后的循环报文组合在一起,生成报文。

本实施例提供的报文生成装置包括配置信息获取单元1501、业务变量列表获取单元1502、业务变量属性值获取单元1503、替换单元1504和组合单元1505。该报文生成装置可以根据报文的类型、报文的业务需求以及swift报文标准灵活地生成报文,而且该装置还易于维护。另外,为了实现使所述报文生成装置生成包括循环的报文,所述装置还包括处理单元将处理循环报文,从而实现了生成包括循环的报文,从而提高了该报文生成装置生成报文的灵活性。

应当理解,在本申请中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“a和/或b”可以表示:只存在a,只存在b以及同时存在a和b三种情况,其中a,b可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。

以上所述,仅是本申请的较佳实施例而已,并非对本申请作任何形式上的限制。虽然本申请已以较佳实施例揭露如上,然而并非用以限定本申请。任何熟悉本领域的技术人员,在不脱离本申请技术方案范围情况下,都可利用上述揭示的方法和技术内容对本申请技术方案做出许多可能的变动和修饰,或修改为等同变化的等效实施例。因此,凡是未脱离本申请技术方案的内容,依据本申请的技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均仍属于本申请技术方案保护的范围内。

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