CN113992765A - 一种基于FreeMarker模板引擎的金融报文转换方法及*** - Google Patents

一种基于FreeMarker模板引擎的金融报文转换方法及*** Download PDF

Info

Publication number
CN113992765A
CN113992765A CN202111619118.9A CN202111619118A CN113992765A CN 113992765 A CN113992765 A CN 113992765A CN 202111619118 A CN202111619118 A CN 202111619118A CN 113992765 A CN113992765 A CN 113992765A
Authority
CN
China
Prior art keywords
message
target system
conversion
template
transaction
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202111619118.9A
Other languages
English (en)
Inventor
关文涛
王洋
李冰
孔祥锦
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Yunnan Nantian Electronics Information Corp ltd
Beijing Nantian Electronics Information Co ltd
Original Assignee
Yunnan Nantian Electronics Information Corp ltd
Beijing Nantian Electronics Information Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Yunnan Nantian Electronics Information Corp ltd, Beijing Nantian Electronics Information Co ltd filed Critical Yunnan Nantian Electronics Information Corp ltd
Priority to CN202111619118.9A priority Critical patent/CN113992765A/zh
Publication of CN113992765A publication Critical patent/CN113992765A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/08Protocols for interworking; Protocol conversion
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

一种基于FreeMarker模板引擎的金融报文转换方法及***,担任了源***与目标***通讯中间件角色,由于源***与目标***两方的报文格式不一致,所以报文转换装置中间转换,即拆解源***上送报文到Map中,经过目标***的字典映射等方面转换后,将上送目标***的报文内容与上送目标***的FreeMarker报文模板进行组装,目标***响应则是一种相应的逆操作。总而言之,FreeMarker模板在主数据集成交互中提供了更多的可扩展性,因为基于FreeMarker的特性,在进行主数据与目标***集成时,不需要进行代码和接口的二次开发,就能方便快捷地实现特殊报文处理,使得源***与目标***的数据集成交互更加高效,并具有更好的可移植性。

Description

