基于XML的消息适配方法、设备和存储介质与流程

文档序号:17535963发布日期:2019-04-29 13:59阅读:124来源:国知局
基于XML的消息适配方法、设备和存储介质与流程
本发明涉及数据处理领域,更为具体而言,涉及一种基于xml的消息适配方法、设备和存储介质。
背景技术
:随着银行电子渠道的快速发展和普及,人们越来越依赖于通过互联网来开展金融活动,在使用和交易过程中产生了大量各种各样的消息,比如资金通知、金融资讯、营销信息等。由于银行系统产品模型和业务流程纷繁芜杂,消息的类型和内容也千变万化。而且,随着银行业在互联网上的蓬勃发展,可扩展标记语言(extensiblemarkuplanguage,简称xml)成为了一种大量使用的消息处理方案。但是,xml虽然能够对业务模型进行恰当的描述和方便的扩展,却不能解决由于上游系统业务模型变化引起下游系统功能局限不再适用的问题,因此,如何快速的实现各种发送方发送的多种消息的处理,成为亟需解决的技术问题。技术实现要素:本发明实施例提供一种基于xml的消息适配方法、设备和存储介质,对于多个发送方发送的多种消息,采用统一的接口对多种消息进行精确的适配处理,避免由于上游消息模型变化而导致的重新开发,提高了对不同消息处理的开发效率。第一方面,本发明实施例提供了一种基于xml的消息适配方法,其特征在于,所述方法包括:消息服务引擎使用统一的接口接收多个消息发送方发送的多种消息服务请求,每个消息发送方能够发送一种或多种消息服务请求,所述多种消息服务请求中的第一消息服务请求包括:消息场景编号、消息类型和消息数据,所述第一消息服务请求为所述多种消息服务请求中的任意一个消息服务请求;根据所述第一消息服务请求中的消息类型在数据字典中确定所述消息类型对应的接口要素;在规则数据库中查找所述消息场景编号对应的规则集,根据所述消息数据遍历所述规则集确定所述第一消息服务请求的规则表达式和模板编号,其中,所述规则表达式和模板编号具有一一对应关系;根据所述接口要素、所述规则表达式、所述模板编号和所述消息数据对消息进行封装和发送。在本发明的一些实施方式中,所述方法还包括:接收第一消息发送方的消息注册请求,所述消息注册请求包括消息类型和该消息类型对应的接口要素,其中,所述第一消息发送方为所述多个消息发送方中的任意一个消息发送方;将所述消息注册请求中的消息类型和接口要素保存到所述数据字典。在本发明的一些实施方式中,所述方法还包括:配置所述统一的接口的消息的基类,所述基类的属性包括:客户号、证件类型、证件号、客户姓名、账号、手机号、消息id、发送渠道位图和使用状态;在所述统一的接口的扩展数据域中配置消息处理的子类,所述消息处理的子类包括属性和方法,其中,所述子类的属性继承所述基类的属性,所述子类的方法对应预定消息类型的消息的处理步骤。在本发明的一些实施方式中,所述方法还包括:将所述消息处理的子类与所述消息类型设置为一一对应。在本发明的一些实施方式中,所述根据所述接口要素、所述规则表达式、所述模板编号和所述消息数据对消息进行封装和发送包括:根据所述接口要素、所述规则表达式、所述模板编号和所述消息数据封装为java类的实例,其中,所述java类的实例的属性对应所述接口要素,所述java类的实例的方法与所述规则表达式、模板编号和消息数据关联的消息发送处理对应。在本发明的一些实施方式中,所述根据所述接口要素、所述规则表达式、所述模板编号和所述消息数据对消息进行封装和发送包括:运行所述java类的实例的方法对所述规则表达式和模板编号进行解析,得到所述第一消息服务请求的模板;根据得到的模板将所述消息数据组装为待发送消息。在本发明的一些实施方式中,所述消息服务请求还包括消息接收方的关联信息。在本发明的一些实施方式中,所述消息接收方的关联信息包括所述消息接收方的名称,所述方法还包括:根据所述消息接收方的名称查询所述消息接收方的消息订阅信息;根据查询到的消息订阅信息确定所述消息接收方是否订阅所述第一消息服务;响应于订阅所述第一消息服务,将组装的所述待发送消息发送给所述消息接收方;响应于未订阅所述第一消息服务,将组装的所述待发送消息丢弃第二方面,本发明实施方式提供一种计算机设备,包括存储器和处理器,其中,存储器,存储有计算机指令;处理器,配置为运行所述计算机指令以使所述计算机设备执行第一方面所述的方法。第三方面,本发明实施方式提供一种计算机可读存储介质,其上存储有计算机指令,所述计算机指令被存储器执行时实现第一方面所述的方法。本发明实施例提供的基于xml的消息适配方法、设备和存储介质,通过统一的xml接口对多种不同的消息进行适配处理,利用数据字典存储各种消息的接口元素,采用规则库和模板库确定消息形式,针对每种消息,通过消息服务请求携带消息的处理配置信息,实现对每种消息的精确适配处理;同时,利用java类的多态继承机制,实现对多种不同种类消息的匹配处理,避免上游系统的消息数据模型变化而引起的重新开发,提高了消息处理的可扩展性和开发效率;通过统一的接口将消息封装为java类的实例,将接口要素作为实例的属性,将对消息的各种规则化的处理作为实例的方法,动态运行该封装的实例实现对消息的匹配处理。附图说明图1示出了根据本发明实施方式的xml的消息适配方法的流程示意图。图2示出了根据本发明实施方式的消息服务引擎的结构示意图。图3示出了根据本发明实施方式的xml接口的数据结构示意图。图4示出了根据本发明实施方式的计算机设备的结构示意图。具体实施方式以下结合附图和具体实施方式对本发明的各个方面进行详细阐述。其中,众所周知的模块、单元及其相互之间的连接、链接、通信或操作没有示出或未作详细说明。并且,所描述的特征、架构或功能可在一个或一个以上实施方式中以任何方式组合。本领域技术人员应当理解,下述的各种实施方式只用于举例说明,而非用于限制本发明的保护范围。还可以容易理解,本文所述和附图所示的各实施方式中的模块或单元或处理方式可以按各种不同配置进行组合和设计。参见图1,图1示出了根据本发明实施方式的xml的消息适配方法的流程示意图,该方法可包括:步骤s101、步骤s102、步骤s103和步骤s104,下面结合具体的实施例对上述步骤进行说明。步骤s101,消息服务引擎使用统一的接口接收多个消息发送方发送的多种消息服务请求。每个消息发送方能够发送一种或多种消息服务请求,所述多种消息服务请求中的第一消息服务请求包括:消息场景编号、消息类型和消息数据,所述第一消息服务请求为所述多种消息服务请求中的任意一个消息服务请求。在本发明的实施例中,消息服务引擎是能够与多个发送方和多个接收方通信,并且为发送方(即消息生产者)提供消息服务,将消息生产者产生的消息按照该消息对应的发送需求发送给接收方(即消息消费者)。在一种具体的实施例中,消息服务引擎与消息生产者和消息消费者的关系可以如图2所示,消息服务引擎200可接入多个生产者(例如,消息生产者201、消息生产者202和消息生产者203)产生的消息内容,通过系统引擎的动态适配和智能识别,分发给多个消息消费者(例如,消息消费者204、消息消费者205和消息消费者206),其中,所述多个大于或等于2个。需要说明的是,虽然图2所示的消息生产者和消息消费者的个数为3,但是在实际的应用部署中,消息生产者和消息消费者的个数可以是其他的数量。在消息服务引擎为金融机构的消息处理服务时,消息发送方可以是金融机构的信用卡组件或者借记卡组件等,消息接收方可以是订阅相应消息服务的用户。本发明实施方式的消息为可扩展标记语言(extensiblemarkuplanguage,xml)格式的消息。步骤s101中描述的第一消息服务请求可以是消息服务引擎接收的多种消息服务请求中的任意一种消息服务请求。具体而言,消息服务请求可包括消息场景编号、消息类型和消息数据,其中,消息场景编号为该消息对应的发送场景(例如,信用卡消费消息发送、借记卡消费信息发送、第三方代扣支付消息发送等)的编号,消息类型为在消息服务引擎中注册的消息的标识,根据该消息类型可以在消息服务引擎的数据字典中查找该消息类型对应的接口要素。接口要素对应xml的统一的接口的要素,例如,在接口中将客户号、证件号、姓名、账号、手机号等业务要素作为接口的要素。消息数据对应消息发送方本次产生的消息内容,例如,对于信用卡组件,消息数据可以包括某一用户的某一账户的消费金额。消息场景编号可以是字母、数字或者与其他符号(例如,下划线等)组成的标识符,例如,可以是消息场景编号msg-a1234001。本发明实施方式的消息场景属性msg_fld可包括消息场景编号,属性名,属性描述。一个消息场景编号可对应多个属性,例如,信用卡消费消息发送场景编号msg-a1234001,可对应如图表1所示的多个属性:交易账号、交易日期、交易时间、交易金额和交易币种。表1消息场景编号属性名属性描述msg-a1234001acct_no交易账号msg-a1234001txn_dt交易日期msg-a1234001txn_tm交易时间msg-a1234001amt交易金额msg-a1234001cur交易币种步骤s102,根据所述第一消息服务请求中的消息类型在数据字典中确定所述消息类型对应的接口要素。在本发明的实施例中,数据字典中存储有多个消息类型和每个消息类型对应的一个或多个接口要素,消息类型和该消息类型对应的一个或多个接口要素关联存储,也就是说,根据一个消息类型能够确定该消息类型对应的接口要素。在一些实施例中,消息发送方在向消息服务引擎发送消息服务之前,向消息服务引擎发送消息注册请求。以第一消息发送方为例,第一消息发送方可以是上述的多个消息发送方中的任意一个消息发送方。本发明实施例的xml的消息适配方法还可包括:接收第一消息发送方的消息注册请求,所述消息注册请求包括消息类型和该消息类型对应的接口要素;将所述消息注册请求中的消息类型和接口要素保存到所述数据字典。例如,消息类型可以是字母、数字或其他符号组成的标识符,接口要素可以包括客户号、证件号、姓名、账号、手机号等,每个消息类型可包括对应的多个接口要素。本发明实施例通过消息注册,在消息服务引擎中的数据字典中存储注册的消息类型对应的接口要素(例如,客户号、证件号、姓名、账号、手机号等),这样在发送消息服务请求时,无需每次都携带该消息对应的多个接口要素,携带消息类型(即对应的标识符)即可查找到对应的接口要素,减少了消息发送方和服务引擎之间的数据交互量,提高了数据发送方的数据发送效率,在高并发的情况下,能够有效缓解数据发送方的数据处理压力。在本发明的实施例中,对xml消息的适配方法还包括:配置所述统一的接口的消息的基类,所述基类的属性包括:客户号、证件类型、证件号、客户姓名、账号、手机号、消息id、发送渠道位图和使用状态;在所述统一的接口的扩展数据域中配置消息处理的子类,所述消息处理的子类包括属性和方法,其中,所述子类的属性继承所述基类的属性,所述子类的方法对应预定消息类型的消息的处理步骤。上述的类为java中的类。在金融机构的的消息处理中,基类可以是消息中通常包含的要素,这些要素在大多数的消息中都含有。子类包括属性和方法。子类的属性继承基类的属性,对于子类附加的属性,可以重新定义。子类的方法对应一个消息类型的消息的处理,例如,可包括对该消息的数据主体采用何种规则、何种模板以及何种渠道(例如,微信、短信和app等)发送等。这些规则、模板和渠道可以通过规则的形式进行约束,图3示出了一种具体的数据接口模型。在图3所示的xml接口中,将客户号、证件号、姓名、账号、手机号等业务要素作为基类的属性,每种消息类型可对之进行继承并根据自己特点进行扩展,这些扩展属性在接口的扩展数组域中进行定义和赋值。消息处理的子类和消息类型设置为一一对应,也就是说,一个消息消息对应一个消息处理的子类,该消息处理的子类中配置为该消息类型的消息的处理,例如,按照何种规则、模板和消息主体进行封装和发送等等。本发明实施例的消息适配方法,将大多数消息都包含的共性要素抽取出来作为基类,其他的子类继承基类的属性,避免了对于每个消息都重新定义,减少了消息组件的软件代码量,提高了消息处理的软件开发效率。在一种具体的实施例中,xml接口可以是如下形式:1)接口:以信用卡发送消费短信为例,接口可以是如下形式:<?xmlversion="1.0"encoding="utf-8"?><msg><msg_snder>a1234</msg_snder><msg_scn_id>msg-a1234001</msg_scn_id><cst_id>0011888999</cst_id></fld_list><msg_fld_nm>acct_no</msg_fld_nm><msg_fld_val>123456789</msg_fld_val></fld_list></fld_list><msg_fld_nm>txn_dt</msg_fld_nm><msg_fld_val>20181112</msg_fld_val></fld_list></fld_list><msg_fld_nm>txn_tm</msg_fld_nm><msg_fld_val>092235</msg_fld_val></fld_list></fld_list><msg_fld_nm>amt</msg_fld_nm><msg_fld_val>800.00</msg_fld_val></fld_list></fld_list><msg_fld_nm>cur</msg_fld_nm><msg_fld_val>156</msg_fld_val></fld_list></msg>对于另外一种场景,fld_list的值就完全不一样了,但是接口整体结构保持不变。s103,在规则数据库中查找所述消息场景编号对应的规则集,根据所述消息数据遍历所述规则集确定所述第一消息服务请求的规则表达式和模板编号。其中,所述规则表达式和模板编号具有一一对应关系。在本发明的实施例中,消息服务引擎中的规则数据库包括根据各种业务规则确定的规则集。比如大于等于500元人民币的发什么短信,小于500元的发什么短信。规则集里就会包含这两条规则:(1)大于等于500;(2)小于500;每条消息对这些规则进行遍历、路由,选择不同路径进行后续处理。规则集可以采用正则表达式进行表示,例如,如表2所示,对于金额大于等于500且交易币为人民币可以采用正则表达式@amt:>500&&@cur:=156表示,外币交易可以采用正则表达式@cur:!=156表示。规则表达式和模板编号一一对应,一个规则表达式,对应一个模板编号,一个模板编号包括一个对应的消息模板。根据该消息模板,填充消息数据的内容即可完成消息的编辑。表3给出了一个消息编号和对应的消息模板。表2消息规则配置msg_rule:消息场景编号、规则正则表达式和模板编号表3消息模板配置msg_tpl:消息场景编号,模板编号,模板内容例如,对于信用卡消息消息,消息数据中消费金额为510,则可以根据该消息数据中的消息金额遍历规则集,确定大于等于500的规则为该消息对应的规则表达式和对应的模板编号。s104,根据所述接口要素、所述规则表达式、所述模板编号和所述消息数据对消息进行封装和发送。在本发明的实施例中,根据接口要素、规则表达式、模板编号和消息数据对消息进行封装和发送包括:根据步骤s102中确定的接口要素,步骤s103中的确定规则表达式和模板编号和步骤s101中的消息数据封装为java类的实例,其中,所述java类的实例的属性对应接口要素,所述java类的实例的方法与所述规则表达式、模板编号和消息数据关联的消息发送处理对应。java类的实例的属性包括基类的属性,任选地,还可以包括该消息附加的属性。消息类型不同,封装成java类的实例也不同,可以根据反射机制调用不同处理类。将接口要素作为实例的属性,将对消息的各种规则化的处理作为实例的方法,动态运行该封装的实例实现对消息的匹配处理。在将消息封装为java类的实例之后,运行java类的实例的方法对所述规则表达式和模板编号进行解析,得到所述第一消息服务请求的模板;根据得到的模板将所述消息数据组装为待发送消息。在一种具体的实施例中,消息解析的代码可以如下:其中,abstractmsgmodel是一个抽象类,定义了消息处理引擎的工作流程和输入输出。commonmsgmodel是一个基础实现类,可处理大多数配置化的常用消息场景。此外,可以配置不同的插件,实现对特殊消息场景的处理,例如,applemsgmodel插件a,继承commonmsgmodel,配置在msg_dir表的消息处理类字段中,可处理特殊消息场景。boymsgmodel插件b,继承commonmsgmodel,配置在msg_dir表的消息处理类字段中,可处理特殊消息场景。catmsgmodel插件c,继承commonmsgmodel,配置在msg_dir表的消息处理类字段中,可处理特殊消息场景。dogmsgmodel插件d,继承commonmsgmodel,配置在msg_dir表的消息处理类字段中,可处理特殊消息场景。在本发明的一些实施例中,消息服务请求还包括消息接收方的关联信息。消息接收方的关联信息包括所述消息接收方的名称,所述方法还包括:根据所述消息接收方的名称查询所述消息接收方的消息订阅信息;根据查询到的消息订阅信息确定所述消息接收方是否订阅所述第一消息服务;响应于订阅所述第一消息服务,将组装的所述待发送消息发送给所述消息接收方;响应于未订阅所述第一消息服务,将组装的所述待发送消息丢弃。在一些实施例中,如果消息是定向向一个用户发送的消息,上述消息订阅的查询可以在消息封装之前,如果用户订阅该消息服务,则继续后续的封装和发送,如果未订阅,则丢弃该消息。在另外一些实施例中,如果消息是同时向多个用户群发的消息,上述消息订阅的查询可以在消息封装之后,发送之前,如果客户订阅该消息的关联服务,则继续发送,如果客户未订阅该消息的关联服务,则丢弃该消息。本发明实施方式还提供一种计算机设备。如图4所示,计算机设备500可包括存储器501和处理器502,其中,存储器501存储有计算机指令,处理器502配置为执行所述计算机指令以使计算机设备500实现上面所述的方法。计算机设备500可以为计算机集群的形式,为各个消息发送方和消息接收方提供该可用的消息服务。本发明实施方式还提供计算机可读的存储介质,其上存储有计算机指令,所述计算机指令被处理器执行时实现上面所述的方法。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件结合硬件平台的方式来实现。基于这样的理解,本发明的技术方案对
背景技术
做出贡献的全部或者部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,智能手机或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。本发明说明书中使用的术语和措辞仅仅为了举例说明,并不意味构成限定。本领域技术人员应当理解,在不脱离所公开的实施方式的基本原理的前提下,对上述实施方式中的各细节可进行各种变化。因此,本发明的范围只由权利要求确定,在权利要求中,除非另有说明,所有的术语应按最宽泛合理的意思进行理解。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1