一种产品bom差异分析与同步更新方法
【技术领域】
[0001] 本发明涉及一种产品BOM差异分析与同步更新方法,属于企业管理信息技术领 域。
【背景技术】
[0002] BOM(Bill of Material,物料清单)是企业PDM/MRP II /ERP信息系统中最重要的 基础数据,BOM数据同步是企业信息系统应用重要功能之一,也是进行系统集成的关键。目 前企业信息系统中涉及产品BOM数据同步时,大多采用对需要同步的数据进行删除重建的 方式进行数据同步,这种方式数据操作量大,而且不同数据源中产品BOM数据的实际差异 不易获取,无法实现数据差异的比较。即使部分应用在数据库层次上进行了差异比较,也不 能直观反映出BOM数据在层次结构上的具体差异,而且在不同数据库中对BOM数据进行逐 条比较会消耗大量系统资源,影响系统性能。
【发明内容】
[0003] 本发明提供了一种产品BOM数据差异分析与同步更新方法,通过该方法可以实现 企业信息系统中不同数据源BOM数据的差异比较和针对差异的数据同步更新。
[0004] 本发明解决其技术问题所采用的技术方案是:一种产品BOM差异分析与同步更新 方法,包括以下步骤:
[0005] 将不同数据源的BOM数据按照数据结构及层次关系生成相应的XML格式的BOM数 据文件,并根据BOM数据文件生成哈希值树;
[0006] 对不同数据源的哈希值树的相对应结点进行比较,得出不同数据源BOM数据的差 异点;
[0007] 根据BOM数据差异点的类型和内容生成BOM数据的同步脚本,在需进行同步的数 据源中通过执行同步脚本实现BOM数据的同步。
[0008] 所述根据BOM数据文件生成哈希值树包括以下步骤:
[0009] 从BOM数据文件中最底层开始,对各个子结点内容依次进行哈希计算,得出各个 子结点的哈希值;再根据各个子结点哈希值和所属父结点的内容得到上一层各个父结点的 哈希值,直至遍历全部层的所有结点生成XML格式文件的各个结点的哈希值;将各个结点 的哈希值按层次关系组成一个哈希值树。
[0010] 所述结点内容包括属性及其对应的数据。
[0011] 所述对不同数据源的哈希值树的相对应结点进行比较包括以下步骤:
[0012] 1)分别读取不同数据源BOM数据的哈希值树的根结点;判断两个根结点的哈希值 是否相同;
[0013] 2)如果相同,则判定两个不同数据源的BOM数据相同,结束哈希值树的差异比较; 如果不同,分别获取两个根结点下一层的全部子结点的属性及对应的哈希值集合;
[0014] 标记源BOM数据的哈希树结点属性集合中存在且目标BOM数据的哈希树结点属性 集合中不存在的所有结点以及其全部子结点为新增结点;
[0015] 标记目标BOM数据的哈希树结点属性集合中存在且源BOM信息哈希树结点属性集 合中不存在的所有结点以及其全部子结点为删除结点;
[0016] 比较不同数据源中相同属性结点的哈希值,获得源BOM数据中所有与目标BOM数 据中相同属性结点且哈希值不同的结点列表,并标记为修改结点;
[0017] 3)将不同数据源中的修改结点作为根结点,重复步骤1)~2)直到遍历哈希树所 有层得到全部新增结点、删除结点和修改结点作为差异点。
[0018] 所述同步脚本包括新增、修改、删除三类数据同步脚本。
[0019] 本发明具有以下有益效果及优点:
[0020] 1.本发明将企业信息系统中的产品BOM数据信息以XML文件形式进行处理,方便 制定标准化的文件格式,便于体现产品BOM数据层次关系,而且XML文件易于应用系统解析 与查询,可以直观的显示BOM数据间的差异。
[0021] 2.本发明根据层次关系组织BOM数据的XML格式文件,通过对各个结点内容及其 子结点内容进行哈希计算生成对应的哈希值树,在差异比较时可以通过上层结点哈希值的 比较,判定其下层信息是否存在差异,可以大幅提高差异查询效率。
[0022] 3.本发明可以实现根据BOM数据的具体差异点生成同步脚本,通过执行同步脚本 进行数据同步,避免对BOM数据整体重建带来的额外系统开销。
【附图说明】
[0023] 图1为本发明的产品BOM数据差异分析与同步更新方法流程图;
[0024] 图2为源BOM数据对应的哈希值树示意图;
[0025] 图3为目标BOM数据对应的哈希值树示意图;
[0026] 图4为产品BOM数据XML文件生成哈希值树方法流程图;
[0027] 图5为产品BOM数据哈希值树差异比较方法流程图。
【具体实施方式】
[0028] 下面结合实施例对本发明做进一步的详细说明。
[0029] -种产品BOM数据差异分析与同步更新方法,包括以下步骤:
[0030] 首先在应用计算机上读取存储在源数据服务器和目标数据服务器中的BOM数据 并按照数据结构及层次关系生成相应的XML格式的BOM数据文件。
[0031] 根据生成的BOM数据XML格式文件,从数据文件中最底层开始,对各个子结点内容 进行哈希计算,得出各个子结点的哈希值,再根据各个子结点哈希值和所属父结点的内容 得到上一层各个父结点的哈希值,以此类推,生成XML格式文件各个结点的哈希值。将各个 结点的哈希值按层次关系组成一个哈希值树。
[0032] 从哈希值树的顶端开始进行对应结点的差异比较,找出存在差异的结点,并根据 对应关系得出不同数据源BOM数据的差异点,供用户使用。
[0033] 根据BOM数据差异点的类型及内容,生成BOM数据的同步脚本,在需进行同步的数 据源中通过执行同步脚本实现BOM数据的同步。
[0034] 所述的XML格式的BOM数据文件是根据BOM数据按照数据结构和层次关系生成。 各结点可以包含各类需要进行比较的数据,如物料号、物料名称、需要数量,物料工艺特征 等信息。
[0035] 所述的XML格式文件各个结点的哈希值是根据其下层各个子结点的哈希值和该 结点内容计算得出的,在差异比较时可以通过上层结点哈希值的比较,判定其下层信息是 否存在差异,可以大幅提高比较效率。
[0036] 根据BOM数据的差异点生成BOM数据的同步脚本是按照比较得出BOM数据的差异 点类型(新增结点、修改结点和删除结点)与结点内容(包含属性和数据,即BOM数据的信 息),可以生成同步脚本;其中差异类型决定脚本格式,结点内容决定脚本更新的内容,通 过这两项,生成的同步脚本分为新增,修改、删除3类,用于进行BOM数据的同步。
[0037] 本发明提供了一种产品BOM差异分析与同步更新方法,如图1所示包括如下步 骤:
[0038] A :首先将不同数据源的BOM数据根据数据结构和层次关系生成相应的XML格式的 BOM数据文件。
[0039] 现以一个企业信息系统中的BOM数据表为例进行说明(为了说明的简洁,这里的 BOM数据结构只设置父物料号、子物料号、物料名称、数量四个字段),源BOM数据信息存储 了最新的BOM信息,目标BOM数据信息是需要进行同步的BOM信息。
[0040] 表1源BOM数据信息
[0042] 根据源BOM数据信息所生成数据文件的XML格式如下:
[0043] <?xml version=〃l. 0〃 encoding=〃utf_8〃. ?> 〈TREENODES text=〃产品 A-BOM 树"> <t:reenode id=〃Pr-A〃 toxt=〃产iV丨 A"> <tre.en:o.d:e, i.d=〃AQ0.i〃 .tex.t.=〃子部件 1〃 n:um=:〃l〃 > 〈treenode id="L001〃 text=〃零件 1〃 num=〃2" > </treenode) 〈treenode id=〃L002〃 text=〃零件 2" nimi="!/' > </treenode) <t:reem.)d。id=〃U)0:r" text= 〃零件 3〃 num="4〃 > </treenode) </treenocie> 〈treenode id=〃A002〃 text=〃子部件 2〃 nunff >. 〈treenode id=〃L001〃 text="零件 1〃 num="2." > </treenode) 〈treenode ki'LOCM" ?οχ?="零件 4〃 num=。" > </treenode) </treenode> </treenode) </TREEN()DES>
[0044] 表2目标BOM数据信息
[0047] 根据目标BOM数据信息所生成数据文件的XML格式如下:
[0048] <?xml version二〃L 0〃 encoding=〃utf-8.〃 ?:> 〈TREENODES toxt=〃产品 A-BOM 树〃〉 〈treenode M=〃Pr-A〃 text=〃产.品 A〃> 〈tree.n.ode id=〃A001〃 text=〃子部件 1〃 nuirF〃.l々 > 〈troonodo 丨(1=,'丨.,001〃 text=〃零件 Γ mjm=〃2" > </treenode> 〈treenode id=〃L002〃 text="零件 2" rm:nF"l〃 > </treenode> <tr.ee.nGde. jd="L003〃 te