XML报文模板的生成及更新方法及其系统与流程

文档序号:18642806发布日期:2019-09-11 23:44阅读:355来源:国知局
本发明涉及数据处理领域,尤其涉及一种数据库表和xml报文的映射处理方法及其系统。
背景技术
::在传统的数据交换、消息处理过程中有关结构化xml文件的消息处理,对于不同类型格式的报文结构基本上都是采用对xml节点或path结构硬代码写死的方式进行处理,但存在下述缺点:1、缺乏标准规范。xml结构的消息报文较多的应用场景在于数据交换及服务集成方面。报文在各个系统之间的数据交换及服务集成容易造成消息报文的格式及标准缺乏统一。主要体现在如下几个层面:报文格式、字符集编码、特殊字符、报文节点命名格式、报文属性、报文版本、不同类型的数据库、数据源的支持等。上述缺点容易造成消息报文在各系统之间交互产生格式问题、当出现问题时技术衔接的两方需要不断的沟通和排查从而增加问题排查的复杂度。2、报文解析低效。在xml结构化报文解析处理方面,传统的报文处理方式主要是基于开源的dom4j或jdom等方式进行解析,在报文解析方面大部分时间消耗在报文模板、path的解析、缺乏相应的缓存加载策略,未充分利用缓存技术实现“一次加载、处处使用”的技术优势特点。报文在高并发、大数据量的处理过程中极易造成解析效率低、解析处理时间加长。3、代码复用率低。常规的xml报文解析处理主要采用硬编码方式,随着业务的发展要求需要对xml的报文结构做增加或删除节点处理、增加新的报文内容时都需要进行代码方面的调整从而加大项目的开发、测试、管理等投入成本。另外一点当项目上线后并且已稳定的在实际生产环境中运行,此种调整都是存在一定的风险和代价的,容易造成由于编码设计的调整造成系统的不稳定性从而带来相应的风险。4、管理维护困难。在复杂的数据交换或服务集成方面,特别是部委级与省局、地市级的数据交换场景中,比如当核心系统的业务需求、库表字段发生变化时。与之相关的外围系统涉及到这些业务需求变化或数据字段添加时都面临着调整。如何在第一时间响应业务发展的需求要求、如何在各个系统之间控制报文模板结构和版本的兼容性是非常关键和迫切的,也是本引擎需重点解决的问题。5、缺乏有效监控。常规的报文处理和解析基本上都与业务代码紧耦合设计处理,在典型的数据交换和服务集成的应用场景中监控起来困难,无法对报文解析处理的时间、异常处理情况、报文模板自动更新、版本进行统一的监控和跟踪。在公开号为cn105138613a的中国专利公开文件中,提出了一种业务对象和xml报文相互转换的方法及系统,其中方法具体包括以下步骤:步骤1:创建报文节点映射表,并将报文节点和业务对象映射信息导入映射表;步骤2:接收读取请求,读取报文节点和业务对象映射信息到缓存中;步骤3:对报文节点和业务对象进行格式校验;步骤4:系统根据映射关系将xml报文转换为业务对象;或者系统根据映射关系将业务对象转换为xml报文数据。但该方案是基于业务对象,与业务代码之间高耦合,且是基于数据库配置的方式,管理维护较为困难。技术实现要素:本发明所要解决的技术问题是:提供一种数据库表和xml报文的映射处理方法及其系统,提高报文解析效率,且便于管理和维护。为了解决上述技术问题,本发明采用的技术方案为:一种数据库表和xml报文的映射处理方法,包括:预设数据库字段与xml报文节点字段的字段映射表;获取目标数据库;在所述目标数据库中提取预设个数的目标数据表;判断所述目标数据表之间是否存在主子表关系;若是,则确定至少一组的主子表关系;根据所述字段映射表和主子表关系,生成对应主子表关系组数的xml报文模板,所述xml报文模板包含主子表之间的层级嵌套关系;根据所述xml报文模板以及对应的目标数据表,生成对应的xml报文。本发明还涉及一种数据库表和xml报文的映射处理系统,包括:第一预设模块,用于预设数据库字段与xml报文节点字段的字段映射表;第一获取模块,用于获取目标数据库;提取模块,用于在所述目标数据库中提取预设个数的目标数据表;第一判断模块,用于判断所述目标数据表之间是否存在主子表关系;第一确定模块,用于若是,则确定至少一组的主子表关系;第一生成模块,用于根据所述字段映射表和主子表关系,生成对应主子表关系组数的xml报文模板,所述xml报文模板包含主子表之间的层级嵌套关系;第二生成模块,用于根据所述xml报文模板以及对应的目标数据表,生成对应的xml报文。本发明的有益效果在于:通过xml报文模板实现数据表与xml报文之间的相互转换,当业务逻辑发生变化时,只要调整相应的报文模板即可,可减少项目开发、测试、管理的投入成本,提高报文解析效率,且便于管理和维护。附图说明图1为本发明一种数据库表和xml报文的映射处理方法的流程图;图2为本发明实施例一的方法流程图;图3为本发明实施例二的方法流程图;图4为本发明一种数据库表和xml报文的映射处理系统的结构示意图;图5为本发明实施例三的结构示意图。标号说明:1、第一预设模块;2、第一获取模块;3、提取模块;4、第一判断模块;5、第一确定模块;6、第一生成模块;7、第二生成模块;8、发送模块;9、解析模块;10、发布模块;11、推送模块;12、第二获取模块;13、比对模块;14、更新模块;15、保存模块;16、启用模块;17、第二判断模块;18、第三生成模块;19、执行模块;20、第四生成模块;21、第五生成模块。具体实施方式为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图详予说明。本发明最关键的构思在于:通过xml报文模板实现数据表与xml报文之间的相互转换。请参阅图1,一种数据库表和xml报文的映射处理方法,包括:预设数据库字段与xml报文节点字段的字段映射表;获取目标数据库;在所述目标数据库中提取预设个数的目标数据表;判断所述目标数据表之间是否存在主子表关系;若是,则确定至少一组的主子表关系;根据所述字段映射表和主子表关系,生成对应主子表关系组数的xml报文模板,所述xml报文模板包含主子表之间的层级嵌套关系;根据所述xml报文模板以及对应的目标数据表,生成对应的xml报文。从上述描述可知,本发明的有益效果在于:可将一个或多个任意数据表转换成xml报文,可减少项目开发、测试、管理的投入成本,提高报文解析效率,且便于管理和维护。进一步地,所述“生成对应的xml报文”之后,进一步包括:发送所述xml报文至一通讯节点;所述一通讯节点接收所述xml报文,并根据所述xml报文模板,解析得到对应的所述目标数据表。由上述描述可知,可将xml报文写入到一个或多个表中,从而实现数据库到xml、xml到数据库双向出库、入库的数据解析过程。进一步地,所述“生成对应主子表关系组数的xml报文模板”之后,进一步包括:将所述xml报文模板的更新信息发布至服务总线;服务总线将所述更新信息推送至各通讯节点;各通讯节点获取所述更新信息;比对更新信息中的xml报文模板和正在使用的xml报文模板的唯一标识符和版本号;若所述唯一标识符一致但版本号不一致,将正在使用的xml报文模板更新为更新信息中的xml报文模板。进一步地,所述“若所述唯一标识符一致但版本号不一致,将正在使用的xml报文模板更新为更新信息中的xml报文模板”之后,进一步包括:保存历史xml报文模板;若更新后的xml报文模板出现错误,启用历史xml报文模板。由上述描述可知,通过更新xml报文模板,保证在数据处理过程中解析机制保持一致。进一步地,所述“生成对应主子表关系组数的xml报文模板”之前,进一步包括:判断是否存在对应所述主子表关系的xml报文模板;若是,根据所述xml报文模板以及对应的目标数据表,生成对应所述目标数据表的xml报文;若否,则执行所述生成对应主子表关系组数的xml报文模板的步骤。由上述描述可知,当目标数据库中的目标数据表均存在与之对应的xml报文模板时,可直接将数据表转换为xml报文,提高解析效率。进一步地,所述“判断所述目标数据表之间是否存在主子表关系”之后,进一步包括:若否,分别根据各个目标数据表以及字段映射表,生成对应的xml报文模板;根据所述目标数据表及其对应的xml报文模板,生成对应的xml报文。由上述描述可知,若目标数据表之间不存在主子表关系,则表示所提取的目标数据表均为主表,由于一个报文只包含一个主表,因此各个目标数据表分别生成各自的xml报文。请参照图4,本发明还提出一种数据库表和xml报文的映射处理系统,包括:第一预设模块,用于预设数据库字段与xml报文节点字段的字段映射表;第一获取模块,用于获取目标数据库;提取模块,用于在所述目标数据库中提取预设个数的目标数据表;第一判断模块,用于判断所述目标数据表之间是否存在主子表关系;第一确定模块,用于若是,则确定至少一组的主子表关系;第一生成模块,用于根据所述字段映射表和主子表关系,生成对应主子表关系组数的xml报文模板,所述xml报文模板包含主子表之间的层级嵌套关系;第二生成模块,用于根据所述xml报文模板以及对应的目标数据表,生成对应的xml报文。进一步地,还包括:发送模块,用于发送所述xml报文至一通讯节点;解析模块,用于所述一通讯节点接收所述xml报文,并根据所述xml报文模板,解析得到对应的所述目标数据表。进一步地,还包括:发布模块,用于将所述xml报文模板的更新信息发布至服务总线;推送模块,用于服务总线将所述更新信息推送至各通讯节点;第二获取模块,用于各通讯节点获取所述更新信息;比对模块,用于比对更新信息中的xml报文模板和正在使用的xml报文模板的唯一标识符和版本号;更新模块,用于若所述唯一标识符一致但版本号不一致,将正在使用的xml报文模板更新为更新信息中的xml报文模板。进一步地,还包括:保存模块,用于保存历史xml报文模板;启用模块,用于若更新后的xml报文模板出现错误,启用历史xml报文模板。实施例一请参照图1,本发明的实施例一为:一种数据库表和xml报文的映射处理方法,包括如下步骤:s1:预设数据库字段与xml报文节点字段的字段映射表;例如,通过<table>节点中name=“数据库表名”,column标识为对应的xml报文中对应的节点;字段映射属性说明如表1所示;每个table包含一个或多个field,field有很多属性需要设定,比如数据类型、显示格式等,其中两个比较重要的属性为is_pk和is_bizpk,用于表明该字段是否是主键或业务主键,业务主键的作用非常大,在更新的情况下,业务主键会用来定位记录,由于主键可能是sequence类型的,两个数据库没办法共用同一个sequence,所以用主键定位记录会出现问题,因此,要求每个表一定要配置业务主键,有时一个字段既可以作为主键也可以作为业务主键。表1s2:获取目标数据库;通过用户名、密码、配置数据库连接信息,选择数据库连接格式,进入目标数据库;可支持基于标准sql类型的多种关系型数据库,如oracle、sqlserver、mysql等业界流行关系型数据库。s3:在所述目标数据库中提取预设个数的目标数据表;根据业务需求确定所述预设个数。s4:判断所述目标数据表之间是否存在主子表关系,若是,执行步骤s5,若否,执行步骤s9;可通过判断目标数据表之间的是否存在字段关联,从而判断是否存在主子表关系。s5:确定至少一组的主子表关系;通过<table>节点属性中的is_pk="true"定义主表的主键,is_bizpk="true"定义为主子表的外键关系。s6:判断是否存在对应所述主子表关系的xml报文模板,若是,执行步骤s8,若否,执行步骤s7。s7:根据所述字段映射表和主子表关系,生成对应主子表关系组数的xml报文模板,所述xml报文模板包含主子表之间的层级嵌套关系;即xml报文模板中定义了主表、子表之间的层次关系,以此类推也可在子表中定义子子表的层关系;同时,一个xml报文模块对应一个主子表关系,即xml报文对应数据库中的一个主表及其若干个子表,允许子表级联。s8:根据所述xml报文模板以及对应的目标数据表,生成对应的xml报文;执行步骤s11。s9:若不存在主子表关系,即所提取的预设个数的目标数据表均为主表,则分别根据各个目标数据表以及字段映射表,生成对应的xml报文模板。s10:根据所述各个目标数据表及其对应的xml报文模板,生成对应的xml报文;执行步骤s11。s11:发送所述xml报文至一通讯节点;s12:一通讯节点接收所述xml报文,并根据所述xml报文模板,解析得到对应的所述目标数据表。优选地,在生成xml报文之前,按照报文格式交换规范,并考虑与其它外部系统的数据交换,报文的字符集编码,默认统一基于标准的utf-8设计,当有其它字符集要求时可灵活设置。通过预设标准化的xml报文的字符集编码,可避免在各系统之间在交互时产生报文格式问题,报文标准规范保持统一,提高整体可维护性。可选地,可以先选择目标数据表,再根据目标数据表配置字段映射表;可以先选择主表,再选择其关联子表。优选地,上述步骤采用可视化工具管理实现,通过报文可视化工具,进行数据库关系设置、字段的映射配置、字段属性的选择、格式的选择等。如通过可视化的维护界面维护报文的主表信息、子表信息、主子表的关系及主子表包含的字段属性,报文结构支持动态生成xml报文文件;可视化工具可提供表名称、中文名称的查询功能,通过关键字段可查询到报文模板信息;提供模板的测试功能,通过测试数据测试模板的准确性、有效性;提供加载数据库表功能,加载数据库字段信息;提供字段列的新增、修改、删除功能,加载列功能等。提供多线程处理环境,通过多线程机制,支持线程的动态设置和调整,进行业务数据库的抽取和解析进行线程分离设计,提高整体处理性能;线程数量根据硬件资源情况,可动态调整,使其处于最佳的处理状态。提供api调用方式和web服务方式两种服务方式,方便不同的开发语言调用,其中api调用方式,用户可进行接口扩展,重新接口方法,支持用户自定义函数,可大大减少代码的冗余度。上述步骤的一个具体例子如下:表2和表3为所提取的目标数据表中的部分数据,表关系说明如表4所示;表2goods_iddecl_idciq_code938224c0c0a81d9d01dbc144919949851115303900000999表3表4生成的xml报文模板如下:生成xml报文如下:其中,因为字段decl_id的内容是由相关组件直接生成的标识符,在生成xml报文时可省略,当另一通讯节点接收所述xml报文后,相关组件会自动补充所述该字段的内容。本实施例可实现数据库到xml、xml到数据库双向出库、入库的数据解析过程,按照预先定义好的模板规则,进行数据的解析,并支持所有xml现行标准,包括namespace、xpath、w3cschema、dtd、x-query等,可实现一个或多个任意数据表转换成xml报文,也可将xml报文写入到一个或多个表中。随着业务的发展要求需要,可对xml报文的结构做增加或删除节点处理,增加新的报文模板时通过提供相应的调用函数、api及接口适配策略做到零编码处理机制,降低与业务代码的耦合度,提高代码复用率。实施例二请参照图3,本实施例是实施例的进一步拓展,相同之处不再累述,区别在于,所述步骤s7之后,还包括模板更新过程,具体包括如下步骤:s13:将所述xml报文模板的更新信息发布至服务总线。s14:服务总线将所述更新信息推送至各通讯节点。s15:各通讯节点获取所述更新信息。s16:比对更新信息中的xml报文模板和正在使用的xml报文模板的唯一标识符和版本号;优选地,所述唯一标识符为模板编号。s17:判断是否需要更新,若是,执行步骤s18,若否,则执行步骤s21;即判断唯一标识符一致时,版本号是否一致,若一致则不需要更新,若不一致则需要更新。s18:将正在使用的xml报文模板更新为更新信息中的xml报文模板。s19:保存历史xml报文模板;xml报文模板发布后,要对历史的xml报文模板进行跟踪,保留修改的痕迹,同时对所有的xml报文模板进行后台备份。s20:若更新后的xml报文模板出现错误,启用历史xml报文模板;当新版本的xml报文模板有问题的时候,可随时恢复和启用旧有的xml报文模板。s21:获取更新信息中的下一xml报文模板,继续与正在使用xml报文模板进行比对,即执行步骤s16。当集成调用方越来越多时,并且各调用方都使用同一种xml报文模板类型,支持xml报文模板的在线远程自动更新,以保证在数据处理过程中解析机制保持一致。将xml报文模板更新的服务支持发布至服务总线上,通过的消息发布、订阅模式,当xml报文模板发生变化的时候,通过消息发布订阅方式,将新的xml报文模板推送至各通讯节点(消息订阅端),通讯节点同步更新完业务报文模板之后,返回处理的结果。xml报文模板采用缓存机制,每次对xml报文模板进行解析的话会占用整个解析过程的20%的时间,所以设计时充分考虑“一次加载、处处可用”,xml报文模板在初始化首次进行加载后,后续再调用时无需再进行解析,以此提高整个过程的处理性能及解析的时间。本实施例通过自动更新xml报文模板,对模板版本进行统一的监控和跟踪,提高在数据交换、服务集成方面的可维护性。实施例三请参照图5,本实施例为对应上述实施例的一种数据库表和xml报文的映射处理系统,包括:第一预设模块1,用于预设数据库字段与xml报文节点字段的字段映射表;第一获取模块2,用于获取目标数据库;提取模块3,用于在所述目标数据库中提取预设个数的目标数据表;第一判断模块4,用于判断所述目标数据表之间是否存在主子表关系,得到第一判断结果;第一确定模块5,用于若第一判断结果为是,则确定至少一组的主子表关系;第一生成模块6,用于根据所述字段映射表和主子表关系,生成对应主子表关系组数的xml报文模板,所述xml报文模板包含主子表之间的层级嵌套关系;第二生成模块7,用于根据所述xml报文模板以及对应的目标数据表,生成对应的xml报文。还包括:发送模块8,用于发送所述xml报文至一通讯节点;解析模块9,用于所述一通讯节点接收所述xml报文,并根据所述xml报文模板,解析得到对应的所述目标数据表。还包括:发布模块10,用于将所述xml报文模板的更新信息发布至服务总线;推送模块11,用于服务总线将所述更新信息推送至各通讯节点;第二获取模块12,用于各通讯节点获取所述更新信息;比对模块13,用于比对更新信息中的xml报文模板和正在使用的xml报文模板的唯一标识符和版本号;更新模块14,用于若所述唯一标识符一致但版本号不一致,将正在使用的xml报文模板更新为更新信息中的xml报文模板。还包括:保存模块15,用于保存历史xml报文模板;启用模块16,用于若更新后的xml报文模板出现错误,启用历史xml报文模板。还包括:第二判断模块17,用于判断是否存在对应所述主子表关系的xml报文模板,得到第二判断结果;第三生成模块18,用于若第二判断结果为是,根据所述xml报文模板以及对应的目标数据表,生成对应的xml报文;执行模块19,用于若第二判断结果为否,则执行所述第一生成模块6。还包括:第四生成模块20,用于若第一判断结果为否,分别根据各个目标数据表以及字段映射表,生成对应的xml报文模板;第五生成模块21,用于根据所述目标数据表及其对应的xml报文模板,生成对应的xml报文。综上所述,本发明提供的一种数据库表和xml报文的映射处理方法及其系统,通过xml报文模板实现数据表与xml报文之间的相互转换,当业务逻辑发生变化时,只要调整相应的报文模板即可,可减少项目开发、测试、管理的投入成本,提高报文解析效率,且便于管理和维护;通过预设标准化的xml报文的字符集编码,可避免在各系统之间在交互时产生报文格式问题,报文标准规范保持统一,提高整体可维护性。以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的
技术领域
:,均同理包括在本发明的专利保护范围内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1