本申请涉及数据通信技术领域,具体涉及一种报文转换方法、装置、设备及存储介质。
背景技术:
环球同业银行金融电讯协会(societyforworldwideinterbankfinancialtelecommunications.c.,swift)是一个国际银行同业间非盈利性的国际合作组织,swift运营着世界级的金融电文网络,银行和其他金融机构通过它和同业交换电文来完成金融交易。
在swift运营的金融电文网络中,mt101报文和mt103报文是金融交易中两种较为常见的报文。其中,mt101报文通常由企业发送到开户银行或者代理银行,以请求向指定的收款方汇出款项,一个mt101报文可以包含多笔交易请求。mt103报文通常由汇款行或者受汇款行委托的银行,直接或者通过代理行发送给另一家银行,以指示其支付相关款项,一个mt103报文至包含一笔交易请求。
在实际应用中,银行收到企业发来的mt101报文后,需要进一步基于该mt101报文生成mt103报文,并将该mt103报文发送到下一银行,如何实现mt101报文至mt103报文的灵活转换,已成为目前相关领域研究的重点。
技术实现要素:
本申请实施例提供了一种报文转换方法、装置、设备及存储介质,能够灵活地将mt101报文转换为mt103报文。
有鉴于此,本申请第一方面提供了一种报文转换方法,所述方法包括:
获取经初始化处理后的变量定义表;
解析动态结构化查询语言sql1读取目标mt101报文,将所述目标mt101报文中目标场次的变量保存至所述变量定义表;
解析动态sqln根据所述变量定义表中的内容生成目标mt103报文;所述动态sql1和所述动态sqln是基于mt101报文中的场次与所述mt103报文中的场次之间的对应关系确定的。
可选的,在所述解析动态sqln根据所述变量定义表中的内容生成目标mt103报文之前,所述方法还包括:
解析动态sql2至动态sqln-1,从报文相关表中获取变量保存至所述变量定义表;所述报文相关表用于存储mt103报文中与mt101报文不具有对照关系的场次的变量。
可选的,所述方法还包括:
基于配置文件中的参数连接数据库;
从所述数据库中获取所述报文相关表。
可选的,在所述解析动态sqln根据所述变量定义表中的内容生成目标mt103报文之后,所述方法还包括:
断开与所述数据库的连接。
可选的,所述动态sql可根据预设变换需求更改。
本申请第二方面提供了一种报文转换装置,所述装置包括:
获取模块,用于获取经初始化处理后的变量定义表;
mt101读取模块,用于解析动态结构化查询语言sql1读取目标mt101报文,将所述目标mt101报文中目标场次的变量保存至所述变量定义表;
mt103生成模块,用于解析动态sqln根据所述变量定义表中的内容生成目标mt103报文;所述动态sql1和所述动态sqln是基于mt101报文中的场次与所述mt103报文中的场次之间的对应关系确定的。
可选的,所述装置还包括:
其他变量读取模块,用于解析动态sql2至动态sqln-1,从报文相关表中获取变量保存至所述变量定义表;所述报文相关表用于存储mt103报文中与mt101报文不具有对照关系的场次的变量。
可选的,所述装置还包括:
数据库连接模块,用于基于配置文件中的参数连接数据库;
所述获取模块,还用于从所述数据库中获取所述报文相关表。
可选的,所述装置还包括:
数据库断开模块,用于断开与所述数据库的连接。
可选的,所述动态sql可根据预设变换需求更改。
本申请第三方面提供了一种设备,所述设备包括:处理器和存储器;
所述存储器,用于存储计算机程序;
所述处理器,用于调用所述计算机程序,以执行第一方面所述的报文转换方法。
本申请第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质用于存储计算机程序,所述计算机程序用于执行上述第一方面所述的报文转换方法。
本申请第五方面提供了一种包括指令的计算机程序产品,当其在计算机上运行时,使得所述计算机执行上述第一方面所述的报文转换方法。
从以上技术方案可以看出,本申请实施例具有以下优点:
本申请实施例提供了一种报文转换方法,在该方法中,电子设备先获取经初始化处理后得到的变量定义表;然后解析动态结构化查询语言(structuredquerylanguage,sql),读取待转换的目标mt101报文,将该目标mt101报文中目标场次的变量保存到变量定义表中,此处的目标场次指的是与mt103报文中的场次具有对照关系的场次;进而解析动态sqln,根据变量定义表中的内容确定目标mt103报文中相关场次的内容,生成目标mt103报文。如此,基于mt101报文与mt103报文之间存在的相关对应关系,通过动态sql建立该对应关系,实现mt101报文至mt103报文的灵活转换。
附图说明
图1为本申请实施例提供的报文转换方法的流程示意图;
图2为本申请实施例提供的mt101报文与mt103报文之间对应关系示意图;
图3为本申请实施例提供的报文转换装置的结构示意图;
图4为本申请实施例提供的设备的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
为了实现mt101报文至mt103报文的灵活转换,本申请实施例提供了一种报文转换方法,该方法利用基于mt101报文与mt103报文之间的相关对应关系建立的动态sql,实现mt101报文至mt103报文的转换。
具体的,在本申请实施例提供的报文转换方法中,电子设备先获取经初始化处理后得到的变量定义表,然后解析动态sql1读取待转换的目标mt101报文,将该目标mt101报文中目标场次的变量保存至变量定义表,此处的目标场次是指mt101报文中与mt103报文中的场次具有对照关系的场次;进而解析动态sqln根据变量定义表中的内容生成目标mt103报文,上述动态sql1和动态sqln均是基于mt101报文中的场次与mt103报文中的场次之间的对应关系确定的。
上述报文转换方法考虑到了mt101报文中的场次与mt103报文中的场次具有对应关系,利用基于这种对应关系创建的动态sql,将目标mt101报文转换为目标mt103报文,实现了mt101报文至mt103报文的灵活转换。
需要说明的是,用于执行本申请实施例提供的报文转换方法的设备具体可以为具备数据处理功能的设备,如终端设备、服务器等。
下面通过实施例对本申请提供的报文转换方法进行介绍。
参见图1,图1为本申请实施例提供的报文转换方法的流程示意图。如图1所示,该报文转换方法包括以下步骤:
步骤101:获取经初始化处理后的变量定义表。
当需要将目标mt101报文转换为目标mt103报文时,读取变量定义表,并对该变量定义表中的变量进行初始化处理。
需要说明的是,在本申请实施例提供的技术方案中,可以在该变量定义表swvars中定义变量名、变量长度、变量类型、变量详细说明等信息,其具体可以用于保存目标mt101报文中各场次的变量、用于组成mt103报文的变量以及保存其他报文相关表中字段的变量。
需要说明的是,在实际应用中,在获取该变量定义表之前,通常需要基于配置文件中的参数连接数据库,待连接上数据库后,从该数据库中读取用于转换mt103报文的相关数据。
此处的配置文件init.conf用于保存数据库标识oracle_sid、用户名和密码等参数。基于该配置文件init.conf连接数据库时,可以基于数据库标识oracle_sid确定所要连接的数据库,然后利用配置文件init.conf中的用户名和密码完成身份验证,待身份验证通过后,即可与数据库相连。
步骤102:解析动态结构化查询语言sql1读取目标mt101报文,将所述目标mt101报文中目标场次的变量保存至所述变量定义表。
完成对于变量定义表中变量的初始化处理后,电子设备可以进一步解析预先创建的动态sql1,读取待转换的目标mt101报文,将其中目标场次的明细内容保存至变量定义表中的相应字段。
需要说明的是,此处的目标mt101报文中的目标场次具体是指与mt103报文中的场次具有对应关系的场次。如图2所示,即为一种示例性的mt101报文中的场次与mt103报文中的场次之间的对应关系示意图,其中具有连接关系的场次之间即为存在对应关系的场次,例如,mt101报文中的场次50forgorh与mt103报文中场次50aorfork具有对应关系。
一种示例性的动态sql1语句如下:sql1=insertintoappmt101detl(字段1,字段2,字段3,字段4…)values(:mt101_var20,:mt101_var21,:mt101_var30,:mt101_var32….)。其中,mt101_var20、mt101_var21、mt101_var30、mt101_var32等均为变量定义表中的变量。
在实际应用中,mt103报文中还存在一些与mt101报文不具有对应关系的场次,例如,mt103报文中的20场通常需要重新生成(mt101报文中包含多笔明细,mt103报文中只包一笔明细,mt101报文中的20场无法对应mt103报文中的20场),71f(sender’scharges)\71g(receiver’scharges)需要单独参数维护并与交易金额(32场)相关,因此,这些场次也需要通过定义动态sql从报文相关表中获取。
针对上述情况,电子设备通常需要解析sql2、sql3、sql4、……、sqln-1,从报文相关表中获取变量保存至变量定义表中,此处的报文相关表具体用于存储mt103报文中与mt101报文中不具有对应关系的场次的变量,如参数表(appparam)、生成mt103报文20场所需的表(seq_mt103)等。
一种示例性的动态sql2、动态sql3、动态sql4如下:
sql2=selectlpad(seq_mt103,16,’0’)into:mt103_var20fromdual;(mt103报文20场);
sql3=selectvalueinto:bocbicfromappparamwherekey=’bic’--发送方bic;
sql4=selectvalueinto:var71ffromappparamwherekey=’sender_charge’-发送方收费金额;
其中,mt103_var20、bocbic、var17f均为变量定义表中的变量。
步骤103:解析动态sqln根据所述变量定义表中的内容生成目标mt103报文;所述动态sql1和所述动态sqln是基于mt101报文中的场次与所述mt103报文中的场次之间的对应关系确定的。
最后解析动态sqln,将变量定义表中的所有变量保存到缓存区,基于缓存区中的内容生成目标mt103报文,并发送该目标mt103报文。
一种示例性的动态sqln如下:
sqln=select‘{1:f01’||变量1||变量2||….||”into:mt103_bufferfromdual。其中,mt103_buffer为变量定义表中的变量。
需要说明的是,在实际应用中,通常需要循环执行上述步骤102和步骤103,直至目标mt101报文中的所有明细都处理完毕为止。
需要说明的是,上文中动态sql1至sqln通常存储在动态sql表swsqlconf中,这些动态sql均可以根据预设变换需求进行更改。
应理解,若在获取变量定义表之前与数据库构建了连接,生成目标mt103报文后,还需要进一步断开与数据库之间的连接。
在上述报文转换方法中,电子设备先获取经初始化处理后得到的变量定义表;然后解析动态结构化查询语言(structuredquerylanguage,sql),读取待转换的目标mt101报文,将该目标mt101报文中目标场次的变量保存到变量定义表中,此处的目标场次指的是与mt103报文中的场次具有对照关系的场次;进而解析动态sqln,根据变量定义表中的内容确定目标mt103报文中相关场次的内容,生成目标mt103报文。如此,基于mt101报文与mt103报文之间存在的相关对应关系,通过动态sql建立该对应关系,实现mt101报文至mt103报文的灵活转换。
本申请实施例还提供了一种报文转换装置,参见图3,图3为本申请实施例提供的报文转换装置的结构示意图。如图3所示,该装置包括:
获取模块301,用于获取经初始化处理后的变量定义表;
mt101读取模块302,用于解析动态结构化查询语言sql1读取目标mt101报文,将所述目标mt101报文中目标场次的变量保存至所述变量定义表;
mt103生成模块303,用于解析动态sqln根据所述变量定义表中的内容生成目标mt103报文;所述动态sql1和所述动态sqln是基于mt101报文中的场次与所述mt103报文中的场次之间的对应关系确定的。
可选的,所述装置还包括:
其他变量读取模块,用于解析动态sql2至动态sqln-1,从报文相关表中获取变量保存至所述变量定义表;所述报文相关表用于存储mt103报文中与mt101报文不具有对照关系的场次的变量。
可选的,所述装置还包括:
数据库连接模块,用于基于配置文件中的参数连接数据库;
所述获取模块,还用于从所述数据库中获取所述报文相关表。
可选的,所述装置还包括:
数据库断开模块,用于断开与所述数据库的连接。
可选的,所述动态sql可根据预设变换需求更改。
在上述报文转换装置中,电子设备先获取经初始化处理后得到的变量定义表;然后解析动态结构化查询语言(structuredquerylanguage,sql),读取待转换的目标mt101报文,将该目标mt101报文中目标场次的变量保存到变量定义表中,此处的目标场次指的是与mt103报文中的场次具有对照关系的场次;进而解析动态sqln,根据变量定义表中的内容确定目标mt103报文中相关场次的内容,生成目标mt103报文。如此,基于mt101报文与mt103报文之间存在的相关对应关系,通过动态sql建立该对应关系,实现mt101报文至mt103报文的灵活转换。
本申请实施例还提供了一种电子设备。参见图4,图4为本申请实施例提供的一种终端设备的结构示意图。为了便于说明,仅示出了与本申请实施例相关的部分,具体技术细节未揭示的,请参照本申请实施例方法部分。该终端可以为包括计算机、平板电脑、个人数字助理(英文全称:personaldigitalassistant,英文缩写:pda)等任意终端设备,以终端为计算机为例:
图4示出的是与本申请实施例提供的终端相关的计算机的部分结构的框图。参考图4,计算机包括:射频(英文全称:radiofrequency,英文缩写:rf)电路410、存储器420、输入单元430、显示单元440、传感器450、音频电路460、无线保真(英文全称:wirelessfidelity,英文缩写:wifi)模块470、处理器480、以及电源490等部件。本领域技术人员可以理解,图4中示出的计算机结构并不构成对计算机的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
存储器420可用于存储软件程序以及模块,处理器480通过运行存储在存储器420的软件程序以及模块,从而执行计算机的各种功能应用以及数据处理。存储器420可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据计算机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器420可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
处理器440是计算机的控制中心,利用各种接口和线路连接整个计算机的各个部分,通过运行或执行存储在存储器420内的软件程序和/或模块,以及调用存储在存储器420内的数据,执行计算机的各种功能和处理数据,从而对计算机进行整体监控。可选的,处理器480可包括一个或多个处理单元;优选的,处理器480可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器480中。
在本申请实施例中,该终端所包括的处理器480还具有以下功能:
获取经初始化处理后的变量定义表;
解析动态结构化查询语言sql1读取目标mt101报文,将所述目标mt101报文中目标场次的变量保存至所述变量定义表;
解析动态sqln根据所述变量定义表中的内容生成目标mt103报文;所述动态sql1和所述动态sqln是基于mt101报文中的场次与所述mt103报文中的场次之间的对应关系确定的。
可选的,所述处理器480还用于执行本申请实施例提供的报文转换方法的任意一种实现方式的步骤。
本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质用于存储计算机程序,该计算机程序用于执行上述方法实施例介绍的报文转换方法。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(英文全称:read-onlymemory,英文缩写:rom)、随机存取存储器(英文全称:randomaccessmemory,英文缩写:ram)、磁碟或者光盘等各种可以存储计算机程序的介质。
应当理解,在本申请中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“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可以是单个,也可以是多个。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。