CN105302803B - 一种产品bom差异分析与同步更新方法 - Google Patents
一种产品bom差异分析与同步更新方法 Download PDFInfo
- Publication number
- CN105302803B CN105302803B CN201410232496.5A CN201410232496A CN105302803B CN 105302803 B CN105302803 B CN 105302803B CN 201410232496 A CN201410232496 A CN 201410232496A CN 105302803 B CN105302803 B CN 105302803B
- Authority
- CN
- China
- Prior art keywords
- node
- data
- bom
- cryptographic hash
- bom data
- 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
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种产品BOM差异分析与同步更新方法,包括以下步骤:将不同数据源的BOM数据按照数据结构及层次关系生成相应的XML格式的BOM数据文件,并根据BOM数据文件生成哈希值树;对不同数据源的哈希值树的相对应结点进行比较,得出不同数据源BOM数据的差异点;根据BOM数据差异点类型及内容生成BOM数据的同步脚本,在需进行同步的数据源中通过执行同步脚本实现BOM数据的同步。本发明将企业信息系统中的产品BOM数据信息以XML文件形式进行处理,方便制定标准化的文件格式,便于体现产品BOM数据层次关系,而且XML文件易于应用系统解析与查询,可以直观的显示BOM数据间的差异。
Description
技术领域
本发明涉及一种产品BOM差异分析与同步更新方法,属于企业管理信息技术领域。
背景技术
BOM(Bill of Material,物料清单)是企业PDM/MRPⅡ/ERP信息系统中最重要的基础数据,BOM数据同步是企业信息系统应用重要功能之一,也是进行系统集成的关键。目前企业信息系统中涉及产品BOM数据同步时,大多采用对需要同步的数据进行删除重建的方式进行数据同步,这种方式数据操作量大,而且不同数据源中产品BOM数据的实际差异不易获取,无法实现数据差异的比较。即使部分应用在数据库层次上进行了差异比较,也不能直观反映出BOM数据在层次结构上的具体差异,而且在不同数据库中对BOM数据进行逐条比较会消耗大量系统资源,影响系统性能。
发明内容
本发明提供了一种产品BOM数据差异分析与同步更新方法,通过该方法可以实现企业信息系统中不同数据源BOM数据的差异比较和针对差异的数据同步更新。
本发明解决其技术问题所采用的技术方案是:一种产品BOM差异分析与同步更新方法,包括以下步骤:
将不同数据源的BOM数据按照数据结构及层次关系生成相应的XML格式的BOM数据文件,并根据BOM数据文件生成哈希值树;
对不同数据源的哈希值树的相对应结点进行比较,得出不同数据源BOM数据的差异点;
根据BOM数据差异点的类型和内容生成BOM数据的同步脚本,在需进行同步的数据源中通过执行同步脚本实现BOM数据的同步。
所述根据BOM数据文件生成哈希值树包括以下步骤:
从BOM数据文件中最底层开始,对各个子结点内容依次进行哈希计算,得出各个子结点的哈希值;再根据各个子结点哈希值和所属父结点的内容得到上一层各个父结点的哈希值,直至遍历全部层的所有结点生成XML格式文件的各个结点的哈希值;将各个结点的哈希值按层次关系组成一个哈希值树。
所述结点内容包括属性及其对应的数据。
所述对不同数据源的哈希值树的相对应结点进行比较包括以下步骤:
1)分别读取不同数据源BOM数据的哈希值树的根结点;判断两个根结点的哈希值是否相同;
2)如果相同,则判定两个不同数据源的BOM数据相同,结束哈希值树的差异比较;如果不同,分别获取两个根结点下一层的全部子结点的属性及对应的哈希值集合;
标记源BOM数据的哈希树结点属性集合中存在且目标BOM数据的哈希树结点属性集合中不存在的所有结点以及其全部子结点为新增结点;
标记目标BOM数据的哈希树结点属性集合中存在且源BOM信息哈希树结点属性集合中不存在的所有结点以及其全部子结点为删除结点;
比较不同数据源中相同属性结点的哈希值,获得源BOM数据中所有与目标BOM数据中相同属性结点且哈希值不同的结点列表,并标记为修改结点;
3)将不同数据源中的修改结点作为根结点,重复步骤1)~2)直到遍历哈希树所有层得到全部新增结点、删除结点和修改结点作为差异点。
所述同步脚本包括新增、修改、删除三类数据同步脚本。
本发明具有以下有益效果及优点:
1.本发明将企业信息系统中的产品BOM数据信息以XML文件形式进行处理,方便制定标准化的文件格式,便于体现产品BOM数据层次关系,而且XML文件易于应用系统解析与查询,可以直观的显示BOM数据间的差异。
2.本发明根据层次关系组织BOM数据的XML格式文件,通过对各个结点内容及其子结点内容进行哈希计算生成对应的哈希值树,在差异比较时可以通过上层结点哈希值的比较,判定其下层信息是否存在差异,可以大幅提高差异查询效率。
3.本发明可以实现根据BOM数据的具体差异点生成同步脚本,通过执行同步脚本进行数据同步,避免对BOM数据整体重建带来的额外系统开销。
附图说明
图1为本发明的产品BOM数据差异分析与同步更新方法流程图;
图2为源BOM数据对应的哈希值树示意图;
图3为目标BOM数据对应的哈希值树示意图;
图4为产品BOM数据XML文件生成哈希值树方法流程图;
图5为产品BOM数据哈希值树差异比较方法流程图。
具体实施方式
下面结合实施例对本发明做进一步的详细说明。
一种产品BOM数据差异分析与同步更新方法,包括以下步骤:
首先在应用计算机上读取存储在源数据服务器和目标数据服务器中的BOM数据并按照数据结构及层次关系生成相应的XML格式的BOM数据文件。
根据生成的BOM数据XML格式文件,从数据文件中最底层开始,对各个子结点内容进行哈希计算,得出各个子结点的哈希值,再根据各个子结点哈希值和所属父结点的内容得到上一层各个父结点的哈希值,以此类推,生成XML格式文件各个结点的哈希值。将各个结点的哈希值按层次关系组成一个哈希值树。
从哈希值树的顶端开始进行对应结点的差异比较,找出存在差异的结点,并根据对应关系得出不同数据源BOM数据的差异点,供用户使用。
根据BOM数据差异点的类型及内容,生成BOM数据的同步脚本,在需进行同步的数据源中通过执行同步脚本实现BOM数据的同步。
所述的XML格式的BOM数据文件是根据BOM数据按照数据结构和层次关系生成。各结点可以包含各类需要进行比较的数据,如物料号、物料名称、需要数量,物料工艺特征等信息。
所述的XML格式文件各个结点的哈希值是根据其下层各个子结点的哈希值和该结点内容计算得出的,在差异比较时可以通过上层结点哈希值的比较,判定其下层信息是否存在差异,可以大幅提高比较效率。
根据BOM数据的差异点生成BOM数据的同步脚本是按照比较得出BOM数据的差异点类型(新增结点、修改结点和删除结点)与结点内容(包含属性和数据,即BOM数据的信息),可以生成同步脚本;其中差异类型决定脚本格式,结点内容决定脚本更新的内容,通过这两项,生成的同步脚本分为新增,修改、删除3类,用于进行BOM数据的同步。
本发明提供了一种产品BOM差异分析与同步更新方法,如图1所示包括如下步骤:
A:首先将不同数据源的BOM数据根据数据结构和层次关系生成相应的XML格式的BOM数据文件。
现以一个企业信息系统中的BOM数据表为例进行说明(为了说明的简洁,这里的BOM数据结构只设置父物料号、子物料号、物料名称、数量四个字段),源BOM数据信息存储了最新的BOM信息,目标BOM数据信息是需要进行同步的BOM信息。
表1源BOM数据信息
父物料号 | 父物料名称 | 子物料号 | 子物料名称 | 数量 |
Pr-A | 产品A | A001 | 子部件1 | 1 |
Pr-A | 产品A | A002 | 子部件2 | 4 |
A001 | 子部件1 | L001 | 零件1 | 2 |
A001 | 子部件1 | L002 | 零件2 | 1 |
A001 | 子部件1 | L003 | 零件3 | 4 |
A002 | 子部件2 | L001 | 零件1 | 2 |
A002 | 子部件2 | L004 | 零件4 | 3 |
根据源BOM数据信息所生成数据文件的XML格式如下:
表2目标BOM数据信息
父物料号 | 父物料名称 | 子物料号 | 子物料名称 | 数量 |
Pr-A | 产品A | A001 | 子部件1 | 1 |
Pr-A | 产品A | A002 | 子部件2 | 4 |
A001 | 子部件1 | L001 | 零件1 | 2 |
A001 | 子部件1 | L002 | 零件2 | 1 |
A001 | 子部件1 | L003 | 零件3 | 4 |
A002 | 子部件2 | L005 | 零件5 | 4 |
A002 | 子部件2 | L004 | 零件4 | 2 |
根据目标BOM数据信息所生成数据文件的XML格式如下:
B:根据生成的XML格式的BOM数据文件,从BOM结构的最底层开始,计算每个结点的哈希值,每一个结点的哈希值是由结点本身内容和其子结点的哈希值决定的。生成一个XML文件对应的哈希值树如图2、3所示。
C:根据生成的哈希值树,从哈希值树的顶点开始进行差异比较,得出全部的差异结点。实例中可以找到子部件2下的零件1、零件5、零件4共3个差异点。
D:根据找到的差异结点,找到对应的BOM数据XML格式文件结点,并进行标记,供用户使用。
E:根据BOM数据XML格式文件中结点数据差异类型及内容生成同步脚本。实例中根据差异类型应生成删除子部件2中零件5的数据脚本,增加子部件2中零件1数据的脚本及修改子部件2中零件4数量的脚本。
F:在目标数据源中通过执行同步脚本实现BOM数据同步。
图4为产品BOM数据XML文件生成哈希值树方法流程图;具体流程是:
1、读取BOM数据XML格式文件中的根结点内容。
2、根据该结点内容获得该结点的全部子结点集合。
3、读取全部子结点集合中的第一个结点内容。
4、判断该结点是否为叶子结点(没有子结点的结点),如果不是叶子结点则根据该结点迭代执行步骤2和步骤3;
5、如果该结点是叶子结点,则对该结点的内容进行哈希计算,计算出该结点的哈希值,记录该结点零部件号属性和对应的哈希值作为该结点内容标识。哈希值(Hash直接音译为“哈希”,也可翻译做“散列”)就是把任意长度的输入,通过散列算法,变换成固定长度的输出,该输出就是哈希值。哈希值广泛应用于文件校验、数字签名和协议鉴权应用中。本方法使用哈希值是为了提高进行结点内容比较效率,因为每个BOM数据结点可能包含多种信息,如果逐一比较,效率较低,通过对结点内容的哈希计算得到固定长度的哈希值作为结点内容标识,通过对结点内容标识(哈希值)的比较可以大大提高结点信息比较效率。
6、判断该结点是否为同级结点集合中最后一个结点,即判断其父结点的全部子结点是否都计算了哈希值。如果该结点不是集合中最后一个结点,则读取集合中下一个结点内容,重复执行步骤4、5、6。
7、如果该结点是集合中最后一个结点,则读取其父结点内容计算内容的哈希值,再将全部子结点的哈希值按XML文件中的次序组合在一起进行哈希计算得到新的哈希值(即对子结点哈希值串进行再次哈希计算得到的哈希值)并与父结点内容的哈希值组合得出父结点的哈希值,记录结点零部件号属性和对应的哈希值作为该结点内容标识。这样每个结点的内容标识也包含其全部子结点的内容标识信息,通过对其哈希值的比较可以判断其子结点的信息是否存在差异,可以提高差异查找效率。
8、判断该结点是否为根结点,如果不是根结点则读取该结点所在结点集合中下一个结点内容,重复执行步骤4、5、6。
9、如果该结点为根结点,则哈希值树生成结束。
图5为产品BOM数据哈希值树差异比较方法流程图;
产品BOM数据哈希值树差异比较时,由于每个结点的哈希值都体现了该结点以及其子结点的内容,所以我们将哈希值树视为多个二阶子树的集合,将哈希值树差异比较简化为多个二阶子树的比较。具体流程是:
1.首先分别读取不同数据源BOM数据对应的哈希值树的根结点。
2.判断该结点的哈希值是否相同,如果相同则判定两个不同数据源的BOM数据相同,结束哈希值树差异比较。
3.如果不同,分别获取该结点下层全部子结点的内容标识(零部件号属性及对应哈希值)集合。
4.标记源BOM信息哈希树结点信息集合中没有在目标BOM信息哈希树对应的结点,此类结点为新增结点,同时标记该结点下全部子结点为新增结点。
5.标记目标BOM信息哈希树结点信息集合中没有在源BOM信息哈希树对应的结点,此类结点为删除结点,同时标记该结点下全部子结点为删除结点。
6.分别判断对应零部件号属性结点的哈希值,如果哈希值相同则说明该零部件BOM结构信息未发生变化。
7.如果对应零部件号属性结点的哈希值不同,判断该结点是否是叶子结点,如果是叶子结点则标记该结点为修改结点。
8.如果结点不是叶子结点,则以该结点为根结点重复以上步骤。直到遍历哈希树全部差异结点。
通过以上步骤可以直接找到不同数据源BOM数据中差异内容,并可以在XML文件中直接标识,供用户使用;同时可以根据结点差异类型和差异内容生成数据同步脚本,用于数据同步。
通过上述技术的实施,可以实现产品BOM信息差异分析及同步更新的目的,帮助用户直观有效的分析不同数据源BOM数据的差异;同时为不同数据源BOM数据快速高效同步,提供一套完整的解决方案。
本发明方法采用将BOM信息按数据结构及层次关系转换成XML格式文件,并通过对XML文件中各结点内容进行哈希计算形成对应的哈希值树,对不同数据源BOM信息的哈希值树进行比较。由于每结点的哈希值都代表了该结点和其子结点的全部信息,所以可以快速识别差异的部分,大幅提高差异查询效率。同时通过对差异的标识可以直观的将BOM数据的差异信息提供给用户。本发明在进行BOM信息同步时采用了只针对差异点进行同步的方法,可以有效的减少数据更新量,提高数据同步效率。
Claims (3)
1.一种产品BOM差异分析与同步更新方法,其特征在于包括以下步骤:
将不同数据源的BOM数据按照数据结构及层次关系生成相应的XML格式的BOM数据文件,并根据BOM数据文件生成哈希值树;
对不同数据源的哈希值树的相对应结点进行比较,得出不同数据源BOM数据的差异点;
根据BOM数据差异点的类型和内容生成BOM数据的同步脚本,在需进行同步的数据源中通过执行同步脚本实现BOM数据的同步;
所述对不同数据源的哈希值树的相对应结点进行比较包括以下步骤:
1)分别读取不同数据源BOM数据的哈希值树的根结点;判断两个根结点的哈希值是否相同;
2)如果相同,则判定两个不同数据源的BOM数据相同,结束哈希值树的差异比较;如果不同,分别获取两个根结点下一层的全部子结点的属性及对应的哈希值集合;
标记源BOM数据的哈希值树结点属性集合中存在且目标BOM数据的哈希值树结点属性集合中不存在的所有结点以及其全部子结点为新增结点;
标记目标BOM数据的哈希值树结点属性集合中存在且源BOM数据哈希值树结点属性集合中不存在的所有结点以及其全部子结点为删除结点;
比较不同数据源中相同属性结点的哈希值,获得源BOM数据中所有与目标BOM数据中相同属性结点且哈希值不同的结点列表,并标记为修改结点;
3)将不同数据源中的修改结点作为根结点,重复步骤1)~2)直到遍历哈希值树所有层得到全部新增结点、删除结点和修改结点作为差异点;
所述根据BOM数据文件生成哈希值树包括以下步骤:
从BOM数据文件中最底层开始,对各个子结点内容依次进行哈希计算,得出各个子结点的哈希值;再根据各个子结点哈希值和所属父结点的内容得到上一层各个父结点的哈希值,直至遍历全部层的所有结点生成XML格式文件的各个结点的哈希值;将各个结点的哈希值按层次关系组成一个哈希值树。
2.根据权利要求1所述的一种产品BOM差异分析与同步更新方法,其特征在于:结点内容包括属性及其对应的数据。
3.根据权利要求1所述的一种产品BOM差异分析与同步更新方法,其特征在于所述同步脚本包括新增、修改、删除三类数据同步脚本。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410232496.5A CN105302803B (zh) | 2014-05-28 | 2014-05-28 | 一种产品bom差异分析与同步更新方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410232496.5A CN105302803B (zh) | 2014-05-28 | 2014-05-28 | 一种产品bom差异分析与同步更新方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105302803A CN105302803A (zh) | 2016-02-03 |
CN105302803B true CN105302803B (zh) | 2019-03-19 |
Family
ID=55200082
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410232496.5A Active CN105302803B (zh) | 2014-05-28 | 2014-05-28 | 一种产品bom差异分析与同步更新方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105302803B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106503216A (zh) * | 2016-11-03 | 2017-03-15 | 用友网络科技股份有限公司 | 支持分层的元数据同步方法及元数据同步装置 |
CN108038088B (zh) * | 2017-11-13 | 2023-07-28 | 朱海峰 | 一种信息传承过程中的修复方法 |
CN108229884A (zh) * | 2017-12-28 | 2018-06-29 | 合肥国轩高科动力能源有限公司 | 一种核对erp系统中的bom的方法 |
CN110109920B (zh) * | 2019-03-19 | 2022-03-22 | 咪咕文化科技有限公司 | 数据比对方法及服务器 |
CN110348732A (zh) * | 2019-07-08 | 2019-10-18 | 泰华智慧产业集团股份有限公司 | 基于哈希算法的企业画像数据预处理方法和系统 |
CN110516206A (zh) * | 2019-07-23 | 2019-11-29 | 平安科技(深圳)有限公司 | 文件比对方法、装置、计算机设备和存储介质 |
CN111143353B (zh) * | 2019-12-04 | 2023-04-14 | 中国航空工业集团公司西安飞行自动控制研究所 | 更改单中提取bom变化数据的方法 |
CN111144089B (zh) * | 2019-12-17 | 2021-12-07 | 东风商用车有限公司 | 零部件明细表与设计软件的模型文件差异检查方法及设备 |
CN113938381A (zh) * | 2021-10-15 | 2022-01-14 | 牙木科技股份有限公司 | 一种通用简单的网管和网元配置同步的方法和系统 |
CN113988043B (zh) * | 2021-12-24 | 2022-04-26 | 深圳佑驾创新科技有限公司 | 硬件物料清单管理方法、装置、计算机设备以及存储介质 |
CN115687522B (zh) * | 2022-10-29 | 2024-05-17 | 浙江睿峰电喷系统有限公司 | 一种Web ERP系统与PDM系统之间进行产品BOM同步的方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040148601A1 (en) * | 2000-08-02 | 2004-07-29 | Kroening James L. | Method and system for calculation and use of a disk image identifer |
US10140588B2 (en) * | 2009-12-28 | 2018-11-27 | International Business Machines Corporation | Bill of material synchronization |
CN102567818A (zh) * | 2010-12-08 | 2012-07-11 | 金蝶软件(中国)有限公司 | 生成订单物料清单的方法和系统 |
CN102682098B (zh) * | 2012-04-27 | 2014-05-14 | 北京神州绿盟信息安全科技股份有限公司 | 检测网页内容变更的方法及装置 |
-
2014
- 2014-05-28 CN CN201410232496.5A patent/CN105302803B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN105302803A (zh) | 2016-02-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105302803B (zh) | 一种产品bom差异分析与同步更新方法 | |
Rudolf et al. | The graph story of the SAP HANA database | |
CN105706078B (zh) | 实体集合的自动定义 | |
US20090138429A1 (en) | Sructure Based Storage, Query, Update and Transfer of Tree-Based Documents | |
CN106874426B (zh) | 基于Storm的RDF流式数据关键词实时搜索方法 | |
Comyn-Wattiau et al. | Model driven reverse engineering of NoSQL property graph databases: The case of Neo4j | |
CN104573039A (zh) | 一种关系数据库的关键词查询方法 | |
JP6088091B1 (ja) | 更新装置、更新方法、及び更新プログラム | |
US20110302187A1 (en) | Schema definition generating device and schema definition generating method | |
US20090138503A1 (en) | Structure Based Storage, Query, Update and Transfer of Tree-Based Documents | |
US8082492B2 (en) | Structured-document management apparatus, search apparatus, storage method, search method and program | |
CN104699698A (zh) | 基于海量数据的图查询处理方法 | |
Gao et al. | Shortest path computing in relational DBMSs | |
JP6654654B2 (ja) | クエリ生成支援方法及びクエリ生成支援装置 | |
CN104156431B (zh) | 一种基于实体图社团结构的rdf关键词查询方法 | |
CN103927168B (zh) | 一种面向对象的数据模型持久化的方法及装置 | |
Aluç et al. | chameleon-db: a workload-aware robust RDF data management system | |
Finis et al. | DeltaNI: An efficient labeling scheme for versioned hierarchical data | |
CN112800143A (zh) | 一种数据对象的结构和数据对象动态管理的方法 | |
CN106933844B (zh) | 面向大规模rdf数据的可达性查询索引的构建方法 | |
Mohammed et al. | Selectivity estimation of extended XML query tree patterns based on prime number labeling and synopsis modeling | |
JP2010267081A (ja) | 情報検索方法及び装置及びプログラム | |
US9904697B2 (en) | Managing versions of cases | |
Zada et al. | Large-scale data integration using graph probabilistic dependencies (gpds) | |
Hewasinghage et al. | Modeling strategies for storing data in distributed heterogeneous NoSQL databases |
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 |