CN105787080B - 节点数据处理方法及装置 - Google Patents
节点数据处理方法及装置 Download PDFInfo
- Publication number
- CN105787080B CN105787080B CN201610119602.8A CN201610119602A CN105787080B CN 105787080 B CN105787080 B CN 105787080B CN 201610119602 A CN201610119602 A CN 201610119602A CN 105787080 B CN105787080 B CN 105787080B
- Authority
- CN
- China
- Prior art keywords
- node
- node data
- data export
- type
- interface
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/258—Data format conversion from or to a database
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种节点数据处理方法,包括步骤:采用平衡二叉树方式查询预设的节点映射容器中当前节点的节点名对应的节点类型ID,其中,节点映射容器将各个节点的节点名与节点类型ID关联;调用预设的功能映射容器查询所述节点类型ID对应的接口指针类中的节点数据导出接口指针是否关联当前节点类型对应的节点数据导出接口,其中,功能映射容器将各个节点类型ID与预设的接口指针类关联,接口指针类中封装有节点数据导出接口指针;若是,调用所述节点数据导出接口将当前节点对应的节点数据导出至数据库。本发明还公开了一种节点数据处理装置。本发明提高了节点数据处理的效率。
Description
技术领域
本发明涉及数据库技术领域,尤其涉及节点数据处理方法及装置。
背景技术
现有技术中,在对节点数据进行查询提取、排除冗余、导入导出等数据处理时,例如将汽诊大数据导出至数据库的过程中,在将汽诊大数据中当前节点对应的节点数据导出至数据库后,通常采用一般的循环加判断模式,比如通过swith…case…来查询当前节点对应的下一节点,然后再执行将下一节点对应的节点数据导出至数据库的操作,直至将所有节点对应的节点数据均导出至数据库为止。当节点数量大到一定程度时,会导致查询当前节点对应的下一节点的时间过长,从而导致节点数据处理的效率低。
发明内容
本发明的主要目的在于提出一种节点数据处理方法及装置,旨在解决现有节点数据处理效率低的技术问题。
为实现上述目的,本发明提供一种节点数据处理方法,所述节点数据处理方法包括以下步骤:
采用平衡二叉树方式查询预设的节点映射容器中当前节点的节点名对应的节点类型ID,其中,所述节点映射容器将各个节点的节点名与节点类型ID关联;
调用预设的功能映射容器查询所述节点类型ID对应的接口指针类中的节点数据导出接口指针是否关联当前节点类型对应的节点数据导出接口,其中,所述功能映射容器将各个节点类型ID与预设的接口指针类关联,所述接口指针类中封装有节点数据导出接口指针;
在所述节点类型ID对应的接口指针类中的节点数据导出接口指针关联当前节点类型对应的节点数据导出接口时,调用所述节点数据导出接口将当前节点对应的节点数据导出至数据库。
优选地,所述调用预设的功能映射容器查询所述节点类型ID对应的接口指针类中的节点数据导出接口指针是否关联当前节点类型对应的节点数据导出接口的步骤之前,还包括:
调用预设的功能映射初始化接口将所述功能映射容器进行初始化操作,以将所述功能映射容器中各个节点类型ID对应的接口指针类中的节点数据导出接口指针关联各个节点类型对应的节点数据导出接口。
优选地,所述调用预设的功能映射初始化接口将所述功能映射容器进行初始化操作,以将所述功能映射容器中各个节点类型ID对应的接口指针类中的节点数据导出接口指针关联当前节点类型对应的节点数据导出接口的步骤包括:
调用预设的功能映射初始化接口分别将各个节点类型对应的节点数据导出接口赋值给预设的接口指针类中的节点数据导出接口指针;
将各个节点类型ID和对应赋值后的节点数据导出接口指针赋值给预设的与所述功能映射容器匹配的对象;
将赋值后的对象插入所述功能映射容器,以将所述功能映射容器中各个节点类型ID对应的接口指针类中的节点数据导出接口指针关联各个节点类型对应的节点数据导出接口。
优选地,所述调用预设的功能映射容器查询所述节点类型ID对应的接口指针类中的节点数据导出接口指针是否关联当前节点类型对应的节点数据导出接口的步骤包括:
当所述节点类型ID对应的接口指针类中的节点数据导出接口指针为空时,判断所述接口指针类中的节点数据导出接口指针未关联当前节点类型对应的节点数据导出接口;
当所述节点类型ID对应的接口指针类中的节点数据导出接口指针不为空时,判断所述接口指针类中的节点数据导出接口指针关联当前节点类型对应的节点数据导出接口。
优选地,所述节点数据处理方法还包括步骤:
在所述节点类型ID对应的接口指针类中的节点数据导出接口指针未关联当前节点类型对应的节点数据导出接口时,终止节点数据处理操作。
此外,为实现上述目的,本发明还提出一种节点数据处理装置,所述节点数据处理装置包括:
第一查询模块,用于采用平衡二叉树方式查询预设的节点映射容器中当前节点的节点名对应的节点类型ID,其中,所述节点映射容器将各个节点的节点名与节点类型ID关联;
第二查询模块,用于调用预设的功能映射容器查询所述节点类型ID对应的接口指针类中的节点数据导出接口指针是否关联当前节点类型对应的节点数据导出接口,其中,所述功能映射容器将各个节点类型ID与预设的接口指针类关联,所述接口指针类中封装有节点数据导出接口指针;
处理模块,用于在所述节点类型ID对应的接口指针类中的节点数据导出接口指针关联当前节点类型对应的节点数据导出接口时,调用所述节点数据导出接口将当前节点类型对应的节点数据导出至数据库。
优选地,所述节点数据处理装置还包括:
初始化模块,用于调用预设的功能映射初始化接口将所述功能映射容器进行初始化操作,以将所述功能映射容器中各个节点类型ID对应的接口指针类中的节点数据导出接口指针关联当前节点类型对应的节点数据导出接口。
优选地,所述初始化模块包括:
第一赋值单元,用于调用预设的功能映射初始化接口分别将各个节点类型对应的节点数据导出接口赋值给预设的接口指针类中的节点数据导出接口指针;
第二赋值单元,用于将各个节点类型ID和对应赋值后的节点数据导出接口指针赋值给预设的与所述功能映射容器匹配的对象;
存储单元,用于将赋值后的对象插入所述功能映射容器,以将所述功能映射容器中各个节点类型ID对应的接口指针类中的节点数据导出接口指针关联各个节点类型对应的节点数据导出接口。
优选地,所述第二查询模块用于:
当所述节点类型ID对应的接口指针类中的节点数据导出接口指针为空时,判断所述接口指针类中的节点数据导出接口指针未关联当前节点类型对应的节点数据导出接口;
当所述节点类型ID对应的接口指针类中的节点数据导出接口指针不为空时,判断所述接口指针类中的节点数据导出接口指针关联当前节点类型对应的节点数据导出接口。
优选地,所述处理模块还用于:
在所述节点类型ID对应的接口指针类中的节点数据导出接口指针未关联当前节点类型对应的节点数据导出接口时,终止节点数据处理操作。
本发明提出的节点数据处理方法及装置,在获取到当前节点的节点名时,采用平衡二叉树方式查询预设的节点映射容器中所述节点名对应的节点类型ID,然后调用预设的功能映射容器查询所述节点类型ID对应的接口指针类中的节点数据导出接口指针是否关联当前节点类型对应的节点数据导出接口,在所述节点类型ID对应的接口指针类中的节点数据导出接口指针关联当前节点类型对应的节点数据导出接口时,调用所述节点数据导出接口将当前节点对应的节点数据导出至数据库,由于节点映射容器和功能映射容器均以平衡二叉树方式实现,采用平衡二叉树方式在容器中插入和查询数据效率高,同时节点映射容器和功能映射容器的结合使用有效化解了节点数据循环处理过程中的冗余操作接口,因此,大幅度提高了节点数据处理的效率。
附图说明
图1为本发明节点数据处理方法第一实施例的流程示意图;
图2为本发明节点数据处理方法第二实施例的流程示意图;
图3为本发明节点数据处理方法第二实施例中调用预设的初始化接口将所述功能映射容器进行初始化操作的细化流程示意图;
图4为本发明节点数据处理装置第一实施例的功能模块示意图;
图5为本发明节点数据处理装置第二实施例的功能模块示意图;
图6为图4中初始化模块的细化功能模块示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明提供一种节点数据处理方法,参照图1,图1为本发明节点数据处理方法第一实施例的流程示意图。
在本实施例中,该节点数据处理方法包括以下步骤:
步骤S10,采用平衡二叉树方式查询预设的节点映射容器中当前节点的节点名对应的节点类型ID,其中,所述节点映射容器将各个节点的节点名与节点类型ID关联;
关联容器是一种以平衡二叉树方式实现、插入任何元素都按相应的排序准则来确定其位置的一种容器。常用的关联容器包括set、multiset、map和multimap。其中,map的元素是“键-值”对的二元组形式,通过键(key)高效地存储和读取数据,而值则表示所存储和读取的数据。本实施例中,以map关联容器为例对本发明节点数据处理方法进行详细说明。
例如,基于map关联容器定义一个节点映射容器otxMap:map<CString,unsignedint>otxMap,其中otxMap里面的CString类型作为key来使用,用于表示某节点的节点名;unsigned int类型用于表示某节点的节点名对应的节点类型ID,也即所述节点映射容器otxMap将各个节点的节点名与节点类型ID关联。同时,本实施例中还预设一个基类:classBASE_PROCESS_NODE{…},以及继承该基类的一个类,例如继承该基类的一个起始节点类:
除此以外,本实施例中还预设一个用于获取节点名的查询节点接口:BASE_PROCESS_NODE*FindNextNode(CString strNextNodeName),在将当前节点的节点数据导出至相应的数据库后,获取下一节点的节点名,调用所述查询节点接口BASE_PROCESS_NODE*FindNextNode(CStringstrNextNodeName)将当前节点赋值为下一节点。
本实施例中,在将当前节点的节点数据导出至数据库时,当调用所述查询节点接口BASE_PROCESS_NODE*FindNextNode(CString strNextNodeName)获取到当前节点的节点名时,调用所述节点映射容器otxMap,采用平衡二叉树方式查询所述节点映射容器otxMap中是否存在当前节点的节点名,在所述节点映射容器otxMap中查询到当前节点的节点名时,获取所述节点名对应的节点类型ID。
步骤S20,调用预设的功能映射容器查询所述节点类型ID对应的接口指针类中的节点数据导出接口指针是否关联当前节点类型对应的节点数据导出接口,其中,所述功能映射容器将各个节点类型ID与预设的接口指针类关联,所述接口指针类中封装有节点数据导出接口指针;
在本实施例中,除了所述节点映射容器otxMap以外,基于map关联容器还定义一个功能映射容器g_mapReflect:map<unsigned long,OTX_FUNC_REFLECT>g_mapReflect。其中,unsigned long类型用于节点的节点名对应的节点类型ID,OTX_FUNC_REFLECT为封装有节点数据导出接口指针的接口指针类:
其中,节点数据导出接口指针定义为(*pExportNode)(unsigned longulCurrentNodeTypeID,BASE_PROCESS_NODE*pCurrentNode),因此,所述功能映射容器g_mapReflect将各个节点的节点类型ID通过接口指针类与相应节点类型对应的节点数据导出接口指针关联。当调用所述节点映射容器otxMap获取到当前节点的节点名对应的节点类型ID后,调用所述功能映射容器g_mapReflect查询在所述功能映射容器g_mapReflect中所述节点类型ID对应的接口指针类中的节点数据导出接口指针是否关联当前节点类型对应的节点数据导出接口。具体地,本实施例中,所述步骤S20包括:
步骤a,当所述节点类型ID对应的接口指针类中的节点数据导出接口指针为空时,判断所述接口指针类中的节点数据导出接口指针未关联当前节点类型对应的节点数据导出接口;
步骤b,当所述节点类型ID对应的接口指针类中的节点数据导出接口指针不为空时,判断所述接口指针类中的节点数据导出接口指针关联当前节点类型对应的节点数据导出接口。
在本实施例中,当调用所述功能映射容器g_mapReflect查询到所述功能映射容器g_mapReflect中所述节点类型ID对应的接口指针类中的节点数据导出接口指针为空时,判断所述接口指针类中的节点数据导出接口指针未关联当前节点类型对应的节点数据导出接口。反之,当调用所述功能映射容器g_mapReflect查询到所述功能映射容器g_mapReflect中所述节点类型ID对应的接口指针类中的节点数据导出接口指针不为空时,判断所述接口指针类中的节点数据导出接口指针关联当前节点类型对应的节点数据导出接口。
步骤S30,在所述节点类型ID对应的接口指针类中的节点数据导出接口指针关联当前节点类型对应的节点数据导出接口时,调用所述节点数据导出接口将当前节点对应的节点数据导出至数据库。
当调用功能映射容器g_mapReflect查询在所述功能映射容器g_mapReflect中当前节点的节点类型ID对应的接口指针类中的节点数据导出接口指针关联当前节点类型对应的节点数据导出接口时,则调用关联的所述节点数据导出接口将当前节点对应的节点数据导出至相应的数据库中,完成当前节点对应的节点数据导出操作。然后根据当前节点指定的下一个节点的节点名通过调用所述查询节点接口BASE_PROCESS_NODE*FindNextNode(CString strNextNodeName)获取到下一节点,循环执行上述操作步骤S10-S30,将下一节点对应的节点数据导出至所述数据库中。通过循环执行上述操作步骤依次将每一节点对应的节点数据导出至所述数据库中,从而完成一个完整流程节点数据的导出操作。当调用功能映射容器g_mapReflect查询在所述功能映射容器g_mapReflect中当前节点的节点类型ID对应的接口指针类中的节点数据导出接口指针未关联当前节点类型对应的节点数据导出接口时,则即刻退出循环,终止进行数据导出的处理操作。
现有技术中在对节点数据进行处理时,通常是采用swith…case…循环来查询当前节点要操作的下一个节点是什么节点,swith语句根据节点编号来判断下一个要操作的节点,case语句块中对相应的节点调用查询下一节点的操作接口确定下一个节点,再返回下一节点供接下来要做的操作接口使用。当节点个数大到一定程度时,会导致查询下一个节点的时间过长,节点数据的处理效率较低。而本实施例通过采用映射模式同时优化了数据结构和算法结构,省去了大量的swith…case…语句,项目实测中缩减了上百万行由swith…case…语句造成的代码冗余,大幅度消除了代码泡沫和接口冗余,增强了各个节点的相应接口的可移植性和稳健性。
本实施例提供的节点数据处理方法,在获取到当前节点的节点名时,采用平衡二叉树方式查询预设的节点映射容器中所述节点名对应的节点类型ID,然后调用预设的功能映射容器查询所述节点类型ID对应的接口指针类中的节点数据导出接口指针是否关联当前节点类型对应的节点数据导出接口,在所述节点类型ID对应的接口指针类中的节点数据导出接口指针关联当前节点类型对应的节点数据导出接口时,调用所述节点数据导出接口将当前节点对应的节点数据导出至数据库,由于节点映射容器和功能映射容器均以平衡二叉树方式实现,采用平衡二叉树方式在容器中插入和查询数据效率高,同时节点映射容器和功能映射容器的结合使用有效化解了节点数据循环处理过程中的冗余操作接口,因此,大幅度提高了节点数据处理的效率。
进一步地,如图2所示,基于第一实施例提出本发明节点数据处理方法第二实施例。在本实施例中,所述步骤S20之前,还包括步骤:
步骤S40,调用预设的功能映射初始化接口将所述功能映射容器进行初始化操作,以将所述功能映射容器中各个节点类型ID对应的接口指针类中的节点数据导出接口指针关联各个节点类型对应的节点数据导出接口。
本实施例中,还预设有一功能映射初始化接口InitialReflectTable(unsignedlong ulCurrentNodeTypeID),调用所述功能映射初始化接口InitialReflectTable(unsigned long ulCurrentNodeTypeID)对所述功能映射容器g_mapReflect进行初始化操作,以将所述功能映射容器g_mapReflect中各个节点类型ID对应的接口指针类中的节点数据导出接口指针关联各个节点类型对应的节点数据导出接口。具体地,如图3所示,所述步骤S40包括:
步骤S41,调用预设的功能映射初始化接口分别将各个节点类型对应的节点数据导出接口赋值给预设的接口指针类中的节点数据导出接口指针;
步骤S42,将各个节点类型ID和对应赋值后的节点数据导出接口指针赋值给预设的与所述功能映射容器匹配的对象;
步骤S43,将赋值后的对象插入所述功能映射容器,以将所述功能映射容器中各个节点类型ID对应的接口指针类中的节点数据导出接口指针关联各个节点类型对应的节点数据导出接口。
本实施例中,除了预设的所述功能映射初始化接口InitialReflectTable(unsigned long ulCurrentNodeTypeID)外,还预设有与所述功能映射容器g_mapReflect匹配的pair对象:pair<unsigned int,OTX_FUNC_REFLECT>pValue。每个节点类型ID通过接口指针类OTX_FUNC_REFLECT都对应有节点数据导出接口,通过调用节点数据导出接口将每个节点对应的节点数据导出至数据库中。本实施例中首先调用所述功能映射初始化接口InitialReflectTable(unsigned long ulCurrentNodeTypeID)将各个节点类型对应的节点数据导出接口赋值给预设的接口指针类中的节点数据导出接口指针,然后将各个节点类型ID和对应赋值后的节点数据导出接口指针赋值给预设的与所述功能映射容器g_mapReflect匹配的对象pValue。所述对象pValue包括第一变量pValue.first和第二变量pValue.second。具体地,将节点类型ID赋值给所述对象pValue的第一变量pValue.first,将节点类型ID对应的赋值后的节点数据导出接口指针赋值给所述对象pValue的第二变量pValue.second。例如,将起始节点所对应的节点类型对应的节点数据导出接口ExportStartNode赋值给预设的接口指针类中的节点数据导出接口指针rf.pExport:rf.pExport=ExportStartNode,将起始节点所对应的节点类型ID赋值给所述对象pValue的第一变量pValue.first:pValue.first=STARTNODEID,将起始节点所对应的节点类型ID对应的赋值后的节点数据导出接口指针赋值给所述对象pValue的第二变量pValue.second:pValue.second=rf,其中rf对象是用类OTX_FUNC_REFLECT来实例化的。在所述对象pValue赋值完成时,将赋值后的对象pValue插入所述功能映射容器g_mapReflect,以将所述功能映射容器g_mapReflect中各个节点类型ID对应的接口指针类中的节点数据导出接口指针关联相应节点类型对应的节点数据导出接口。
本实施例提供的节点数据处理方法,通过将节点类型ID和对应节点类型ID赋值的节点数据导出接口指针赋值给预设的与功能映射容器匹配的对象,然后将赋值后的对象插入功能映射容器,充分利用map容器“键-值”对的二元组形式,通过键高效地查询检索数据,从而提高了节点数据处理的效率。
本发明进一步提供一种节点数据处理装置,如图4所示,图4为本发明节点数据处理装置第一实施例的功能模块示意图。
在本实施例中,该节点数据处理装置包括:
第一查询模块10,用于采用平衡二叉树方式查询预设的节点映射容器中当前节点的节点名对应的节点类型ID,其中,所述节点映射容器将各个节点的节点名与节点类型ID关联;
关联容器是一种以平衡二叉树方式实现、插入任何元素都按相应的排序准则来确定其位置的一种容器。常用的关联容器包括set、multiset、map和multimap。其中,map的元素是“键-值”对的二元组形式,通过键(key)高效地存储和读取数据,而值则表示所存储和读取的数据。本实施例中,以map关联容器为例对本发明节点数据处理装置进行详细说明。
例如,基于map关联容器定义一个节点映射容器otxMap:map<CString,unsignedint>otxMap,其中otxMap里面的CString类型作为key来使用,用于某节点的节点名;unsigned int类型用于某节点的节点名对应的节点类型ID,也即所述节点映射容器otxMap将各个节点的节点名与节点类型ID关联。同时,本实施例中还预设一个基类:class BASE_PROCESS_NODE{…},以及继承该基类的一个类,例如继承该基类的一个起始节点类:
除此以外,本实施例中还预设一个用于获取当前节点的下一个节点的查询节点接口:BASE_PROCESS_NODE*FindNextNode(CString strNextNodeName),在将当前节点的节点数据导出至相应的数据库后,调用所述查询节点接口BASE_PROCESS_NODE*FindNextNode(CString strNextNodeName)传入下一节点的节点名,将当前节点赋值为下一节点。
本实施例中,在将当前节点的节点数据导出至数据库时,当调用所述查询节点接口BASE_PROCESS_NODE*FindNextNode(CString strNextNodeName)重置下一个节点为当前节点,获取到当前节点的节点名时,第一查询模块10调用所述节点映射容器otxMap,采用平衡二叉树方式查询所述节点映射容器otxMap中是否存在当前节点的节点名,在所述节点映射容器otxMap中查询到当前节点的节点名时,获取所述节点名对应的节点类型ID。
第二查询模块20,用于调用预设的功能映射容器查询所述节点类型ID对应的接口指针类中的节点数据导出接口指针是否关联当前节点类型对应的节点数据导出接口,其中,所述功能映射容器将各个节点类型ID与预设的接口指针类关联,所述接口指针类中封装有节点数据导出接口指针;
在本实施例中,除了所述节点映射容器otxMap以外,基于map关联容器还定义一个功能映射容器g_mapReflect:map<unsigned long,OTX_FUNC_REFLECT>g_mapReflect。其中,unsigned long类型用于表示节点的节点名对应的节点类型ID,OTX_FUNC_REFLECT为封装有节点数据导出接口指针的接口指针类:
其中,节点数据导出接口指针为(*pExportNode)(unsigned longulCurrentNodeTypeID,BASE_PROCESS_NODE*pCurrentNode),因此,所述功能映射容器g_mapReflect将各个节点的节点类型ID通过接口指针类间接与当前节点类型对应的节点数据导出接口指针关联。当第一查询模块10调用所述节点映射容器otxMap获取到当前节点的节点名对应的节点类型ID时,第二查询模块20调用所述功能映射容器g_mapReflect查询在所述功能映射容器g_mapReflect中所述节点类型ID对应的接口指针类中的节点数据导出接口指针是否关联当前节点类型对应的节点数据导出接口。具体地,本实施例中,所述第二查询模块20用于:
当所述节点类型ID对应的接口指针类中的节点数据导出接口指针为空时,判断所述接口指针类中的节点数据导出接口指针未关联当前节点类型对应的节点数据导出接口;
当所述节点类型ID对应的接口指针类中的节点数据导出接口指针不为空时,判断所述接口指针类中的节点数据导出接口指针关联当前节点类型对应的节点数据导出接口。
在本实施例中,当第二查询模块20调用所述功能映射容器g_mapReflect查询到所述功能映射容器g_mapReflect中所述节点类型ID对应的接口指针类中的节点数据导出接口指针为空时,则判断所述接口指针类中的节点数据导出接口指针未关联当前节点类型对应的节点数据导出接口。反之,当第二查询模块20调用所述功能映射容器g_mapReflect查询到所述功能映射容器g_mapReflect中所述节点类型ID对应的节点数据导出接口指针不为空时,则判断所述接口指针类中的节点数据导出接口指针关联当前节点类型对应的节点数据导出接口。
处理模块30,用于在所述节点类型ID对应的接口指针类中的节点数据导出接口指针关联当前节点类型对应的节点数据导出接口时,调用所述节点数据导出接口将当前节点对应的节点数据导出至数据库。
当第二查询模块20调用功能映射容器g_mapReflect查询在所述功能映射容器g_mapReflect中当前节点的节点类型ID对应的接口指针类中的节点数据导出接口指针关联当前节点类型对应的节点数据导出接口时,则处理模块30调用关联的所述节点数据导出接口将当前节点对应的节点数据导出至相应的数据库中,完成当前节点对应的节点数据导出操作。然后通过调用所述查询节点接口BASE_PROCESS_NODE*FindNextNode(CStringstrNextNodeName)获取到下一节点并将下一个节点重置为当前节点,之后第一查询模块10、第二查询模块20和处理模块30依次循环执行上述操作,将下一节点对应的节点数据导出至所述数据库中。直至将每一节点对应的节点数据导出至所述数据库中,完成一个完整流程节点数据的导出操作。当第二查询模块20调用功能映射容器g_mapReflect查询在所述功能映射容器g_mapReflect中当前节点的节点类型ID对应的接口指针类中的节点数据导出接口指针未关联当前节点类型对应的节点数据导出接口时,则处理模块30即刻退出循环,终止进行数据导出的处理操作。
现有技术中在对节点数据进行处理时,通常是采用swith…case…循环来查询当前节点要操作的下一个节点是什么节点,swith语句根据节点编号来判断下一个要操作的节点,case语句块中对相应的节点调用查询下一节点的操作接口确定下一个节点,再返回下一节点供接下来要做的操作接口使用。当节点个数大到一定程度时,会导致swith…case…语句不断扩张,进而导致查询下一个节点的时间过长,节点数据的处理效率较低。而本实施例通过采用映射模式同时优化了数据结构和算法结构,省去了大量的swith…case…语句,大幅度消除了代码泡沫,接口冗余,增强了各个节点的相应接口的可移植性和稳健性。
本实施例提供的节点数据处理装置,在获取到当前节点的节点名时,第一查询模块10采用平衡二叉树方式查询预设的节点映射容器中所述节点名对应的节点类型ID,然后第二查询模块20调用预设的功能映射容器查询所述节点类型ID对应的接口指针类中的节点数据导出接口指针是否关联当前节点类型对应的节点数据导出接口,在所述节点类型ID对应的接口指针类中的节点数据导出接口指针关联当前节点类型对应的节点数据导出接口时,处理模块30调用所述节点数据导出接口将当前节点对应的节点数据导出至数据库,由于节点映射容器和功能映射容器均以平衡二叉树方式实现,采用平衡二叉树方式在容器中插入和查询数据效率高,因此,提高了节点数据处理的效率。
进一步地,如图5所示,基于第一实施例提出本发明节点数据处理装置第二实施例。在本实施例中,所述节点数据处理装置还包括:
初始化模块40,用于调用预设的功能映射初始化接口将所述功能映射容器进行初始化操作,以将所述功能映射容器中各个节点类型ID对应的接口指针类中的节点数据导出接口指针关联各个节点类型对应的节点数据导出接口。
本实施例中,还预设有一功能映射初始化接口InitialReflectTable(unsignedlong ulCurrentNodeTypeID),初始化模块40调用所述功能映射初始化接口InitialReflectTable(unsigned long ulCurrentNodeTypeID)对所述功能映射容器g_mapReflect进行初始化操作,以将所述功能映射容器g_mapReflect中各个节点类型ID对应的接口指针类中的节点数据导出接口指针关联相应的节点类型对应的节点数据导出接口。具体地,如图6所示,所述初始化模块40包括:
第一赋值单元41,用于调用预设的功能映射初始化接口分别将各个节点类型对应的节点数据导出接口赋值给预设的接口指针类中的节点数据导出接口指针;
第二赋值单元42,用于将各个节点类型ID和对应赋值后的节点数据导出接口指针赋值给预设的与所述功能映射容器匹配的对象;
存储单元43,用于将赋值后的对象插入所述功能映射容器,以将所述功能映射容器中各个节点类型ID对应的接口指针类中的节点数据导出接口指针关联各个节点类型对应的节点数据导出接口。
本实施例中,除了预设的所述功能映射初始化接口InitialReflectTable(unsigned long ulCurrentNodeTypeID)外,还预设有与所述功能映射容器g_mapReflect匹配的pair对象:pair<unsigned int,OTX_FUNC_REFLECT>pValue。每个节点类型ID通过接口指针类OTX_FUNC_REFLECT都对应有当前节点类型的节点数据导出接口,处理模块30通过调用节点数据导出接口将每个节点对应的节点数据导出至数据库中。本实施例中第一赋值单元41调用所述功能映射初始化接口InitialReflectTable(unsigned longulCurrentNodeTypeID)将各个节点类型对应的节点数据导出接口赋值给预设的接口指针类中的节点数据导出接口指针,第二赋值单元42将各个节点类型ID和对应赋值后的节点数据导出接口指针赋值给预设的与所述功能映射容器g_mapReflect匹配的对象pValue。所述对象pValue包括第一变量pValue.first和第二变量pValue.second。具体地,第二赋值单元42将节点类型ID赋值给所述对象pValue的第一变量pValue.first,将节点类型ID对应的赋值后的节点数据导出接口指针赋值给所述对象pValue的第二变量pValue.second。例如,第一赋值单元41将起始节点所对应的节点类型对应的节点数据导出接口ExportStartNode赋值给预设的接口指针类中的节点数据导出接口指针rf.pExport:rf.pExport=ExportStartNode;第二赋值单元42将起始节点所对应的节点类型ID赋值给所述对象pValue的第一变量pValue.first:pValue.first=STARTNODEID,将起始节点所对应的节点类型ID对应的赋值后的节点数据导出接口指针赋值给所述对象pValue的第二变量pValue.second:pValue.second=rf,其中rf对象是用类OTX_FUNC_REFLECT来实例化的。在所述对象pValue赋值完成时,存储单元43将赋值后的对象pValue插入所述功能映射容器g_mapReflect,以将所述功能映射容器g_mapReflect中各个节点类型ID对应的接口指针类中的节点数据导出接口指针关联相应的节点类型对应的节点数据导出接口。
本实施例提供的节点数据处理装置,通过第一赋值单元41和第二赋值单元42将节点类型ID和对应节点类型ID赋值的节点数据导出接口指针赋值给预设的与功能映射容器匹配的对象,然后存储单元43将赋值后的对象插入功能映射容器,充分利用map容器“键-值”对的二元组形式,通过键高效地查询检索数据,从而提高了节点数据处理的效率。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种节点数据处理方法,其特征在于,所述节点数据处理方法包括以下步骤:
采用平衡二叉树方式查询预设的节点映射容器中当前节点的节点名对应的节点类型ID,其中,所述节点映射容器将各个节点的节点名与节点类型ID关联;
调用预设的功能映射容器查询所述节点类型ID对应的接口指针类中的节点数据导出接口指针是否关联当前节点类型对应的节点数据导出接口,其中,所述功能映射容器将各个节点类型ID与预设的接口指针类关联,所述接口指针类中封装有节点数据导出接口指针;
在所述节点类型ID对应的接口指针类中的节点数据导出接口指针关联当前节点类型对应的节点数据导出接口时,调用所述节点数据导出接口将当前节点对应的节点数据导出至数据库。
2.如权利要求1所述的节点数据处理方法,其特征在于,所述调用预设的功能映射容器查询所述节点类型ID对应的接口指针类中的节点数据导出接口指针是否关联当前节点类型对应的节点数据导出接口的步骤之前,还包括:
调用预设的功能映射初始化接口将所述功能映射容器进行初始化操作,以将所述功能映射容器中各个节点类型ID对应的接口指针类中的节点数据导出接口指针关联各个节点类型对应的节点数据导出接口。
3.如权利要求2所述的节点数据处理方法,其特征在于,所述调用预设的功能映射初始化接口将所述功能映射容器进行初始化操作,以将所述功能映射容器中各个节点类型ID对应的接口指针类中的节点数据导出接口指针关联各个节点类型对应的节点数据导出接口的步骤包括:
调用预设的功能映射初始化接口分别将各个节点类型对应的节点数据导出接口赋值给预设的接口指针类中的节点数据导出接口指针;
将各个节点类型ID和对应赋值后的节点数据导出接口指针赋值给预设的与所述功能映射容器匹配的对象;
将赋值后的对象插入所述功能映射容器,以将所述功能映射容器中各个节点类型ID对应的接口指针类中的节点数据导出接口指针关联各个节点类型对应的节点数据导出接口。
4.如权利要求1所述的节点数据处理方法,其特征在于,所述调用预设的功能映射容器查询所述节点类型ID对应的接口指针类中的节点数据导出接口指针是否关联当前节点类型对应的节点数据导出接口的步骤包括:
当所述节点类型ID对应的接口指针类中的节点数据导出接口指针为空时,判断所述接口指针类中的节点数据导出接口指针未关联当前节点类型对应的节点数据导出接口;
当所述节点类型ID对应的接口指针类中的节点数据导出接口指针不为空时,判断所述接口指针类中的节点数据导出接口指针关联当前节点类型对应的节点数据导出接口。
5.如权利要求1-4任一项所述的节点数据处理方法,其特征在于,所述节点数据处理方法还包括步骤:
在所述节点类型ID对应的接口指针类中的节点数据导出接口指针未关联当前节点类型对应的节点数据导出接口时,终止节点数据处理操作。
6.一种节点数据处理装置,其特征在于,所述数据处理装置包括:
第一查询模块,用于采用平衡二叉树方式查询预设的节点映射容器中当前节点的节点名对应的节点类型ID,其中,所述节点映射容器将各个节点的节点名与节点类型ID关联;
第二查询模块,用于调用预设的功能映射容器查询所述节点类型ID对应的接口指针类中的节点数据导出接口指针是否关联当前节点类型对应的节点数据导出接口,其中,所述功能映射容器将各个节点类型ID与预设的接口指针类关联,所述接口指针类中封装有节点数据导出接口指针;
处理模块,用于在所述节点类型ID对应的接口指针类中的节点数据导出接口指针关联当前节点类型对应的节点数据导出接口时,调用所述节点数据导出接口将当前节点对应的节点数据导出至数据库。
7.如权利要求6所述的节点数据处理装置,其特征在于,所述节点数据处理装置还包括:
初始化模块,用于调用预设的功能映射初始化接口将所述功能映射容器进行初始化操作,以将所述功能映射容器中各个节点类型ID对应的接口指针类中的节点数据导出接口指针关联当前节点类型对应的节点数据导出接口。
8.如权利要求7所述的节点数据处理装置,其特征在于,所述初始化模块包括:
第一赋值单元,用于调用预设的功能映射初始化接口分别将各个节点类型对应的节点数据导出接口赋值给预设的接口指针类中的节点数据导出接口指针;
第二赋值单元,用于将各个节点类型ID和对应赋值后的节点数据导出接口指针赋值给预设的与所述功能映射容器匹配的对象;
存储单元,用于将赋值后的对象插入所述功能映射容器,以将所述功能映射容器中各个节点类型ID对应的接口指针类中的节点数据导出接口指针关联各个节点类型对应的节点数据导出接口。
9.如权利要求6所述的节点数据处理装置,其特征在于,所述第二查询模块用于:
当所述节点类型ID对应的接口指针类中的节点数据导出接口指针为空时,判断所述接口指针类中的节点数据导出接口指针未关联当前节点类型对应的节点数据导出接口;
当所述节点类型ID对应的接口指针类中的节点数据导出接口指针不为空时,判断所述接口指针类中的节点数据导出接口指针关联当前节点类型对应的节点数据导出接口。
10.如权利要求6-9任一项所述的节点数据处理装置,其特征在于,所述处理模块还用于:
在所述节点类型ID对应的接口指针类中的节点数据导出接口指针未关联当前节点类型对应的节点数据导出接口时,终止节点数据处理操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610119602.8A CN105787080B (zh) | 2016-03-02 | 2016-03-02 | 节点数据处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610119602.8A CN105787080B (zh) | 2016-03-02 | 2016-03-02 | 节点数据处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105787080A CN105787080A (zh) | 2016-07-20 |
CN105787080B true CN105787080B (zh) | 2019-04-19 |
Family
ID=56386991
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610119602.8A Active CN105787080B (zh) | 2016-03-02 | 2016-03-02 | 节点数据处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105787080B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112181924A (zh) * | 2020-09-27 | 2021-01-05 | 深圳市元征科技股份有限公司 | 文件转换方法、装置、设备及介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1604529A (zh) * | 2003-09-30 | 2005-04-06 | 安捷伦科技有限公司 | 用多数据类型表示来传送数据对象的方法和系统 |
CN1908896A (zh) * | 2006-08-24 | 2007-02-07 | 上海科泰世纪科技有限公司 | 一种构件的继承方法 |
CN101770360B (zh) * | 2008-12-29 | 2013-01-16 | 上海科泰世纪科技有限公司 | 构件化软件系统中构件的继承方法 |
CN103455591A (zh) * | 2013-08-30 | 2013-12-18 | 国家电网公司 | 一种并行协同系统的标准数据交换接口方法 |
CN103744989A (zh) * | 2014-01-21 | 2014-04-23 | 国家电网公司 | 一种层次节点数据的查询方法 |
-
2016
- 2016-03-02 CN CN201610119602.8A patent/CN105787080B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1604529A (zh) * | 2003-09-30 | 2005-04-06 | 安捷伦科技有限公司 | 用多数据类型表示来传送数据对象的方法和系统 |
CN1908896A (zh) * | 2006-08-24 | 2007-02-07 | 上海科泰世纪科技有限公司 | 一种构件的继承方法 |
CN101770360B (zh) * | 2008-12-29 | 2013-01-16 | 上海科泰世纪科技有限公司 | 构件化软件系统中构件的继承方法 |
CN103455591A (zh) * | 2013-08-30 | 2013-12-18 | 国家电网公司 | 一种并行协同系统的标准数据交换接口方法 |
CN103744989A (zh) * | 2014-01-21 | 2014-04-23 | 国家电网公司 | 一种层次节点数据的查询方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105787080A (zh) | 2016-07-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109559234B (zh) | 一种区块链状态数据的存储方法、设备和存储介质 | |
CN109101415A (zh) | 基于数据库比对的接口测试方法、系统、设备和存储介质 | |
CN108415845A (zh) | Ab测试系统指标置信区间的计算方法、装置和服务器 | |
CN108345511A (zh) | 一种应用数据校验方法、装置及电子设备 | |
CN109918205A (zh) | 一种边缘设备调度方法、系统、装置及计算机存储介质 | |
CN111340054A (zh) | 数据标注方法、装置及数据处理设备 | |
CN110263133B (zh) | 基于知识图谱的问答方法、电子装置、设备及存储介质 | |
CN112434188A (zh) | 一种异构数据库的数据集成方法、装置及存储介质 | |
CN110110045A (zh) | 一种检索相似文本的方法、装置以及存储介质 | |
CN105787080B (zh) | 节点数据处理方法及装置 | |
JP2019512143A (ja) | データ処理方法及び装置 | |
CN109002434A (zh) | 客服问答匹配方法、服务器及存储介质 | |
CN110929218A (zh) | 一种差异最小化随机分组方法及系统 | |
CN107018000A (zh) | 账户关联方法和装置 | |
CN114840684A (zh) | 基于医疗实体的图谱构建方法、装置、设备及存储介质 | |
CN110333999B (zh) | 一种用于手机客户端进行测试环境切换的方法 | |
CN111026946A (zh) | 一种页面信息抽取方法、装置、介质及设备 | |
CN110188274B (zh) | 搜索纠错方法及装置 | |
CN109117091A (zh) | 一种ssd设备挂载点获取方法及相关装置 | |
CN110209582A (zh) | 代码覆盖率的统计方法及装置、电子设备、存储介质 | |
CN114936198A (zh) | 一种数据迁移的方法及装置 | |
CN106778048A (zh) | 数据处理的方法及装置 | |
CN113434596A (zh) | 一种分布式数据库测试数据的生成方法及装置 | |
CN107688582A (zh) | 资源推荐模型的获取方法及装置 | |
CN112560500A (zh) | 文本处理方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |