CN116301882A - 多套模型间集合映射方法与装置 - Google Patents

多套模型间集合映射方法与装置 Download PDF

Info

Publication number
CN116301882A
CN116301882A CN202310072433.7A CN202310072433A CN116301882A CN 116301882 A CN116301882 A CN 116301882A CN 202310072433 A CN202310072433 A CN 202310072433A CN 116301882 A CN116301882 A CN 116301882A
Authority
CN
China
Prior art keywords
mapping
model
node
source
models
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
CN202310072433.7A
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.)
Nanjing Third Generation Communication Technology Co ltd
Original Assignee
Nanjing Third Generation Communication Technology 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 Nanjing Third Generation Communication Technology Co ltd filed Critical Nanjing Third Generation Communication Technology Co ltd
Priority to CN202310072433.7A priority Critical patent/CN116301882A/zh
Publication of CN116301882A publication Critical patent/CN116301882A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种多套模型间集合映射方法:对映射信息进行定义,映射首先需要使用脚本定义集合映射的映射条件,映射源模型,源模型之间的查询树以及映射关系;对映射信息进行解析,在设备启动后,初始化阶段进行脚本的解析工作,解析出的集合映射信息形成集合映射池,供后续集合映射使用;根据映射信息的解析结果进行集合映射处理。本发明通过提炼复杂集合映射中的公共范式,使用框架编码加脚本映射的方案,一次性解决了数据集合定义、数据查找、条件判断、条件映射等复杂技术问题;使私有模型可以适配开放模型,对现有私有模型冲击较小,与现有架构兼容、平滑演进,同时使得设备拥抱开放性。本发明还提供了相应的多套模型间集合映射装置。

Description

多套模型间集合映射方法与装置
技术领域
本发明属于网元管理中的配置管理技术领域,更具体地,涉及一种多套模型间集合映射方法与装置。
背景技术
模型(Model)是数据特征的抽象,它从抽象层次上描述了系统的静态特征、动态行为和约束条件,为信息表示与操作提供一个抽象的框架。外部模型为设备侧基于不同的北向接口和其特性定义的模型,设备侧的实际存储使用的数据格式一般称为私有模型。
网络设备的可编程操作形式和北向接口有很多种,例如:传统命令行形式的人机交互操作、SNMP(Simple Network Management Protocol,简单网络管理协议)协议的网络关系系统、采用分层结构的NETCONF(Network Configuration Protocol)协议、基于标准化的NETCONF协议框架开发且与设备商无关的Open Config模型等。
几乎每种北向接口都会有其特殊的外部模型,为了更好地实现网络可编程能力,提高自动化的水平,实现业务快速按需自动发放、自动化运维的需求,后续可能会出现更多操作形式和其对应的模型,设备往往需要兼容这些不同的操作形式的配置模型。因外部模型各不相同,模型之间互相耦合,不同的外部模型到私有模型映射可能会极其复杂,可能会出现N个外部模型对应N个私有模型的场景,我们把这个场景多对多的映射场景称为集合映射。该场景处理复杂,涉及模型多,若每套外部模型的集合映射都手动适配编码,则开发适配工作量大,开发周期长且重复性工作多。
发明内容
为了解决现有技术存在的问题,本发明提供了一套处理复杂的多套模型到内部模型的适配集合映射框架方法,用于解决实现网络设备与多套北向接口模型之间适配时,集合映射场景处理复杂,涉及模型多,针对每套模型都重新编码适配,开发适配工作量大,开发周期长且重复性工作多的技术问题。
为实现上述目的,按照本发明的一个方面,提供了一种多套模型间集合映射方法,包括如下步骤:
(1)对映射信息进行定义,映射首先需要使用脚本定义集合映射的映射条件,映射源模型,源模型之间的查询树以及映射关系;
(2)对映射信息进行解析,在设备启动后,初始化阶段进行脚本的解析工作,解析出的集合映射信息形成集合映射池,供后续集合映射使用;
(3)根据映射信息的解析结果进行集合映射处理。
本发明的一个实施例中,对映射使用XML脚本语言进行定义,映射中所使用的字段包括:
<MAPPING_UIM>为整个文件的最外层节点,所有的集合映射信息都定义在<MAPPING_UIM>节点中,其下包含有若干个<setMapping>节点;
每个<setMapping>节点对应一个集合映射,<setMapping>节点中有id字段和name字段,用来描述本集合映射的序号和名称;
<setMapping>节点下包含一个<query_all>节点,用来描述本集合映射源模型间的查找关系,和一个<inputDataSet>节点,用来描述映射操作相关的源模型必选字段,查询树,映射条件,映射关系;
<query_all>节点中包含有若干个<queryCond>节点,每个<queryCond>节点表示一个源模型与另一个源模型的查询关系;
<queryCond>节点中包含若干个<queryElement>节点,用于描述输入模型和输出模型之间有关联的元素;
<inputDataSet>节点下包含一个<inputDataDefine>节点,一个集合映射中源模型公共必选元素和可选元素,作用范围为本集合映射和若干个<inputDataSubSet>节点,源模型数据子集;
<inputDataDefine>节点包含若干个<class>节点,每个<class>节点描述了一个源模型是否必选;
<class>节点中包含若干个<element>节点,表示本模型中的必选元素;
<inputDataSubSet>节点中包含一个<inputDataDefine>节点,一个<queryTreeDefine>节点和一个<conditionMapping>节点。
本发明的一个实施例中,对映射信息进行定义的过程,具体包括:
取所有源模型和目的模型,确定哪些源模型可以映射出哪些目的模型,将其进行分组,对每个分组建立一个集合映射关系,即一个<setMapping>节点;
在每组集合映射关系中,将源模型两两之间的查询关系使用脚本描述为<query_all>节点和其下<queryCond>节点;
每组源模型和目的模型之间可能存在多种映射情况,按照情况将其分为若干个数据子集;
将集合映射中所有数据子集中公共的必选信息写在<inputDataSet>节点中的<inputDataDefine>节点,将数据子集私有的必选信息写在<inputDataSet>节点中的<inputDataDefine>节点;
将其查询顺序整理成一个查询树,用<queryTreeDefine>节点表示;
将每个数据子集中的映射条件用<if_expressions>节点表示;
将每个数据子集中每个目的类的映射关系用<mapping>节点表示,生成一个<MappingInfo>节点。
本发明的一个实施例中,所述对映射信息进行解析,具体包括:
解析query_all字段,明确一个集合映射中多个源模型之间,每个源模型与其他源模型的查找关系,为后面构建查询树做准备;
解析inputDateSet字段中的inputDataDefine字段,明确一个集合映射中,源模型公共必选元素和可选元素;
解析inputDateSet字段中的下inputDataSubSet字段,明确了一个集合映射中的源模型子集;
解析inputDataSubSet字段中的queryTreeDefine字段,明确一个源模型子集中不同源模型的查询关系,以及查询顺序,最终生成查询树;
解析inputDataSubSet字段中的conditionMapping字段,明确一个源模型子集需要满足的映射条件,以及映射元素的对应关系。
本发明的一个实施例中,所述根据映射信息的解析结果进行集合映射处理,具体包括:
查找模型所属集合映射;
找到所属集合映射,同一个源模型所属的集合映射可能有多个,需要按顺序依次处理每个集合映射;
每个集合映射中,需要先判断模型对象中必选字段集合映射所需是否齐全;
遍历该集合映射的数据子集,依次查找本模型所属子集;
生成查询结果树;
根据映射条件和映射关系生成目的模型对象;
将目的模型对象按顺序插入下发链表;
遍历所有源模型对象组,映射出所有目的模型对象组完成映射。
本发明的一个实施例中,所述生成查询结果树,具体包括:
取数据子集中定义的查询结果树,初始化源模型查询结果树,并将本次数据对象作为根节点挂在查询结果树上;
根据数据子集中的查询树,解析出本次源模型间的查询顺序;
根据查询顺序依次查找到查询树中定义的所有源模型对象;
将本次处理的模型数据对象作为树根节点,根据本次处理模型数据查到的源模型数据对象作为其子节点,之后依次查找其他数据对象并将其挂在树上,构成查询结果树。
本发明的一个实施例中,所述根据映射条件和映射关系生成目的模型对象,具体包括:
判断查询结果树中的每组数据是否满足数据子集定义的条件,取用查询结果对象树中对象时,遵循树的遍历,每个叶子节点只能与其根节点构成一组数据,不能与其他相邻叶子节点或者其根节点的相邻节点构成一组数据;
不满足数据子集定义的条件,则继续匹配下一个数据子集;
满足条件则按照数据子集定义的映射关系,在一组源模型对象组中,按照从关键字元素到其他元素的顺序,查找目的模型对象组需要的映射元素,若元素类型不一致,则进行类型转换,最终生成一组目的模型对象组。
本发明的一个实施例中,
<queryCond>节点中包含的字段含义如下:Id:查询关系序号,用于区分不同的查询关系;inputClassId:为输入源模型ID;outputClass:为输出源模型ID;
<queryElement>节点中包含的字段含义如下:inputElementId:输入模型中的关联元素ID;outputElementId:输出模型中的关联元素ID;Value:该关联关系中输入和输出元素的指定值,可不填;
<class>节点中包含的字段含义如下:Id:源模型序号;Name:源模型名称;mustFlag:表示模型是否为必选模型,TRUE为必选模型,FALSE为可选模型;
<element>节点中包含的字段含义如下:Id:源模型序号;Name:源模型名称;mustFlag:表示模型是否为必选元素,TRUE为必选元素,FALSE为可选元素。
本发明的一个实施例中,
<inputDataDefine>节点表示本源模型子集中,源模型的必选元素和可选元素,作用范围仅限本模型子集,其结构与<inputDataSet>节点下的<inputDataDefine>节点一致;
<queryTreeDefine>节点描述了一个查询树,每个<queryTreeDefine>节点包含了一个<queryTree>节点,<queryTree>节点其下包含一个描述树根对应的模型的<rootClassId>节点,若干个树根下的子分支<querySubTree>节点;
<conditionMapping>节点包含了源模型子集需要满足的映射条件,用<if_expressions>节点表示,以及映射关系,用<MappingInfo>节点表示。
按照本发明的另一方面,还提供了一种多套模型间集合映射装置,包括至少一个处理器和存储器,所述至少一个处理器和存储器之间通过数据总线连接,所述存储器存储能被所述至少一个处理器执行的指令,所述指令在被所述处理器执行后,用于完成所述的多套模型间集合映射方法。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有如下有益效果:
(1)本发明通过提炼复杂集合映射中的公共范式,使用框架编码加脚本映射的方案,一次性解决了数据集合定义、数据查找、条件判断、条件映射等复杂技术问题;
(2)本发明有效降低业务适配代码的开发量,减少人力投入,显著提升了模型适配效率;
(3)本发明使私有模型可以适配开放模型,对现有私有模型冲击较小,与现有架构兼容、平滑演进,同时使得设备拥抱开放性,更好的适应未来技术的发展。
附图说明
图1为本发明实施中多套模型间集合映射方法的流程示意图;
图2为本发明实施中XML脚本语言描述的资源文件模板;
图3为本发明实施中集合映射处理部分的流程图;
图4为本发明例1中描述公有模型到私有模型映射的XML文件结构,其中XML文件定义如下:一个setMapping节点为一个集合映射,包括一个query_all查询关系节点,一个inputDateSet数据节点。每个inputDateSet数据节点包含一个inputDataDefine数据节点和多个inputDataSubSet源模型子集节点。源模型子集节点是映射的原子单位,由一个inputDataDefine数据集、一个queryTreeDefine查询树节点、一个conditionMapping条件映射节点构成。conditionMapping条件映射节点由if_expressions语句定义,可以用条件表达式描述映射条件及多个映射条件之间的关系;
图5为本发明实施例1中源类查询树结构图,查询顺序用树状结构进行描述:每个树节点为一个模型,不同模型之间使用query_all字段描述的查找关系连接起来;
图6为本发明实施例1的源类查询结果树,取用查询结果树中的数据应遵循树的遍历,图中对象T1和T2是根据对象S1查找到的,不能与S2组成一组源模型对象,应与S1组成一组源模型对象;
图7为本发明实施例1中查询结果树筛选过程。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
本发明步骤分为三大部分,第一部分为映射信息的定义;第二部分为映射信息的解析;第三部分为集合映射的处理部分。如图1所示,本发明提供了一种多套模型间集合映射方法,包括如下步骤:
(1)对映射信息进行定义,映射首先需要使用脚本定义集合映射的映射条件,映射源模型,源模型之间的查询树以及映射关系;
(2)对映射信息进行解析,在设备启动后,初始化阶段进行脚本的解析工作,解析出的集合映射信息形成集合映射池,供后续集合映射使用;
(3)根据映射信息的解析结果进行集合映射处理。
具体地,在进行集合映射之前,首先要进行从源模型到目的模型的解析映射信息的定义和解析,如下:
映射信息定义和解析部分:1首先需要使用脚本定义集合映射的映射条件,映射源模型,源模型之间的查询树以及映射关系,当前实现使用XML来定义,实际操作中也可以用其他脚本语言例如JSON等来定义。下面主要介绍XML格式定义方法,总体结构和格式。使用其他脚本语言的总体结构与其一致,只是脚本语言发生变化。图2为使用XML脚本语言描述的资源文件总体结构和格式,其中XXX表示可修改部分,剩下的为本发明定义的固定格式。下面为定义过程和字段详解:
1.1字段详解:
1.1.1<MAPPING_UIM>为整个文件的最外层节点,所有的集合映射信息都定义在<MAPPING_UIM>节点中,其下包含有若干个
<setMapping>节点。此处MAPPING_UIM这个最外层的节点是为了包裹多个setMapping节点,使其形成父子节点的关系,让整个文件结构更加分明,在描述映射信息方面没有实际作用。
1.1.2每个<setMapping>节点对应一个集合映射,<setMapping>节点中有id字段和name字段,用来描述本集合映射的序号和名称。
1.1.3<setMapping>节点下包含一个<query_all>节点,用来描述本集合映射源模型间的查找关系,和一个<inputDataSet>节点,用来描述映射操作相关的源模型必选字段,查询树,映射条件,映射关系等。
1.1.4<query_all>节点中包含有若干个<queryCond>节点,每个
<queryCond>节点表示一个源模型与另一个源模型的查询关系。
其字段含义如下:
·Id:查询关系序号,用于区分不同的查询关系。
·inputClassId:为输入源模型ID。
·outputClass:为输出源模型ID。
1.1.5<queryCond>节点中包含若干个<queryElement>节点,用于描述输入模型和输出模型之间有关联的元素。其字段含义如下:
·inputElementId:输入模型中的关联元素ID。
·outputElementId:输出模型中的关联元素ID。
·Value:该关联关系中输入和输出元素的指定值,可不填。1.1.6<inputDataSet>节点下包含一个<inputDataDefine>节点,一个集
合映射中源模型公共必选元素和可选元素,作用范围为本集合映射和若干个<inputDataSubSet>节点,源模型数据子集。
1.1.7<inputDataDefine>节点包含若干个<class>节点,每个<class>节
点描述了一个源模型是否必选,其字段含义如下:
·Id:源模型序号。
·Name:源模型名称。
·mustFlag:表示模型是否为必选模型,TRUE为必选模型,
FALSE为可选模型。
1.1.8<class>节点中包含若干个<element>节点,表示本模型中的必选
元素,其字段含义如下:
·Id:源模型序号。
·Name:源模型名称。
·mustFlag:表示模型是否为必选元素,TRUE为必选元素,
FALSE为可选元素。
1.1.9<inputDataSubSet>节点中包含一个<inputDataDefine>节点,一个
<queryTreeDefine>节点和一个<conditionMapping>节点。
1.1.9.1<inputDataDefine>节点表示本源模型子集中,源模型的必选元素和可选元素。作用范围仅限本模型子集。其结构与
<inputDataSet>节点下的<inputDataDefine>节点一致,不做赘述。
1.1.9.2<queryTreeDefine>节点描述了一个查询树。每个
<queryTreeDefine>节点包含了一个<queryTree>节点。
<queryTree>节点其下包含一个<rootClassId>节点(描述了树根对应的模型),若干个<querySubTree>节点(树根下的子分支)。
1.1.9.2.1每个<querySubTree>节点包含了若干个
<querySegment>节点(子分支下的子分支)和若干个
<queryCond>节点(最小分支)。
1.1.9.2.2<querySegment>节点其字段含义如下:
●Id:用于区分querySubTree下不同的querySegment,是一个自增的数字。
·leftSegId:表示同一个querySubTree下,本分支左边的querySegment的id。
1.1.9.2.3<queryCond>节点其字段含义如下:
●Id:本id为引用query_all中定义的queryCond的id。
●queryType:表示使用query_all中定义的queryCond的查询方向,若为1则为正向引用,若为0则为反向引用,当正向引用queryCond时,表示使用inputClassId查找outputClass,查找时输入为inputClassId对象中的若干个inputElementId字段。输出为outputClass对象。1.1.9.3<conditionMapping>节点包含了源模型子集需要满足的映
射条件,用<if_expressions>节点表示,以及映射关系,用
<MappingInfo>节点表示。
1.1.9.3.1<if_expressions>节点是描述需要满足的映射条件,脚本中使用条件表达式记录,解析时将条件表达式分解为多个条件判断语句的来存储。
1.1.9.3.2<MappingInfo>节点中包含若干个<mapping>节点,每个<mapping>节点描述了一个目的模型的映射关系,其其字段含义如下:
●destClassid:目的模型ID。
●AfterFobj:目的模型是否在源模型后下发,TRUE为在源模型后下发,FALSE为在源模型前下发。
1.1.9.3.3<mapping>节点中包含若干个<element>节点,每个
<element>节点表示了一个目的模型中的元素值是取自哪个源模型的哪个对象。其其字段含义如下:
●srcEleId:源模型元素ID。
●SrcClassId:源模型ID。
●destEleId:目的模型元素ID。
●flag:预留字段,表示是否需要做其他处理。
1.2定义过程:
1.2.1取所有源模型和目的模型,确定哪些源模型可以映射出哪些目的模型,将其进行分组。对每个分组建立一个集合映射关系,即一个<setMapping>节点。
1.2.2在每组集合映射关系中,将源模型两两之间的查询关系使用脚本描述为<query_all>节点和其下<queryCond>节点。
1.2.3每组源模型和目的模型之间可能存在多种映射情况,比如源模型A、源模型B是一个集合映射中的源模型。当源模型A中元素1的值为1时,和源模型B映射出目的模型C和目的模型D;
当源模型A中元素1的值为2时,和源模型B映射出目的模型C和目的模型E。按照情况将其分为若干个数据子集。
1.2.4将集合映射中所有数据子集中公共的必选信息写在
<inputDataSet>节点中的<inputDataDefine>节点,将数据子集私有的必选信息写在<inputDataSet>节点中的<inputDataDefine>节点。
1.2.5将其查询顺序整理成一个查询树,用<queryTreeDefine>节点表示。
1.2.6将每个数据子集中的映射条件用<if_expressions>节点表示。
1.2.7将每个数据子集中每个目的类的映射关系用<mapping>节点表示,生成一个<MappingInfo>节点。
2在设备启动后,初始化阶段进行脚本的解析工作,解析出的集合映射信息形成集合映射池,供后续集合映射使用。解析步骤如下:
2.1解析query_all字段,明确一个集合映射中多个源模型之间,每个源模型与其他源模型的查找关系,为后面构建查询树做准备。query_all字段包含若干个queryCond字段,每个queryCond字段中定义有一个id字段(用于区分不同queryCond),一个inputClassId字段(用于定义本查找关系的输入源模型ID),一个outputClass(用于定义本查找关系的输出源模型ID),若干个queryElement字段。queryElement字段包含一个inputElementId字段(输入源模型查找用元素),一个outputElementId字段(输出源模型对应元素),一个value字段(查找元素的值)。
2.2解析inputDateSet字段中的inputDataDefine字段,明确一个集合映射中,源模型公共必选元素和可选元素。inputDataDefine字段中定义了若干个class字段(表示一个模型)。每个class字段中包含一个id字段(模型ID),一个name字段(模型名称),一个mustFlag字段(表示模型是否为必选模型,TRUE为必选模型,FALSE为可选模型),若干个element字段。每个个element字段包含一个id字段(模型中的元素ID),一个name字段(元素名称),一个mustFlag字段(表示元素是否为必选元素,TRUE为必选元素,
FALSE为可选元素)。
2.3解析inputDateSet字段中的下inputDataSubSet字段。明确了一个集合映射中的源模型子集,其中inputDataDefine明确了源模型子集中,源模型的必选元素和可选元素。
2.4解析inputDataSubSet字段中的queryTreeDefine字段,明确一个源模型子集中不同源模型的查询关系,以及查询顺序,最终生成查询树,见图2。每个queryTreeDefine字段包含了一个queryTree字段,每个queryTree字段包含一个rootClassId字段(描述了树根对应的模型),若干个querySubTree字段(树根下的子分支)。一个querySubTree字段包含了若干个querySegment字段(子分支下的子分支),一个querySegment字段包含了一个id字段(用于区分querySubTree下不同的querySegment,是一个自增的数字),一个leftSegId字段(表示同一个querySubTree下,本分支左边的querySegment的id),若干个queryCond字段(最小分支)。一个queryCond字段包含一个id字段(本id为引用query_all中定义的queryCond的id),一个queryType字段(表示使用query_all中定义的queryCond的查询方向,若为1则为正向引用,若为0则为反向引用,当正向引用queryCond时,表示使用inputClassId查找outputClass,查找时输入为inputClassId对象中的若干个inputElementId字段。输出为outputClass对象)。
2.5解析inputDataSubSet字段中的conditionMapping字段,明确一个源模型子集需要满足的映射条件,以及映射元素的对应关系。其中if_expressions字段是描述需要满足的映射条件,脚本中使用条件表达式记录,解析时将条件表达式分解为多个条件判断语句的来存储。映射元素的对应关系与映射条件一一对应,每个映射条件都可以拥有不同的映射元素对应关系。
集合映射处理部分流程如图3所示,具体如下:1查找模型所属集合映射。
1.1收到一条模型数据对象后,先根据模型ID判断是否为私有模型。
1.2是私有模型则直接进行原配置下发处理流程。
1.3非私有模型则根据模型ID在集合映射池中查找该模型所属集合映射。
1.4找不到所属集合映射则映射结束。
2找到所属集合映射,同一个源模型所属的集合映射可能有多个,需要按顺序依次处理每个集合映射。
3每个集合映射中,需要先判断模型对象中必选字段集合映射所需是否齐全。
3.1判断该集合映射定义的公共必选字段是否有属于本模型的。
3.2无属于本模型的则继续处理。
3.3有属于本模型的,则判断本次处理的模型数据中的字段是否包含该模型所有的必选字段。
3.4不包含所有必选字段则映射结束。
3.5包含所有必选字段则继续处理下一步骤。
4遍历该集合映射的数据子集,依次查找本模型所属子集。
4.1对每个子集检查其所有源模型,若本模型不包含在源模型中,则不属于该数据子集,则继续匹配下一个数据子集。
4.2属于该数据子集,则继续处理下一步骤。
5生成查询结果树。
5.1取数据子集中定义的查询结果树,初始化源模型查询结果树,并将本次数据对象作为根节点挂在查询结果树上。
5.2根据数据子集中的查询树,解析出本次源模型间的查询顺序。
5.3根据查询顺序依次查找到查询树中定义的所有源模型对象。
5.4将本次处理的模型数据对象作为树根节点,根据本次处理模型数据查到的源模型数据对象作为其子节点,之后依次查找其他数据对象并将其挂在树上,构成查询结果树。
6根据映射条件和映射关系生成目的模型对象。
6.1判断查询结果树中的每组数据是否满足数据子集定义的条件。取用查询结果对象树中对象时,遵循树的遍历,每个叶子节点只能与其根节点构成一组数据,不能与其他相邻叶子节点或者其根节点的相邻节点构成一组数据。
6.2不满足数据子集定义的条件,则继续匹配下一个数据子集。
6.3满足条件则按照数据子集定义的映射关系,在一组源模型对象组中,按照从关键字元素到其他元素的顺序,查找目的模型对象组需要的映射元素,若元素类型不一致,则进行类型转换。最终生成一组目的模型对象组。
7将目的模型对象按顺序插入下发链表。
8遍历所有源模型对象组,映射出所有目的模型对象组完成映射。
实施例一,假设有外部模型R,外部模型S,外部模型T,外部模型U,外部模型W五个外部模型,这五个外部模型要作为一个集合整体映射到私有模型A和私有模型B中。其映射关系根据发明中的定义可以描述为一个XML文件,如图4示。(资源文件为方便解析,每个外部模型都设置了一个序号来唯一标识一个模型,称为class id,示例中为了方便阅读,用模型名加“_ID”的形式标识该模型的序号。)
其映射关系定义和解析流程如下:
1、首先分析外部模型和私有模型之间的差异和联系,将其用专利描述的XML组织形式表示出来,具体组织规则放在下面解析中详细讲解,生成过程不做赘述。
2、在设备启动后,读取图4中query_all字段,读取外部模型之间的查找关系:
a)外部模型R的元素1和外部模型S的元素1相关联,通过外部模型R的元素1可以找到外部模型S中与外部模型R相关联的对象;
b)外部模型S的元素1和外部模型T的元素3相关联,外部模型S的元素2和外部模型T的元素2相关联,通过外部模型S的元素2和元素1可以找到外部模型T中与外部模型S相关联的对象;
c)外部模型S的元素1和外部模型U的元素1相关联,通过外部模型S的元素1可以找到外部模型U中与外部模型S相关联的对象;
d)外部模型S的元素1和外部模型W的元素1相关联,通过外部模型S的元素1可以找到外部模型W中与外部模型S相关联的对象;
3、解析公用输入数据集信息inputDateSet中inputDataDefine字段,明确一个集合映射中公用的源模型必要元素:
a)外部模型S中元素1和元素2;
b)外部模型R中元素1;
c)外部模型T中元素2和元素3。
4、解析第一个输入数据信息子集inputDataSubSet中inputDataDefine
字段,明确一个集合映射子集中的源模型必要元素:外部模型U
中元素1为必要元素。
5、解析第一个输入数据信息子集inputDataSubSet中查询树定义queryTreeDefine部分,首先解析查询树根rootClassId字段,明确查询树根为外部模型R,再解析查询子树querySubTree字段,明确使用查询关系queryCond序号为1的关联关系,即外部模型R
关联外部模型S,将外部模型S作为外部模型R的子节点挂在树上,之后依次解析其他查询子树节点,最终形成查询树如图5所示。
6、解析第一个输入数据信息子集inputDataSubSet中映射条件和映射关系conditionMapping字段。
a)解析映射条件if_expressions字段,明确本数据子集的映射条件为当外部模型U中的元素1值为1且外部模型T中元素1值小于5时才做映射。
b)解析映射关系MappingInfo字段,明确将外部模型R中的元素1和元素2映射至私有模型A中的元素1和元素2;外部模型S中的元素3映射至私有模型A中的元素3;外部模型U中的元素1映射至私有模型A中的元素4;私有模型A的下发顺序再外部模型之后;外部模型S中的元素1映射至私有模型B中的元素1;外部模型T中的元素1映射至私有模型B中的元素2;
私有模型A的下发顺序再外部模型之前。
7、重复步骤4到步骤5,完成第二个输入数据信息子集的解析。
8、解析完成后,将上述信息存储在集合映射池中。
其集合映射处理流程如下:
1、收到一条外部模型R的数据对象R1后,先根据模型ID判断是否为私有模型。
2、显然外部模型R的ID不是私有模型,需要在集合映射池中查找该模型所属集合映射。
3、找到所属集合映射后,判断该集合映射定义的公共必选字段有属于本模型的,其中元素1为必选字段。
4、判断本次收到的数据对象R1中是否包含元素1。
5、不包含所有必选字段则映射结束。
6、包含元素1字段则继续遍历该集合映射的数据子集,本集合映射中有两个数据子集,外部模型R在每一个数据子集中都存在。
7、首先对数据子集1进行处理,首先初始化源模型查询结果树,并将本次数据对象R1作为根节点挂在查询结果树上。
8、根据数据子集中的查询树,解析出本次源模型间的查询顺序为:
a)根据外部模型R查找外部模型S;
b)根据外部模型S查找外部模型T;
c)根据外部模型S查找外部模型U;
9、根据查询顺序,首先用外部模型R1查找到外部模型S中对象S1和S2,之后根据外部模型S1查找到外部模型T中对象T1和T2,外部模型U中的对象U1和U2,根据外部模型S2查找到外部模型T中对象T3和T4,外部模型U中的对象U3和U4。
10、将本次处理的模型数据对象R1作为树根节点,根据本次处理模型数据查到的源模型数据对象作为其子节点,之后依次查找其他数据对象并将其挂在树上,构成查询结果树,如图6所示。
11、从查询结果树中取用数据,取用查询结果对象树中对象时,遵循树的遍历,每个叶子节点只能与其根节点构成一组数据,不能与其他相邻叶子节点或者其根节点的相邻节点构成一组数据,获取到四组数据,分别为R1,S1,T1,U1;R1,S1,T2,U2;R1,S2,T3,U3;R1,S2,T4,U4。
12、判断查询结果树中的每组数据是否满足数据子集定义的条件(具体地,数据子集条件中描述了模型中具体元素的取值范围。检查查询结果树中的每组数据模型中的具体元素的值是否在条件描述的范围中,若在范围中,则该组数据为满足条件的数据,可以继续下一步处理)。根据条件筛选出R1,S1,T1,U1和R1,S2,T4,U4两组数据,如图7所示。
13、将满足条件的两组数据按照数据子集定义的映射关系,在一组源模型对象组中,按照从关键字元素到其他元素的顺序,查找目的模型对象组需要的映射元素,若元素类型不一致,则进行类型转换。最终生成两组目的模型对象组A1,B1和A2,B2。
14、将目的模型对象按顺序插入下发链表。
15、重复步骤7-14,完成对第二个集合映射数据子集的映射。
进一步地,本发明还提供了一种多套模型间集合映射装置,包括至少一个处理器和存储器,所述至少一个处理器和存储器之间通过数据总线连接,所述存储器存储能被所述至少一个处理器执行的指令,所述指令在被所述处理器执行后,用于完成所述的多套模型间集合映射方法。

Claims (10)

1.一种多套模型间集合映射方法,其特征在于,包括如下步骤:
(1)对映射信息进行定义,映射首先需要使用脚本定义集合映射的映射条件,映射源模型,源模型之间的查询树以及映射关系;
(2)对映射信息进行解析,在设备启动后,初始化阶段进行脚本的解析工作,解析出的集合映射信息形成集合映射池,供后续集合映射使用;
(3)根据映射信息的解析结果进行集合映射处理。
2.如权利要求1所述的多套模型间集合映射方法,其特征在于,对映射使用XML脚本语言进行定义,映射中所使用的字段包括:
<MAPPING_UIM>为整个文件的最外层节点,所有的集合映射信息都定义在<MAPPING_UIM>节点中,其下包含有若干个<setMapping>节点;
每个<setMapping>节点对应一个集合映射,<setMapping>节点中有id字段和name字段,用来描述本集合映射的序号和名称;
<setMapping>节点下包含一个<query_all>节点,用来描述本集合映射源模型间的查找关系,和一个<inputDataSet>节点,用来描述映射操作相关的源模型必选字段,查询树,映射条件,映射关系;
<query_all>节点中包含有若干个<queryCond>节点,每个<queryCond>节点表示一个源模型与另一个源模型的查询关系;
<queryCond>节点中包含若干个<queryElement>节点,用于描述输入模型和输出模型之间有关联的元素;
<inputDataSet>节点下包含一个<inputDataDefine>节点,一个集合映射中源模型公共必选元素和可选元素,作用范围为本集合映射和若干个<inputDataSubSet>节点,源模型数据子集;
<inputDataDefine>节点包含若干个<class>节点,每个<class>节点描述了一个源模型是否必选;
<class>节点中包含若干个<element>节点,表示本模型中的必选元素;
<inputDataSubSet>节点中包含一个<inputDataDefine>节点,一个<queryTreeDefine>节点和一个<conditionMapping>节点。
3.如权利要求2所述的多套模型间集合映射方法,其特征在于,对映射信息进行定义的过程,具体包括:
取所有源模型和目的模型,确定哪些源模型可以映射出哪些目的模型,将其进行分组,对每个分组建立一个集合映射关系,即一个<setMapping>节点;
在每组集合映射关系中,将源模型两两之间的查询关系使用脚本描述为<query_all>节点和其下<queryCond>节点;
每组源模型和目的模型之间可能存在多种映射情况,按照情况将其分为若干个数据子集;
将集合映射中所有数据子集中公共的必选信息写在<inputDataSet>节点中的<inputDataDefine>节点,将数据子集私有的必选信息写在<inputDataSet>节点中的<inputDataDefine>节点;
将其查询顺序整理成一个查询树,用<queryTreeDefine>节点表示;
将每个数据子集中的映射条件用<if_expressions>节点表示;
将每个数据子集中每个目的类的映射关系用<mapping>节点表示,生成一个<MappingInfo>节点。
4.如权利要求2所述的多套模型间集合映射方法,其特征在于,所述对映射信息进行解析,具体包括:
解析query_all字段,明确一个集合映射中多个源模型之间,每个源模型与其他源模型的查找关系,为后面构建查询树做准备;
解析inputDateSet字段中的inputDataDefine字段,明确一个集合映射中,源模型公共必选元素和可选元素;
解析inputDateSet字段中的下inputDataSubSet字段,明确了一个集合映射中的源模型子集;
解析inputDataSubSet字段中的queryTreeDefine字段,明确一个源模型子集中不同源模型的查询关系,以及查询顺序,最终生成查询树;
解析inputDataSubSet字段中的conditionMapping字段,明确一个源模型子集需要满足的映射条件,以及映射元素的对应关系。
5.如权利要求2所述的多套模型间集合映射方法,其特征在于,所述根据映射信息的解析结果进行集合映射处理,具体包括:
查找模型所属集合映射;
找到所属集合映射,同一个源模型所属的集合映射可能有多个,需要按顺序依次处理每个集合映射;
每个集合映射中,需要先判断模型对象中必选字段集合映射所需是否齐全;
遍历该集合映射的数据子集,依次查找本模型所属子集;
生成查询结果树;
根据映射条件和映射关系生成目的模型对象;
将目的模型对象按顺序插入下发链表;
遍历所有源模型对象组,映射出所有目的模型对象组完成映射。
6.如权利要求5所述的多套模型间集合映射方法,其特征在于,所述生成查询结果树,具体包括:
取数据子集中定义的查询结果树,初始化源模型查询结果树,并将本次数据对象作为根节点挂在查询结果树上;
根据数据子集中的查询树,解析出本次源模型间的查询顺序;
根据查询顺序依次查找到查询树中定义的所有源模型对象;
将本次处理的模型数据对象作为树根节点,根据本次处理模型数据查到的源模型数据对象作为其子节点,之后依次查找其他数据对象并将其挂在树上,构成查询结果树。
7.如权利要求5所述的多套模型间集合映射方法,其特征在于,所述根据映射条件和映射关系生成目的模型对象,具体包括:
判断查询结果树中的每组数据是否满足数据子集定义的条件,取用查询结果对象树中对象时,遵循树的遍历,每个叶子节点只能与其根节点构成一组数据,不能与其他相邻叶子节点或者其根节点的相邻节点构成一组数据;
不满足数据子集定义的条件,则继续匹配下一个数据子集;
满足条件则按照数据子集定义的映射关系,在一组源模型对象组中,按照从关键字元素到其他元素的顺序,查找目的模型对象组需要的映射元素,若元素类型不一致,则进行类型转换,最终生成一组目的模型对象组。
8.如权利要求2所述的多套模型间集合映射方法,其特征在于,
<queryCond>节点中包含的字段含义如下:Id:查询关系序号,用于区分不同的查询关系;inputClassId:为输入源模型ID;outputClass:为输出源模型ID;
<queryElement>节点中包含的字段含义如下:inputElementId:输入模型中的关联元素ID;outputElementId:输出模型中的关联元素ID;Value:该关联关系中输入和输出元素的指定值,可不填;
<class>节点中包含的字段含义如下:Id:源模型序号;Name:源模型名称;mustFlag:表示模型是否为必选模型,TRUE为必选模型,FALSE为可选模型;
<element>节点中包含的字段含义如下:Id:源模型序号;Name:源模型名称;mustFlag:表示模型是否为必选元素,TRUE为必选元素,FALSE为可选元素。
9.如权利要求2所述的多套模型间集合映射方法,其特征在于:
<inputDataDefine>节点表示本源模型子集中,源模型的必选元素和可选元素,作用范围仅限本模型子集,其结构与<inputDataSet>节点下的<inputDataDefine>节点一致;
<queryTreeDefine>节点描述了一个查询树,每个<queryTreeDefine>节点包含了一个<queryTree>节点,<queryTree>节点其下包含一个描述树根对应的模型的<rootClassId>节点,若干个树根下的子分支<querySubTree>节点;
<conditionMapping>节点包含了源模型子集需要满足的映射条件,用<if_expressions>节点表示,以及映射关系,用<MappingInfo>节点表示。
10.一种多套模型间集合映射装置,其特征在于:
包括至少一个处理器和存储器,所述至少一个处理器和存储器之间通过数据总线连接,所述存储器存储能被所述至少一个处理器执行的指令,所述指令在被所述处理器执行后,用于完成权利要求1-9中任一项所述的多套模型间集合映射方法。
CN202310072433.7A 2023-01-31 2023-01-31 多套模型间集合映射方法与装置 Pending CN116301882A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310072433.7A CN116301882A (zh) 2023-01-31 2023-01-31 多套模型间集合映射方法与装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310072433.7A CN116301882A (zh) 2023-01-31 2023-01-31 多套模型间集合映射方法与装置

Publications (1)

Publication Number Publication Date
CN116301882A true CN116301882A (zh) 2023-06-23

Family

ID=86777017

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310072433.7A Pending CN116301882A (zh) 2023-01-31 2023-01-31 多套模型间集合映射方法与装置

Country Status (1)

Country Link
CN (1) CN116301882A (zh)

Similar Documents

Publication Publication Date Title
US6836890B1 (en) Methods and systems for message translation and parsing of data structures in a distributed component architecture
CN110309196A (zh) 区块链数据存储和查询方法、装置、设备及存储介质
CN104866426B (zh) 软件测试综合控制方法及系统
CN112882974B (zh) 一种json数据转换方法、装置、计算机设备和存储介质
CN111176656B (zh) 一种复杂数据匹配方法及介质
CN112667735A (zh) 一种基于大数据的可视化模型建立分析系统和方法
CN111191422B (zh) 一种文件格式转换方法、装置和计算机可读存储介质
CN110515896A (zh) 模型资源管理方法、模型文件制作方法、装置和系统
CN110502667A (zh) 基于dom框架的odx文档解析和生成技术
CN113079198A (zh) 一种云平台接口协议转换的方法及装置
US7440408B1 (en) Method and system for inventorying a network
CN115202626A (zh) 一种支持多技术栈组件的低代码前端开发方法
CN113238740A (zh) 代码生成方法、代码生成装置、存储介质及电子设备
CN115794106A (zh) 一种轨道交通二进制协议数据配置式解析的方法及系统
CN110309214A (zh) 一种指令执行方法及其设备、存储介质、服务器
CN117278661A (zh) 一种工业物联网多协议解析方法及系统
CN116301882A (zh) 多套模型间集合映射方法与装置
CN106293862B (zh) 一种可扩展标记语言xml数据的解析方法和装置
CN104391782B (zh) 基于xml脚本的网络设备管理软件客户端模拟方法
CN1336770A (zh) 路由器操作维护与配置命令的命令存储和命令解释方法
CN112015382B (zh) 一种处理器构架解析方法、装置、设备及储存介质
CN113949749B (zh) Xml报文处理方法及装置
CN113239127B (zh) 科技服务关联网络的构建、依赖关系的识别方法及计算机产品
CN112217896A (zh) 一种json报文转换方法以及相关装置
CN112417844A (zh) 一种并行的cim/e文件结构化解析方法

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