一种基于FreeMarker模板引擎的金融报文转换方法及***
技术领域
本发明涉及源***与目标***之间的金融报文转换技术,特别是一种基于FreeMarker模板引擎的金融报文转换方法及***。
背景技术
在当前信息技术快速发展的大背景下,金融行业尤其是银行***也面临需要不断更新换代的问题。其中,作为银行信息科技中起支撑作用的目标***,已经逐渐无法满足行业发展需要,各家银行纷纷开展新一代目标***建设任务,由传统集中式技术架构向分布式、微服务、云计算领域更新换代。在新老目标***替换过程中,由于与目标***交互的源***繁多且业务关系复杂,会造成项目整体开发难度大、替换进度慢等难点。本发明的报文转换***主要用于解决各源***调用目标***报文接口不一致、报文转换效率低等问题,可以在最大程度减少源***调用的目标***服务接口的变化,对***渠道提供的实时交易数据接口进行交易服务数据接口转换,满足各家银行快速上线目标***,尽量降低源***改动而带来的上线周期长的问题,保障顺利完成目标上线任务。其涉及到的开发工具FreeMarker是一种基于模板和要改变的数据,并用来生成输出文本(HTL网页、电子邮件、配置文件、源代码等)的模板引擎。模板编写为FreeMarker Template Language(FTL),它是简单的、专用的语言,不是像PHP那样成熟的编程语言。在模板中,可以专注于如何展现数据,而在模板之外可以专注于要展示什么数据。
发明内容
本发明针对现有技术的缺陷或不足,提供一种基于FreeMarker模板引擎的金融报文转换方法及***。
本发明的技术解决方案如下:
一种基于FreeMarker模板引擎的金融报文转换方法,用于源***与目标***之间的报文传输,所述源***是金融交易报文的发起方,所述目标***是所述金融交易报文的响应方,所述源***的发起金融交易报文因不符合所述目标***的响应要求而存在报文交互障碍,其特征在于,包括以下步骤以消除所述报文交互障碍:
步骤A,源***发送金融交易报文到金融报文转换***的前置消息队列;
步骤B,金融报文转换***读取所述前置消息队列中的所述金融交易报文数据,根据交易码字段匹配FreeMaker模板引擎中预设模板进行报文转换;
步骤C,将转换生成的目标***格式的报文通过tuxedo适配层发送给目标***。
步骤D,所述目标***根据所述源***的发起金融交易报文生成响应金融交易报文,并将所述响应金融交易报文发送到所述金融报文转换***的应答接收队列;
步骤E,所述金融报文转换***对所述响应金融交易报文进行报文逆转换后返回到所述源***。
所述步骤A中的消息队列对所述源***的发起金融交易报文进行缓存处理,所述缓存处理包括报文字段的映射缓存,报文值的映射缓存,以及全报文模板缓存,缓存采用初始化数据库加载到执行引擎中,由执行引擎调用缓存参数,完成使用缓存的目的。
所述步骤B中的报文转换采用以下3种方式中一种:只针对报文数据而不针对报文结构;只针对报文结构而不针对报文数据;报文结构和报文数据兼具。
所述步骤B中的报文转换包括以下具体步骤:
步骤B1,创建一个Configuration对象,直接new一个对象,构造方法的参数就是freemarker对应的版本号;
步骤B2,设置模板文件所在的路径;
步骤B3,设置模板文件使用的字符集;
步骤B4,加载一个模板,创建一个模板对象;
步骤B5,创建一个模板使用的数据集;
步骤B6,创建一个Writer对象,指定生成的文件名;
步骤B7,调用模板对象的process方法输出文件;
步骤B8,关闭流。
所述金融报文转换***在启动时包括初始化freemarker模板路径,初始化配置依赖及类依赖,所述配置依赖路径为/mid/WebContent/WEB-INF/env/context/mid.xml;所述类依赖路径为spc.webos.util.SystemUtil;所述初始化freemarker模板包括配合freemarker的懒加载策略,在每支交易第一次使用的时候对应的freemarker模板被加载到***缓存中,之后再调用该交易则会从缓存中读取模板信息以提高交易性能。
所述金融报文转换***在初始化时,包括按交易配置好各交易源***报文结构到目标***报文结构的映射关系,并导入到数据库中,同时加载到应用缓存区。
所述步骤B中的报文转换为只针对报文结构而不针对报文数据的报文结构转换,所述金融报文转换***按交易配置好各交易源***报文结构到目标***报文结构的映射关系,并导入到数据库中,同时加载到应用缓存区;当所述金融报文转换***接收到做完字段映射以及字典码转换的报文后,先从源***报文头中找到该报文的交易码,通过交易码,从应用缓存中找到该交易的报文结构映射关系后按照以下流程开始转换:
读取源***报文stdfix标签下的内容,按报文定长头的映射关系对数据补位并转换为目标***定长头放到报文开始;
读取源***报文stdxmlreq标签下的内容,按XML报文头的映射关系将数据转换到目标***XML报文头中;
读取源***报文request下XML报文体的所有内容,按该交易XML报文体配置的映射关系将数据转换到目标***XML报文体中;
然后组装目标***报文,先将目标***XML报文头和目标***XML报文体组装,合并到目标***XML报文结构中,然后将目标***定长头和目标***XML报文合并为整体报文;
根据配置在整体报文前加上报文长度位,然后将该报文通过通讯适配器Tuxedo发送到目标***。
一种基于FreeMarker模板引擎的金融报文转换***,其特征在于,包括包括与报文转换装置分别连接的报文接收装置、报文发送装置和FreeMarker模板引擎;
所述报文接收装置从源***接收报文数据到消息队列;消息队列MQ是一种应用程序对应用程序的通信方法,应用程序通过写和检索出入列队的针对应用程序的数据来通信,而无需专用连接来链接它们,队列的使用除去了接收和发送应用程序同时执行的要求;
所述报文转换装置启动时会初始化FreeMarker模板路径,初始化依赖配置及依赖类,配置及初始化方法包括配合FreeMarker的懒加载策略在每支交易第一次使用的时候,对应的FreeMarker模板会被加载到***缓存中,之后再调用该交易则会从缓存中读取模板信息以提高交易性能,报文转换装置是担任了源***与目标***通讯中间件角色,由于源***与目标***两方的报文格式不一致,所以报文转换装置中间转换,即拆解源***上送报文到Map中,经过目标***的字典映射等方面转换后,将上送目标***的报文内容与上送目标***的FreeMarker报文模板进行组装,目标***响应则是一种相应的逆操作;
所述报文发送装置通过Tuxedo通信选择JAVA的方式调用Jolt连接池,所述Jolt通用调用包需要通过配置文件来进行配置,根据协议文档的内容,获取Tuxedo服务返回的各个数据项,将生成的统一格式报文发送给目标***。
本发明的技术效果如下:本发明一种基于FreeMarker模板引擎的金融报文转换方法及***,担任了源***与目标***通讯中间件角色,由于源***与目标***两方的报文格式不一致,所以报文转换装置中间转换,即拆解源***上送报文到Map中,经过目标***的字典映射等方面转换后,将上送目标***的报文内容与上送目标***的FreeMarker报文模板进行组装,目标***响应则是一种相应的逆操作。总而言之,FreeMarker模板在主数据集成交互中提供了更多的可扩展性,因为基于FreeMarker的特性,在进行主数据与目标***集成时,不需要进行代码和接口的二次开发,就能方便快捷地实现特殊报文处理,使得源***与目标***的数据集成交互更加高效,并具有更好的可移植性。
附图说明
图1是实施本发明一种基于FreeMarker模板引擎的金融报文转换方法的工作流程示意图。图1中包括步骤A,源***发送交易报文到金融报文转换***的前置消息队列;步骤B,金融报文转换***读取所述前置消息队列中的所述交易报文数据,根据交易码字段匹配FreeMaker模板引擎中预设模板进行报文转换;步骤C,将转换生成的目标***格式的报文通过tuxedo适配层发送给目标***。FreeMarker是一种基于模板和要改变的数据,并用来生成输出文本(HTL网页、电子邮件、配置文件、源代码等)的模板引擎。Tuxedo是通讯适配器。消息队列(MQ)是一种应用程序对应用程序的通信方法,应用程序通过写和检索出入队列的针对应用程序的数据(消息)来通信,而无需专用连接来链接它们,队列的使用除去了接收和发送应用程序同时执行的要求。
图2是实施本发明一种基于FreeMarker模板引擎的金融报文转换***结构示意图。图2中金融报文转换***包括与报文转换装置分别连接的报文接收装置、报文发送装置和FreeMarker模板引擎。
具体实施方式
下面结合附图(图1-图2)对本发明进行说明。
图1是实施本发明一种基于FreeMarker模板引擎的金融报文转换方法的工作流程示意图。图2是实施本发明一种基于FreeMarker模板引擎的金融报文转换***结构示意图。参考图1至图2所示,一种基于FreeMarker模板引擎的金融报文转换方法,用于源***与目标***之间的报文传输,所述源***是金融交易报文的发起方,所述目标***是所述金融交易报文的响应方,所述源***的发起金融交易报文因不符合所述目标***的响应要求而存在报文交互障碍,其特征在于,包括以下步骤以消除所述报文交互障碍:步骤A,源***发送金融交易报文到金融报文转换***的前置消息队列;步骤B,金融报文转换***读取所述前置消息队列中的所述金融交易报文数据,根据交易码字段匹配FreeMaker模板引擎中预设模板进行报文转换;步骤C,将转换生成的目标***格式的报文通过tuxedo适配层发送给目标***。步骤D,所述目标***根据所述源***的发起金融交易报文生成响应金融交易报文,并将所述响应金融交易报文发送到所述金融报文转换***的应答接收队列;步骤E,所述金融报文转换***对所述响应金融交易报文进行报文逆转换后返回到所述源***。
所述步骤A中的消息队列对所述源***的发起金融交易报文进行缓存处理,所述缓存处理包括报文字段的映射缓存,报文值的映射缓存,以及全报文模板缓存,缓存采用初始化数据库加载到执行引擎中,由执行引擎调用缓存参数,完成使用缓存的目的。所述步骤B中的报文转换采用以下3种方式中一种:只针对报文数据而不针对报文结构;只针对报文结构而不针对报文数据;报文结构和报文数据兼具。
所述步骤B中的报文转换包括以下具体步骤:步骤B1,创建一个Configuration对象,直接new一个对象,构造方法的参数就是freemarker对应的版本号;步骤B2,设置模板文件所在的路径;步骤B3,设置模板文件使用的字符集;步骤B4,加载一个模板,创建一个模板对象;步骤B5,创建一个模板使用的数据集;步骤B6,创建一个Writer对象,指定生成的文件名;步骤B7,调用模板对象的process方法输出文件;步骤B8,关闭流。
所述金融报文转换***在启动时包括初始化freemarker模板路径,初始化配置依赖及类依赖,所述配置依赖路径为/mid/WebContent/WEB-INF/env/context/mid.xml;所述类依赖路径为spc.webos.util.SystemUtil;所述初始化freemarker模板包括配合freemarker的懒加载策略,在每支交易第一次使用的时候对应的freemarker模板被加载到***缓存中,之后再调用该交易则会从缓存中读取模板信息以提高交易性能。所述金融报文转换***在初始化时,包括按交易配置好各交易源***报文结构到目标***报文结构的映射关系,并导入到数据库中,同时加载到应用缓存区。
所述步骤B中的报文转换为只针对报文结构而不针对报文数据的报文结构转换,所述金融报文转换***按交易配置好各交易源***报文结构到目标***报文结构的映射关系,并导入到数据库中,同时加载到应用缓存区;当所述金融报文转换***接收到做完字段映射以及字典码转换的报文后,先从源***报文头中找到该报文的交易码,通过交易码,从应用缓存中找到该交易的报文结构映射关系后按照以下流程开始转换:读取源***报文stdfix标签下的内容,按报文定长头的映射关系对数据补位并转换为目标***定长头放到报文开始;读取源***报文stdxmlreq标签下的内容,按XML报文头的映射关系将数据转换到目标***XML报文头中;读取源***报文request下XML报文体的所有内容,按该交易XML报文体配置的映射关系将数据转换到目标***XML报文体中;然后组装目标***报文,先将目标***XML报文头和目标***XML报文体组装,合并到目标***XML报文结构中,然后将目标***定长头和目标***XML报文合并为整体报文;根据配置在整体报文前加上报文长度位,然后将该报文通过通讯适配器Tuxedo发送到目标***。
一种基于FreeMarker模板引擎的金融报文转换***,包括包括与报文转换装置分别连接的报文接收装置、报文发送装置和FreeMarker模板引擎;所述报文接收装置从源***接收报文数据到消息队列;消息队列MQ是一种应用程序对应用程序的通信方法,应用程序通过写和检索出入列队的针对应用程序的数据来通信,而无需专用连接来链接它们,队列的使用除去了接收和发送应用程序同时执行的要求;所述报文转换装置启动时会初始化FreeMarker模板路径,初始化依赖配置及依赖类,配置及初始化方法包括配合FreeMarker的懒加载策略在每支交易第一次使用的时候,对应的FreeMarker模板会被加载到***缓存中,之后再调用该交易则会从缓存中读取模板信息以提高交易性能,报文转换装置是担任了源***与目标***通讯中间件角色,由于源***与目标***两方的报文格式不一致,所以报文转换装置中间转换,即拆解源***上送报文到Map中,经过目标***的字典映射等方面转换后,将上送目标***的报文内容与上送目标***的FreeMarker报文模板进行组装,目标***响应则是一种相应的逆操作;所述报文发送装置通过Tuxedo通信选择JAVA的方式调用Jolt连接池,所述Jolt通用调用包需要通过配置文件来进行配置,根据协议文档的内容,获取Tuxedo服务返回的各个数据项,将生成的统一格式报文发送给目标***。
为了解决现有技术中存在的多种源报文格式的数据不能进行统一转换或转换效率低等问题,本发明提供了一种基于FREEMARKER模板引擎的报文数据转换方法,达到了高效接受多种来源、多格式的报文数据,并能够快速转换的效果。本发明要解决的技术问题通过以下技术方案实现:
一方面,本发明提供了一种基于FreeMarker模板的报文数据转换方法,包括以下步骤:
步骤S1、报文发起方***(源***)发送交易报文到报文转换***接收模块(消息队列);由消息队列将报文进行缓存处理;缓存服务包括:报文字段的映射缓存、报文值的映射缓存(字典映射缓存)、以及全报文模板的缓存。缓存采用初始化数据库加载到执行引擎中。由执行引擎调用缓存参数,完成使用缓存的目的。
步骤S2、报文转换***读取消息队列中的报文数据,根据交易码字段匹配FreeMaker模板引擎中预设模板进行报文格式转换,生成目标***格式报文;
步骤S3、处理报文格式转换后,报文转换***通过tuxedo或者MQ将目标格式报文发送给目标***。
进一步的,所述步骤S2的具体步骤为:
第一步:创建一个Configuration对象,直接new一个对象。构造方法的参数就是freemarker对于的版本号。
第二步:设置模板文件所在的路径。
第三步:设置模板文件使用的字符集。一般就是utf-8.
第四步:加载一个模板,创建一个模板对象。
第五步:创建一个模板使用的数据集,可以是pojo也可以是map。一般是Map。
第六步:创建一个Writer对象,一般创建一FileWriter对象,指定生成的文件名。
第七步:调用模板对象的process方法输出文件。
第八步:关闭流。
进一步的,初始化:MIP启动时会在初始化freemarker模板路径,初始化依赖配置及依赖类如下:
配置依赖:/mid/WebContent/WEB-INF/env/context/mid.xml
<bean class="com.trc.mid.boot.SystemUtil" factory-method="getInstance"
init-method="init" p:jvm="${app.jvm}" p:app="${app.name}">
<property name="templateLocations">
<list>
<value>${app.envDir}/ftl/</value>
</list>
</property>
</bean>。
类依赖:spc.webos.util.SystemUtil。
初始化方法:
public void init() throws Exception {
freemarkUtil.setResourceLoader(resourceLoader);
freemarkUtil.setTemplateLocations(templateLocations);
initFreemarkerConf();
}。
通过上述配置及初始化方法,配合freemarker的懒加载策略(默认策略)在每支交易第一次使用的时候对应的freemarker模板会被加载到***缓存中,之后再调用该交易则会从缓存中读取模板信息,提高交易性能。
在源***与目标***通讯时,由于双方***之间报文结构的差异,需要建立报文结构转换机制,将源***发送目标***的报文转换为目标***可识别的报文结构、将目标***响应源***的报文转换为源***标准报文结构。报文结构转换只针对报文结构,不涉及报文数据转换。
初始化时,按交易配置好各交易源***报文结构到目标***报文结构的映射关系。并导入到数据库中,同时加载到应用缓存区。
结构转换组件接收到做完字段映射以及字典码转换的报文后,先从源***报文头中找到该报文的交易码。
通过交易码,从应用缓存中找到该交易的报文结构映射关系。开始转换:
读取源***报文stdfix标签下的内容,按报文定长头的映射关系对数据补位并转换为目标***定长头放到报文开始。
读取源***报文stdxmlreq标签下的内容,按XML报文头的映射关系将数据转换到目标***XML报文头中。
读取源***报文request下XML报文体的所有内容,按该交易XML报文体配置的映射关系将数据转换到目标***XML报文体中。
然后组装目标***报文,先将目标***XML报文头和目标***XML报文体组装,合并到目标***XML报文结构(Root标签)中。然后将目标***定长头和目标***XML报文合并为整体报文。
根据配置在整体报文前加上报文长度位。然后将该报文通过通讯适配器(Tuxedo)发送到目标***。
报文转换***是担任了渠道与目标***之间的通讯中间件角色,由于渠道与目标***两方的报文格式不一致,所以需要报文转换***进行中间转换,即拆解渠道上送报文到Map中,经过向目标的字典映射等方面转换后,将上送目标***的报文内容与上送目标***的freemarker报文模板进行组装,目标***响应则是上面过程的逆操作。
总而言之,FreeMarker模板在主数据集成交互中提供了更多的可扩展性,因为基于FreeMarker的特性,在进行主数据与目标***集成时,不需要进行代码和接口的二次开发,就能方便快捷地实现特殊报文处理,使得源***与目标***的数据集成交互更加高效,并具有更好的可移植性。
另一方面,本发明提供了一种基于FreeMarker模板的报文数据转换***,该***包括以下装置:
报文接收装置:从源***接收报文数据到消息队列;消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过写和检索出入列队的针对应用程序的数据(消息)来通信,而无需专用连接来链接它们。队列的使用除去了接收和发送应用程序同时执行的要求。
报文转换装置:报文转换装置启动时会初始化FreeMarker模板路径,初始化依赖配置及依赖类。配置及初始化方法,配合FreeMarker的懒加载策略(默认策略)在每支交易第一次使用的时候,对应的FreeMarker模板会被加载到***缓存中,之后再调用该交易则会从缓存中读取模板信息,提高交易性能。报文转换装置是担任了源***与目标***通讯中间件角色,由于源***与目标***两方的报文格式不一致,所以报文转换装置中间转换,即拆解源***上送报文到Map中,经过目标***的字典映射等方面转换后,将上送目标***的报文内容与上送目标***的FreeMarker报文模板进行组装,目标***响应则是上面过程的逆操作。
报文发送装置:报文发送装置通过Tuxedo通信选择JAVA的方式调用Jolt连接池。通常,Jolt通用调用包需要通过配置文件来进行配置。根据协议文档的内容,获取Tuxedo服务返回的各个数据项,将生成的统一格式报文发送给目标***。
实现代码举例:
public void test() throws IOException, TemplateException {
// 第一步:创建一个Configuration对象,直接new一个对象。构造方法的参数就是freemarker对于的版本号。
Configuration configuration = new Configuration(Configuration.getVersion());
// 第二步:设置模板文件所在的路径。
configuration.setDirectoryForTemplateLoading(
new File("D:\\Java\\Eclipse\\workspace_Test\\FreeMarker\\src\\main\\webapp\\WEB-INF\\ftl"));
// 第三步:设置模板文件使用的字符集。一般就是utf-8.
configuration.setDefaultEncoding("utf-8");
// 第四步:加载一个模板,创建一个模板对象。
Template template = configuration.getTemplate("hello.ftl");
// 第五步:创建一个模板使用的数据集,可以是pojo也可以是map。一般是Map。
Map dataModel = new HashMap();
// 向数据集中添加数据
dataModel.put("hello", "this is my first freemarker test.");
// 第六步:创建一个Writer对象,一般创建一FileWriter对象,指定生成的文件名。
Writer out = new FileWriter(new File("D:\\Java\\Eclipse\\workspace_Test\\FreeMarker\\out\\hello.html"));
// 第七步:调用模板对象的process方法输出文件。
template.process(dataModel, out);
// 第八步:关闭流。
out.close();
}。
本发明说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。在此指明,以上叙述有助于本领域技术人员理解本发明创造,但并非限制本发明创造的保护范围。任何没有脱离本发明创造实质内容的对以上叙述的等同替换、修饰改进和/或删繁从简而进行的实施,均落入本发明创造的保护范围。

Claims (9)

1.一种基于FreeMarker模板引擎的金融报文转换方法,用于源***与目标***之间的报文传输,所述源***是金融交易报文的发起方,所述目标***是所述金融交易报文的响应方,所述源***的发起金融交易报文因不符合所述目标***的响应要求而存在报文交互障碍,其特征在于,包括以下步骤以消除所述报文交互障碍:
步骤A,源***发送金融交易报文到金融报文转换***的前置消息队列;
步骤B,金融报文转换***读取所述前置消息队列中的所述金融交易报文数据,根据交易码字段匹配FreeMaker模板引擎中预设模板进行报文转换;
步骤C,将转换生成的目标***格式的报文通过tuxedo适配层发送给目标***。
2.根据权利要求1所述的基于FreeMarker模板引擎的金融报文转换方法,其特征在于,包括:
步骤D,所述目标***根据所述源***的发起金融交易报文生成响应金融交易报文,并将所述响应金融交易报文发送到所述金融报文转换***的应答接收队列;
步骤E,所述金融报文转换***对所述响应金融交易报文进行报文逆转换后返回到所述源***。
3.根据权利要求1所述的基于FreeMarker模板引擎的金融报文转换方法,其特征在于,所述步骤A中的消息队列对所述源***的发起金融交易报文进行缓存处理,所述缓存处理包括报文字段的映射缓存,报文值的映射缓存,以及全报文模板缓存,缓存采用初始化数据库加载到执行引擎中,由执行引擎调用缓存参数,完成使用缓存的目的。
4.根据权利要求1所述的基于FreeMarker模板引擎的金融报文转换方法,其特征在于,所述步骤B中的报文转换采用以下3种方式中一种:只针对报文数据而不针对报文结构;只针对报文结构而不针对报文数据;报文结构和报文数据兼具。
5.根据权利要求1所述的基于FreeMarker模板引擎的金融报文转换方法,其特征在于,所述步骤B中的报文转换包括以下具体步骤:
步骤B1,创建一个Configuration对象,直接new一个对象,构造方法的参数就是freemarker对应的版本号;
步骤B2,设置模板文件所在的路径;
步骤B3,设置模板文件使用的字符集;
步骤B4,加载一个模板,创建一个模板对象;
步骤B5,创建一个模板使用的数据集;
步骤B6,创建一个Writer对象,指定生成的文件名;
步骤B7,调用模板对象的process方法输出文件;
步骤B8,关闭流。
6.根据权利要求1所述的基于FreeMarker模板引擎的金融报文转换方法,其特征在于,所述金融报文转换***在启动时包括初始化freemarker模板路径,初始化配置依赖及类依赖,配置依赖路径为/mid/WebContent/WEB-INF/env/context/mid.xml;所述类依赖路径为spc.webos.util.SystemUtil;所述初始化freemarker模板包括配合freemarker的懒加载策略,在每支交易第一次使用的时候对应的freemarker模板被加载到***缓存中,之后再调用该交易则会从缓存中读取模板信息以提高交易性能。
7.根据权利要求1所述的基于FreeMarker模板引擎的金融报文转换方法,其特征在于,所述金融报文转换***在初始化时,包括按交易配置好各交易源***报文结构到目标***报文结构的映射关系,并导入到数据库中,同时加载到应用缓存区。
8.根据权利要求1所述的基于FreeMarker模板引擎的金融报文转换方法,其特征在于,所述步骤B中的报文转换为只针对报文结构而不针对报文数据的报文结构转换,所述金融报文转换***按交易配置好各交易源***报文结构到目标***报文结构的映射关系,并导入到数据库中,同时加载到应用缓存区;当所述金融报文转换***接收到做完字段映射以及字典码转换的报文后,先从源***报文头中找到该报文的交易码,通过交易码,从应用缓存中找到该交易的报文结构映射关系后按照以下流程开始转换:
读取源***报文stdfix标签下的内容,按报文定长头的映射关系对数据补位并转换为目标***定长头放到报文开始;
读取源***报文stdxmlreq标签下的内容,按XML报文头的映射关系将数据转换到目标***XML报文头中;
读取源***报文request下XML报文体的所有内容,按该交易XML报文体配置的映射关系将数据转换到目标***XML报文体中;
然后组装目标***报文,先将目标***XML报文头和目标***XML报文体组装,合并到目标***XML报文结构中,然后将目标***定长头和目标***XML报文合并为整体报文;
根据配置在整体报文前加上报文长度位,然后将该报文通过通讯适配器Tuxedo发送到目标***。
9.一种基于FreeMarker模板引擎的金融报文转换***,其特征在于,包括与报文转换装置分别连接的报文接收装置、报文发送装置和FreeMarker模板引擎;
所述报文接收装置从源***接收报文数据到消息队列;消息队列MQ是一种应用程序对应用程序的通信方法,应用程序通过写和检索出入列队的针对应用程序的数据来通信,而无需专用连接来链接它们,队列的使用除去了接收和发送应用程序同时执行的要求;
所述报文转换装置启动时会初始化FreeMarker模板路径,初始化依赖配置及依赖类,配置及初始化方法包括配合FreeMarker的懒加载策略在每支交易第一次使用的时候,对应的FreeMarker模板会被加载到***缓存中,之后再调用该交易则会从缓存中读取模板信息以提高交易性能,报文转换装置是担任了源***与目标***通讯中间件角色,由于源***与目标***两方的报文格式不一致,所以报文转换装置中间转换,即拆解源***上送报文到Map中,经过目标***的字典映射等方面转换后,将上送目标***的报文内容与上送目标***的FreeMarker报文模板进行组装,目标***响应则是一种相应的逆操作;
所述报文发送装置通过Tuxedo通信选择JAVA的方式调用Jolt连接池,Jolt通用调用包需要通过配置文件来进行配置,根据协议文档的内容,获取Tuxedo服务返回的各个数据项,将生成的统一格式报文发送给目标***。
CN202111619118.9A 2021-12-28 2021-12-28 一种基于FreeMarker模板引擎的金融报文转换方法及*** Pending CN113992765A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111619118.9A CN113992765A (zh) 2021-12-28 2021-12-28 一种基于FreeMarker模板引擎的金融报文转换方法及***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111619118.9A CN113992765A (zh) 2021-12-28 2021-12-28 一种基于FreeMarker模板引擎的金融报文转换方法及***

Publications (1)

Publication Number Publication Date
CN113992765A true CN113992765A (zh) 2022-01-28

Family

ID=79734714

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111619118.9A Pending CN113992765A (zh) 2021-12-28 2021-12-28 一种基于FreeMarker模板引擎的金融报文转换方法及***

Country Status (1)

Country Link
CN (1) CN113992765A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115396536A (zh) * 2022-08-26 2022-11-25 中国银行股份有限公司 报文分发方法及装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050159975A1 (en) * 2004-01-16 2005-07-21 Jiandong Wang Multiple-party business cooperation system and method
CN110969001A (zh) * 2018-09-27 2020-04-07 阿里巴巴集团控股有限公司 反馈信息的生成方法及装置、存储介质、处理器和终端
CN111126010A (zh) * 2019-12-20 2020-05-08 深圳前海环融联易信息科技服务有限公司 Freemaker模板文件修复方法、装置、计算机设备及存储介质
CN111581920A (zh) * 2020-05-12 2020-08-25 深圳前海微众银行股份有限公司 文档转换方法、装置、设备及计算机存储介质
CN112115695A (zh) * 2020-09-15 2020-12-22 平安信托有限责任公司 模板动态生成方法、***、计算机设备及存储介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050159975A1 (en) * 2004-01-16 2005-07-21 Jiandong Wang Multiple-party business cooperation system and method
CN110969001A (zh) * 2018-09-27 2020-04-07 阿里巴巴集团控股有限公司 反馈信息的生成方法及装置、存储介质、处理器和终端
CN111126010A (zh) * 2019-12-20 2020-05-08 深圳前海环融联易信息科技服务有限公司 Freemaker模板文件修复方法、装置、计算机设备及存储介质
CN111581920A (zh) * 2020-05-12 2020-08-25 深圳前海微众银行股份有限公司 文档转换方法、装置、设备及计算机存储介质
CN112115695A (zh) * 2020-09-15 2020-12-22 平安信托有限责任公司 模板动态生成方法、***、计算机设备及存储介质

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115396536A (zh) * 2022-08-26 2022-11-25 中国银行股份有限公司 报文分发方法及装置

Similar Documents

Publication Publication Date Title
US8205007B2 (en) Native format tunneling
US9852116B2 (en) System and method for processing messages using native data serialization/deserialization in a service-oriented pipeline architecture
KR102268989B1 (ko) 음성 활성 데이터 패킷의 데이터 구조 풀링
JP5242887B2 (ja) 型付きアプリケーションデータのフレキシブルな転送
US7346893B2 (en) Exchange infrastructure system and method
US8156505B2 (en) Protocol processing including converting messages between SOAP and application specific formats
US8370281B2 (en) Self-modification of a mainframe-based business rules engine construction tool
US20030233477A1 (en) Extensible infrastructure for manipulating messages communicated over a distributed network
US7904111B2 (en) Mobile exchange infrastructure
US7703099B2 (en) Scalable transformation and configuration of EDI interchanges
US9928125B1 (en) Message queueing in middleware by a message broker
US20050144137A1 (en) Protocol processing device and method
US20060251125A1 (en) System and method for producing notification based web services
US8364625B2 (en) Mainframe-based business rules engine construction tool
JP2009087340A (ja) ワイヤレス・アプリケーションのスクリーン・エレメント又はデータ・オブジェトを生成する方法及びシステム
US8027839B2 (en) Using an automated speech application environment to automatically provide text exchange services
US20070156737A1 (en) Application integration systems and methods
CN113992765A (zh) 一种基于FreeMarker模板引擎的金融报文转换方法及***
CN112631569A (zh) 基于gRPC的自动生成与补全前后端代码的方法、装置及设备
AU2003223040B2 (en) Exchange infrastructure system and method
US20090204662A1 (en) Method and system for providing reconciliation of semantic differences amongst multiple message service providers
US11570267B2 (en) Efficient response communication
Cheng et al. An adaptive mobile application development framework
US20240231761A1 (en) Event consumption for high-level programing language platform
US20240036830A1 (en) Event consumption for high-level programing language platform

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20220128