低层码更新装置和低层码更新方法.pdf

上传人:62****3 文档编号:1037512 上传时间:2018-03-27 格式:PDF 页数:19 大小:590.12KB
返回 下载 相关 举报
摘要
申请专利号:

CN201110283991.5

申请日:

2011.09.22

公开号:

CN102354314A

公开日:

2012.02.15

当前法律状态:

驳回

有效性:

无权

法律详情:

发明专利申请公布后的驳回IPC(主分类):G06F 17/30申请公布日:20120215|||实质审查的生效IPC(主分类):G06F 17/30申请日:20110922|||公开

IPC分类号:

G06F17/30; G06Q10/00(2012.01)I

主分类号:

G06F17/30

申请人:

用友软件股份有限公司

发明人:

纪录

地址:

100094 北京市海淀区北清路68号用友软件园

优先权:

专利代理机构:

北京友联知识产权代理事务所(普通合伙) 11343

代理人:

尚志峰;汪海屏

PDF下载: PDF下载
内容摘要

本发明提供一种低层码更新装置和一种低层码更新方法。其中,低层码更新装置包括:数据项记录单元,记录所有发生变化的数据项;层次码计算单元,在记录完成后,根据与所述数据项相关的层次关系数据,取得所述数据项的层次码,并从所述数据项的层次码中取得出所述数据项的最大层次码,以及根据与所述数据项相关的层次关系数据以及所述数据项的最大层次码,取得所述数据项的子项数据项的最大层次码;低层码更新单元,使用所述数据项和所述子项数据项的最大层次码,对所述数据项和所述子项数据项的低层码进行更新。通过本发明,一次性记录发生变化的数据,并进行低层码的更新,快速有效,减少了资源的消耗。

权利要求书

1: 一种低层码更新装置, 其特征在于, 包括 : 数据项记录单元, 记录所有发生变化的数据项 ; 层次码计算单元, 在记录完成后, 根据与所述数据项相关的层次关系数据, 取得所述数 据项的层次码, 并从所述数据项的层次码中取得出所述数据项的最大层次码, 以及根据与 所述数据项相关的层次关系数据以及所述数据项的最大层次码, 取得所述数据项的子项数 据项的最大层次码 ; 低层码更新单元, 使用所述数据项和所述子项数据项的最大层次码, 对所述数据项和 所述子项数据项的低层码进行更新。
2: 根据权利要求 1 所述的低层码更新装置, 其特征在于, 还包括 : 过滤单元, 将所述数据项和所述子项数据项的最大层次码与原低层码进行对比, 从所 述数据项和所述子项数据中过滤掉最大层次码与原低层码相同的数据项 ; 所述低层码更新单元使用过滤后的剩余数据项的最大层次码, 对所述剩余数据项的低 层码进行更新。
3: 根据权利要求 1 所述的低层码更新装置, 其特征在于, 所述数据项记录单元在所述 层次关系数据发生结构变化时, 记录所述层次关系数据中发生变化的所述数据项。
4: 根据权利要求 1 所述的低层码更新装置, 其特征在于, 所述层次码计算单元在所述 层次关系数据中, 逐层遍历所述数据项的父项数据项, 根据遍历结果来取得所述数据项的 层次码。
5: 根据权利要求 1 至 4 中任一项所述的低层码更新装置, 其特征在于, 所述层次关系数 据的数量为一个或多个, 所述数据项的层次码为一个或多个。
6: 一种低层码更新方法, 其特征在于, 包括 : 步骤 202, 记录所有发生变化的数据项 ; 步骤 204, 在记录完成后, 根据与所述数据项相关的层次关系数据, 取得所述数据项的 层次码, 并从所述数据项的层次码中取得出所述数据项的最大层次码 ; 步骤 206, 根据与所述数据项相关的层次关系数据以及所述数据项的最大层次码, 取得 所述数据项的子项数据项的最大层次码 ; 步骤 208, 使用所述数据项和所述子项数据项的最大层次码, 对所述数据项和所述子项 数据项的低层码进行更新。
7: 根据权利要求 6 所述的低层码更新方法, 其特征在于, 在所述步骤 208 之前, 还包 括: 将所述数据项和所述子项数据项的最大层次码与原低层码进行对比, 从所述数据项和 所述子项数据中过滤掉最大层次码与原低层码相同的数据项 ; 所述步骤 208 具体包括 : 使用过滤后的剩余数据项的最大层次码, 对所述剩余数据项 的低层码进行更新。
8: 根据权利要求 6 所述的低层码更新方法, 其特征在于, 所述步骤 202 具体包括 : 在所述层次关系数据发生结构变化时, 从所述层次关系数据中查询出所述数据项。
9: 根据权利要求 6 所述的低层码更新方法, 其特征在于, 所述步骤 204, 根据所述层次 关系数据, 取得所述数据项的层次码, 具体包括 : 在所述层次关系数据中, 逐层遍历所述数据项的父项数据项, 根据遍历结果来取得所 2 述数据项的层次码。
10: 根据权利要求 6 至 9 中任一项所述的低层码更新方法, 其特征在于, 所述层次关系 数据的数量为一个或多个, 所述数据项的层次码为一个或多个。

说明书


低层码更新装置和低层码更新方法

    技术领域 本发明涉及计算机技术领域, 具体而言, 涉及一种低层码更新装置和一种低层码 更新方法。
     背景技术 在数据处理的过程中, 往往会需要数据的低层码进行更新操作, 低层码表示数据 处理系统的每个数据项一个从 0 至 N 的数字码。一个数据项只能有一个低层码, 当一个数 据项所处的结构层次不同, 则取处在最低层的层次码作为该数据项的低层码, 也即取数字 最大的层次码。
     以企业资源规划 (Enterprise Resource Planning, ERP) 系统为例, 在 ERP 系统 中, 进行物料需求计划 (Material Requirement Planning, MRP) 运算时, 需要使用到物料 的低层码作为计算依据。传统低层码的计算采用全部物料计算、 全部物料清单 (Bill Of Material, BOM) 遍历的方式。而如果物料数量较多, BOM 结构比较复杂, 这时采用传统低层
     码计算方法就需要花费较长时间, 这直接影响接下来 MRP 运算的总体效率, 需要研究如何 对其效率进行提高。
     目前, 解决该效率问题主要有以下方案 :
     1、 优化低层码计算算法, 提高计算效率。 该方法是比较主流的解决策略, 通过算法 优化, 确实可以大幅度提高传统低层码计算效率。
     缺陷 : 算法优化效果是有限的, 计算低层码所耗用的时间不可能减少为 0, 当物料 数量较大时, 被物料基数放大后的计算时间依然是用户所无法接受的。
     2、 在非工作时间执行计算。 该方案采用变相手段规避低层码运算耗时较长带来的 问题, 在非工作时间进行低层码计算, 在工作时间对其进行使用。
     缺陷 : 并未真正解决其效率问题。在非工作时间执行时, 如果出现异常情况, 无法 处理, 同样会造成企业损失。
     3、 采用多线程技术, 令低层码计算任务在后台运行。该方案较之方案 2 更为优化, 可以随时进行低层码计算。
     缺陷 : 也并没有从根本上解决效率问题。而且, 多线程技术比较复杂, 容易受到环 境影响, 出现错误。
     4、 在 BOM 维护时, 计算并更新物料低层码。该方案在维护 BOM 时, 对进行了结构修 改的物料进行其层次运算, 并计算及更新该物料和其全部子项物料的低层码, 该方案与本 发明中采用的轻量型低层码计算方法类似, 可以缩小计算物料范围, 减轻计算负担。
     缺陷 : 将低层码计算的负担转嫁给 BOM 维护操作, 使得 BOM 维护时效率降低。
     5、 在 BOM 维护时, 后台计算并更新物料低层码。这是方案 4 的优化, 采用多线程技 术, 在 BOM 维护时, 在后台进行方案 4 中进行的计算过程, 用户不会感觉到 BOM 维护效率的 降低。
     缺陷 : 技术复杂, 实现难度高, 并且容易出现并发问题。以上方案有的是从算法角度提高低层码计算效率, 有的是从计算物料范围角度提 高效率, 但是都有各自的明显缺陷, 如效率提高有限, 技术实现难度高, 易受环境影响, 容易 出错, 用户体验较差等等。
     因此, 需求一种高效率、 易实现的低层码更新方案, 能够保证在数据之间的结构关 系比较复杂情况下, 也能顺利完成低层码的更新, 且不受系统环境影响, 不易出错。 发明内容
     本发明所要解决的技术问题在于, 提供一种高效率、 易实现的低层码更新方案, 能 够保证在数据之间的结构关系比较复杂情况下, 也能顺利完成低层码的更新, 且不受系统 环境影响, 不易出错。
     有鉴于此, 本发明提供一种低层码更新装置, 包括 : 数据项记录单元, 记录所有发 生变化的数据项 ; 层次码计算单元, 在记录完成后, 根据与所述数据项相关的层次关系数 据, 取得所述数据项的层次码, 并从所述数据项的层次码中取得出所述数据项的最大层次 码, 以及根据与所述数据项相关的层次关系数据以及所述数据项的最大层次码, 取得所述 数据项的子项数据项的最大层次码 ; 低层码更新单元, 使用所述数据项和所述子项数据项 的最大层次码, 对所述数据项和所述子项数据项的低层码进行更新。 通过该技术方案, 一次 性记录发生变化的数据, 并进行低层码的更新, 快速有效, 减少了资源的消耗。本技术方案 尤其适用于 ERP 系统中的物料管理, 所述层次关系数据可以是物料清单。
     在上述技术方案中, 优选地, 还包括 : 过滤单元, 将所述数据项和所述子项数据项 的最大层次码与原低层码进行对比, 从所述数据项和所述子项数据中过滤掉最大层次码与 原低层码相同的数据项 ; 所述低层码更新单元使用过滤后的剩余数据项的最大层次码, 对 所述剩余数据项的低层码进行更新。 通过该技术方案, 通过过滤操作后, 减少了需更新的数 据项, 也就减少了更新操作所需占用的资源。
     在上述技术方案中, 优选地, 所述数据项记录单元在所述层次关系数据发生结构 变化时, 记录所述层次关系数据中发生变化的所述数据项。 通过该技术方案, 对于不影响层 次关系结构变化的数据变更, 则不记录, 进一步减少资源消耗。
     在上述技术方案中, 优选地, 所述层次码计算单元在所述层次关系数据中, 逐层遍 历所述数据项的父项数据项, 根据遍历结果来取得所述数据项的层次码。 通过该技术方案, 可以准确有效地取得多个数据项的层次码。
     在上述技术方案中, 优选地, 所述层次关系数据的数量为一个或多个, 所述数据项 的层次码为一个或多个。 通过该技术方案, 可以对多个层次关系进行管理, 能够保证变化数 据记录不会疏漏。
     本发明还提供一种低层码更新方法, 包括 : 步骤 202, 记录所有发生变化的数据 项; 步骤 204, 在记录完成后, 根据与所述数据项相关的层次关系数据, 取得所述数据项的 层次码, 并从所述数据项的层次码中取得出所述数据项的最大层次码 ; 步骤 206, 根据与所 述数据项相关的层次关系数据以及所述数据项的最大层次码, 取得所述数据项的子项数据 项的最大层次码 ; 步骤 208, 使用所述数据项和所述子项数据项的最大层次码, 对所述数据 项和所述子项数据项的低层码进行更新。 通过该技术方案, 一次性记录发生变化的数据, 并 进行低层码的更新, 快速有效, 减少了资源的消耗。本技术方案尤其适用于 ERP 系统中的物料管理, 所述层次关系数据可以是物料清单。
     在上述技术方案中, 优选地, 在所述步骤 208 之前, 还包括 : 将所述数据项和所述 子项数据项的最大层次码与原低层码进行对比, 从所述数据项和所述子项数据中过滤掉最 大层次码与原低层码相同的数据项 ; 所述步骤 208 具体包括 : 使用过滤后的剩余数据项的 最大层次码, 对所述剩余数据项的低层码进行更新。通过该技术方案, 通过过滤操作后, 减 少了需更新的数据项, 也就减少了更新操作所需占用的资源。
     在上述技术方案中, 优选地, 所述步骤 202 具体包括 : 在所述层次关系数据发生结 构变化时, 从所述层次关系数据中查询出所述数据项。 通过该技术方案, 对于不影响层次关 系结构变化的数据变更, 则不记录, 进一步减少资源消耗。
     在上述技术方案中, 优选地, 所述步骤 204, 根据所述层次关系数据, 取得所述数据 项的层次码, 具体包括 : 在所述层次关系数据中, 逐层遍历所述数据项的父项数据项, 根据 遍历结果来取得所述数据项的层次码。通过该技术方案, 可以准确有效地取得多个数据项 的层次码。
     在上述技术方案中, 优选地, 所述层次关系数据的数量为一个或多个, 所述数据项 的层次码为一个或多个。 通过该技术方案, 可以对多个层次关系进行管理, 能够保证变化数 据记录不会疏漏。
     通过以上技术方案, 可以实现提供一种高效率、 易实现的低层码更新方案, 能够保 证在数据之间的结构关系比较复杂情况下, 也能顺利完成低层码的更新, 且不受系统环境 影响, 不易出错。附图说明
     图 1 是根据本发明的一个实施例的低层码更新装置的框图 ;
     图 2 是根据本发明的一个实施例的低层码更新方法的流程图 ;
     图 3 是根据本发明的一个实施例的低层码更新方法中使用的物料清单的结构示 意图 ;
     图 4 是根据本发明的一个实施例的低层码更新方法中使用的物料清单的结构示 意图 ;
     图 5 是根据本发明的一个实施例的低层码更新方法的工作流程图 ;
     图 6 是物料清单的结构示意图 ;
     图 7 是物料清单的结构示意图。 具体实施方式
     为了能够更清楚地理解本发明的上述目的、 特征和优点, 下面结合附图和具体实 施方式对本发明进行进一步的详细描述。
     在下面的描述中阐述了很多具体细节以便于充分理解本发明, 但是, 本发明还可 以采用其他不同于在此描述的其他方式来实施, 因此, 本发明并不限于下面公开的具体实 施例的限制。
     图 1 是根据本发明的一个实施例的低层码更新装置的框图。
     如图 1 所示, 本发明提供一种低层码更新装置 100, 包括 : 数据项记录单元 102,记录所有发生变化的数据项 ; 层次码计算单元 104, 在记录完成后, 根据与所述数据项相关 的层次关系数据, 取得所述数据项的层次码, 并从所述数据项的层次码中取得出所述数据 项的最大层次码, 以及根据与所述数据项相关的层次关系数据以及所述数据项的最大层次 码, 取得所述数据项的子项数据项的最大层次码 ; 低层码更新单元 106, 使用所述数据项和 所述子项数据项的最大层次码, 对所述数据项和所述子项数据项的低层码进行更新。通过 该技术方案, 一次性记录发生变化的数据, 并进行低层码的更新, 快速有效, 减少了资源的 消耗。本技术方案尤其适用于 ERP 系统中的物料管理, 所述层次关系数据可以是物料清单。
     在上述技术方案中, 还包括 : 过滤单元 108, 将所述数据项和所述子项数据项的最 大层次码与原低层码进行对比, 从所述数据项和所述子项数据中过滤掉最大层次码与原低 层码相同的数据项 ; 所述低层码更新单元 106 使用过滤后的剩余数据项的最大层次码, 对 所述剩余数据项的低层码进行更新。 通过该技术方案, 通过过滤操作后, 减少了需更新的数 据项, 也就减少了更新操作所需占用的资源。
     在上述技术方案中, 优选地, 所述数据项记录单元 102 在所述层次关系数据发生 结构变化时, 记录所述层次关系数据中发生变化的所述数据项。 通过该技术方案, 对于不影 响层次关系结构变化的数据变更, 则不记录, 进一步减少资源消耗。 在上述技术方案中, 所述层次码计算单元 104 在所述层次关系数据中, 逐层遍历 所述数据项的父项数据项, 根据遍历结果来取得所述数据项的层次码。 通过该技术方案, 可 以准确有效地取得多个数据项的层次码。
     在上述技术方案中, 所述层次关系数据的数量为一个或多个, 所述数据项的层次 码为一个或多个。 通过该技术方案, 可以对多个层次关系进行管理, 能够保证变化数据记录 不会疏漏。
     图 2 是根据本发明的一个实施例的低层码更新方法的流程图。
     如图 2 所示, 本发明还提供一种低层码更新方法, 包括 : 步骤 202, 记录所有发生变 化的数据项 ; 步骤 204, 在记录完成后, 根据与所述数据项相关的层次关系数据, 取得所述 数据项的层次码, 并从所述数据项的层次码中取得出所述数据项的最大层次码 ; 步骤 206, 根据与所述数据项相关的层次关系数据以及所述数据项的最大层次码, 取得所述数据项的 子项数据项的最大层次码 ; 步骤 208, 使用所述数据项和所述子项数据项的最大层次码, 对 所述数据项和所述子项数据项的低层码进行更新。通过该技术方案, 一次性记录发生变化 的数据, 并进行低层码的更新, 快速有效, 减少了资源的消耗。本技术方案尤其适用于 ERP 系统中的物料管理, 所述层次关系数据可以是物料清单。
     在上述技术方案中, 在所述步骤 208 之前, 还包括 : 将所述数据项和所述子项数据 项的最大层次码与原低层码进行对比, 从所述数据项和所述子项数据中过滤掉最大层次码 与原低层码相同的数据项 ; 所述步骤 208 具体包括 : 使用过滤后的剩余数据项的最大层次 码, 对所述剩余数据项的低层码进行更新。通过该技术方案, 通过过滤操作后, 减少了需更 新的数据项, 也就减少了更新操作所需占用的资源。
     在上述技术方案中, 所述步骤 202 具体包括 : 在所述层次关系数据发生结构变化 时, 从所述层次关系数据中查询出所述数据项。 通过该技术方案, 对于不影响层次关系结构 变化的数据变更, 则不记录, 进一步减少资源消耗。
     在上述技术方案中, 所述步骤 204, 根据所述层次关系数据, 取得所述数据项的层
     次码, 具体包括 : 在所述层次关系数据中, 逐层遍历所述数据项的父项数据项, 根据遍历结 果来取得所述数据项的层次码。通过该技术方案, 可以准确有效地取得多个数据项的层次 码。
     在上述技术方案中, 所述层次关系数据的数量为一个或多个, 所述数据项的层次 码为一个或多个。 通过该技术方案, 可以对多个层次关系进行管理, 能够保证变化数据记录 不会疏漏。
     以下详细说明本发明的技术方案的低层码更新装置, 在 ERP 系统中物料管理上的 应用。
     在物料数量较大, BOM 结构比较复杂的情况下, 单纯的低层码计算算法优化对效率 提高所起到的作用是有限的。而对企业应用场景分析中发现, BOM 的结构修改范围有限, 因 此对全部物料进行低层码运算是效率低下的, 这种计算方式对很多结构没有变化的物料进 行了无用的计算。本发明的技术方案就是解决如何确定结构变更的物料, 并对其以及由其 引起的层次结构变化的物料进行低层码计算。 本发明提供的轻量型的低层码更新方法最大 限度的缩小了低层码运算的物料范围, 减少了低层码计算基数, 从而提高低层码计算效率。
     相比于全部物料计算的 “重型” 计算方案, 该轻量型的更新方法, 可有效减轻低层 码计算负担, 减少总体计算时间, 切实符合企业实际应用场景并满足其效率要求。 根据本发明的低层码更新方法, 工作时需要遵守以下模型 :
     BOM 的维护采用主子表模型, 即主表存储的是父项物料信息, 结构如图 3 所示, 子 表存储的是该 BOM 的子项物料信息, 结构如图 4 所示。这是一种仅有 2 层的树形结构, 有且 只有一个父节点, 可以有多个子节点。采用该种模型的特点是 BOM 之间的维护是相互独立 的, 对物料 B1 的维护, 仅仅会影响物料 B1 的下一层子项结构, 并不会影响物料 C1 的下一层 子项 D1 和 D2 的结构, 也不会影响 B1 的父项 A 的结构。
     因此, 低层码更新方法的实现需要以下前提条件 :
     1、 BOM 维护采用父项、 子项形式, 例如采用 2 张数据库表 ( 主子表形式 ) 进行维护。
     2、 已知物料信息数据, 并可以正常获取。如将物料信息存储在数据库中。本文中 用 mt 表示物料的信息数据集合。
     3、 已经计算过 mt 中物料的低层码, 存放至 mt 集合中。
     如图 5 所示, 低层码更新方法的具体步骤包括 :
     步骤 502, 变更物料表记录。存储 BOM 维护中更改的物料信息。存储更改物料信息 的表记为 m_mt。
     在进行 BOM 维护时, 如果对 BOM 进行了增加节点、 删除节点及修改节点 ( 是指替换 原有节点物料 )3 种操作, 就会对 BOM 的结构进行改动, 从而可能会影响该物料及其全部子 项物料的低层码, 需要将该物料记入变更物料表, 用于后面的计算。
     如果采用该文中的 BOM 数据结构模型, 会出现以下几种情况 :
     1) 增加 BOM。在增加一个新的 BOM 时, 由于只能增加该 BOM 的下一层子项物料, 与 其他的 BOM 数据是互相独立的, 这并不会影响该物料在其他 BOM 中的层次结构, 只会影响该 物料全部 ( 层级 ) 子项物料的低层码, 而在步骤 508 中对此进行了处理, 因此, 只需要将当 前增加的 BOM 的全部子项物料记入变更物料表即可。
     2) 删除 BOM。与增加 BOM 时类似, 删除 BOM 时也不会影响该物料在其他 BOM 中的
     层次结构, 同样只需要将当前删除的 BOM 的全部子项物料记入变更物料表即可。
     3) 修改 BOM。对 BOM 进行修改, 同样会有 3 种情况 :
     a) 增加 BOM 子项, 将增加的子项物料记入变更物料表。
     b) 删除 BOM 子项, 将删除的子项物料记入变更物料表。
     c) 替换 BOM 子项, 此情况等同于先删除再增加子项, 因此需要将被替换子项物料 及替换子项物料都记入变更物料表。
     需要说明的是, 只有在 BOM 维护时对 BOM 的树状结构进行了更改的, 才要按照如上 3 种情况进行处理, 如果只是修改了 BOM 的属性信息, 或者只修改了 BOM 中物料的属性信息, 并未对结构产生影响, 则不要将其记入变更物料表中。
     从本质上来讲, 表更物料表中记录的是在 BOM 树结构中发生变化的物料, 因为这 种变化, 可能会使得该物料及其全部子项物料的层次码产生变化, 从而影响其低层码。
     步骤 504, 变更物料层次码计算。 计算 m_mt 中物料在 BOM 树中的最大层次码, 该集 合记为 Map。
     在步骤 502 中, 已经将低层码可能发生改变, 或者可能会影响其子项物料低层码 的那些物料记录在变更物料表中, 本步骤中要计算这些物料的最大层次码。
     根据物料检索 BOM, 计算出 m_mt 中各物料的层次码, 即查找出该物料在 BOM 树中的 层次号 ( 一般将 BOM 树根节点记为 0 层, 下层子项层次号加 1, 依次类推 )。由于同一物料 可能在不同的 BOM 中出现, 因此 m_mt 中物料在不同 BOM 中的层次码可能是不同的, 这时只 需要获取其层次码最大值即可。
     BOM 树的遍历及 m_mt 中各物料层次码的计算可以运用临时表, 并采用以下方案进 行:
     1) 构建缓存 Map, 用来存储物料及层次码的键值对, 将 m_mt 中的物料放入 Map 中, 并将其所有物料的层次码初始化置为 0 ;
     2) 构建临时表 temp, 分别存储 : 子项物料、 变更物料和层次码 ;
     3) 初始化 temp, 将 m_mt 中的物料放入 temp 的变更物料列和子项物料列 ( 即该两 列每一行的数据均相同 ), 层次码列全部置为 0 ;
     4) 设 i 为正整数, 初始化 i = 1 ;
     5) 根据物料在 BOM 中检索, 查找出子项物料列的各个物料在 BOM 中的父项物料, 即 相应变更物料列中物料的向上第 i 层物料 ;
     6) 查找出的集合记为 S1, 如果 S1 为空, 则说明当前子项物料列的物料已经没有任 何父项节点了, 即已经遍历出了 m_mt 中物料的全部父项节点 ( 全部级别 ), 转入步骤 11 ;
     7) 将 S1 中物料的层次码加 1( 在其父项物料层次码基础上加 1), 需要注意的是, 由于物料可能出现在多个 BOM 中, 因此一次查询时可能找出同一物料的多个父项 ;
     8) 将 S1 中物料的层次码与 Map 中相应物料的层次码进行比较, 如果前者数值大于 后者, 则更新 Map 中物料的层次码 ;
     9) 清空临时表 temp, 并将 S1 中物料放入 temp 的子项物料列中, 作为下次查询父 项的子项物料数据 ;
     10) 令 i = i+1, 并返回步骤 5 ;
     11) 此时 temp 中的数据已经为空, Map 中存储的更新物料的层次码为其在全部 BOM中的最大层次码, 即其最大深度 ( 根结点记为 0 层 )。Map 中数据在步骤 506 中作为输入数 据使用。
     步骤 506, 变更物料过滤。将 Map 中物料的层次码与 mt 中相应物料的低层码进行 比较, 过滤掉数值相同的那些物料。
     由于当前 Map 中的更新物料中可能存在着某些物料的低层码没有发生变化, 即 Map 中物料的层次码与 mt 中相应物料的低层码相同, 这些物料对低层码没有产生影响, 可 以过滤掉。可以采用如下方案进行过滤 :
     1) 令 i 为正整数, 初始化 i = 1 ;
     2) 取出 Map 中第 i 个物料及其层次码, 与 mt 中相应物料的低层码进行比较, 如果 前者等于后者, 则将其从 Map 中去除 ;
     3) 令 i = i+1, 判断 i 是否等于 Map 中物料的个数, 如果相等, 则转入步骤 4, 否则 转入步骤 2 ;
     4) 当前 Map 就是经过过滤的结果集, 将作为步骤 508 的输入参数参与后面的计算。
     步骤 508, 子项物料层次码计算。 计算 Map 中物料在 BOM 树中全部子项物料的层次 码, 同样只保留物料的最大层次码, 所得集合记为 S_Map。 根据物料检索 BOM, 并向下展开计算 Map 中物料的各级子项的层次码, 直至遍历至 所有叶子节点。可以将这一过程看成是以 Map 中物料为根节点, 根据 BOM 向下遍历并计算 层次码, 只不过 Map 中被作为根节点的物料的层次码不是 0, 而是保存在 Map 中的物料相应 的层次码 ( 由步骤 504 中计算得出的 )。由于同一物料可能在不同的 BOM 中出现, 因此 Map 中物料在不同 BOM 中查找出的子项物料可能是相同的, 但由于 Map 中两个物料的层次码可 能不同, 因此查找出来的相同子项物料的层次码也可能不同, 这时只需要获取其层次码最 大值即可。
     该步骤的计算也可以运用临时表, 并采用以下方案进行 :
     1) 构建缓存 S_Map, 将 Map 中的数据拷贝至 S_Map 中。S_Map 用来存储物料及层次 码的键值对, 本步骤中可能会产生遍历出新的子项物料及其层次码, 同样要放入 Map 集合 中;
     2) 构建临时表 temp2, 分别存储 : 父项物料和层次码 ;
     3) 初始化 temp2, 将 S_Map 中的物料和层次码分别放 temp2 的入父项物料列和层 次码列 ;
     4) 查找出父项物料列的各个物料在 BOM 中的向下一层子项物料 ;
     5) 查找出的集合记为 S2, 如果 S2 为空, 则说明当前父项物料列的物料已经没有任 何子项节点了, 即已经遍历出了原 Map 中物料 ( 即过滤后的变更物料 ) 的全部子项节点 ( 全 部级别 ), 转入步骤 9 ;
     6) 将 S2 中物料的相应的层次码加 1( 在其父项物料层次码基础上加 1), 需要注意 的是, 由于物料可能出现在多个 BOM 中, 因此一次查询时可能找出同一物料的多个子项 ;
     7) 将 S2 中物料的层次码与 S_Map 中相应物料的层次码进行比较, 如果前者数值大 于后者, 则更新 S_Map 中物料的层次码 ; 如果 S2 的某物料是中不存在的, 则将该物料添加到 S_Map 中 ;
     8) 清空临时表 temp2, 并将 S2 中物料及其层次码分别放入 temp2 的子项物料列和
     层次码列中 ; 返回步骤 4 ;
     9) 此时 temp2 中的数据已经为空, S_Map 中存储的物料及其层次码为原有的过滤 后的变更物料, 以及其在全部 BOM 中的所有子项物料及其次码, 注意这里只需要保存物料 的最大层次码。S_Map 中数据在步骤 510 中作为输入数据使用。
     步骤 510, 变更物料低层码更新。将 S_Map 中物料的层次码与 mt 中相应物料的低 层码进行比较, 如果前者与后者不相同, 则将 S_Map 中物料的层次码更新至该物料在 mt 中 的低层码
     由于低层码是记录层次码的最大值, 因此在对 S_Map 中物料进行低层码更新时, 需要注意, 只有在 S_Map 中物料的层次码比 mt 中相应物料的低层码数值大的情况下, 才去 更新该物料的低层码。
     可以采用如下方案进行过滤 :
     1) 令 i 为正整数, 初始化 i = 1 ;
     2) 取出 S_Map 中第 i 个物料及其层次码, 与 mt 中相应物料的低层码进行比较, 如 果前者与后者不相同, 则将其在 mt 中的低层码更新 ;
     3) 令 i = i+1, 判断 i 是否等于 S_Map 中物料的个数, 如果相等, 则结束 ; 否则转入 步骤 2。 根据以上技术方案的低层码更新方法的一个实例如下。
     下面以图 6 及图 7 中的三个 BOM 为例进行案例说明, 原有 BOM 为 A1、 A2 和 A3, 结 构如图 6 所示, 通过传统低层码计算方法可以计算出各个物料的低层码。现对其中的 B1 结 构进行修改, 将其下属子项 C1 和 C2 删除, 以此来模拟 BOM 维护操作。此时根据本发明技术 方案的轻量型的低层码更新方法进行低层码计算, 为清晰展示整个过程, 特采用数据库表 中的临时表为计算工具进行说明, 数据推演过程如下 :
     1) 数据准备 : BOM 在修改前进行低层码计算, 得出 C1 的低层码为 2, D1 及 D2 的低 层码均为 3, C2 的低层码为 2, 将这些值存入数据库表 mt 中, 如表 1 所示。
     表1: 原低层码记录表 :
     2) 变更物料记录 : 在 BOM 维护时, 对将 B1 下属子项 C1 及 C2 删除。这时, 将更改 的物料 C1 和 C2 计入变更物料表中, 如表 2 所示。
     表2: 变更物料表 :
     3) 变更物料层次码计算 : 遍历 BOM, 查找出 C1 和 C2 的父项节点。首先建立临时 表, 并设置初始数据, 如表 3 所示。
     表3: 临时表初始数据 :
     表4: 缓存 Map :
     表 5 中的 “子项物料” 列展示了一次父项检索后的结果。注意, 由于修改后 BOM 中 C1 存在两个父项节点, 因此检索出来两条数据, 分别为 A2 和 A3, 而 C1 的层次码要加 1。
     表5: 第一次父项检索后结果 :
     表6: 缓存 Map :
     以表 5 中子项物料列的物料为子节点, 在 BOM 树中查找其父节点, 如果查找到父节 点, 则并将其层次码加 1, 否则层次码不变, 结果如表 7 所示。
     表7: 第二次父项检索后结果 :
     表8: 缓存 Map :
     继续遍历父项节点, 会发现此时已经遍历到了所有根节点, 则缓存 Map 中存储的 C1 及 C2 的层次码是其在所有 BOM 中的最大层次数值, 如表 9 所示。
     表9: 第三次父项检索后结果 :
     表 10 : 最终缓存 Map :
     4) 变更物料过滤 : 将 Map 中 C1 的层次码 (1) 与 mt 中 C1 的低层码 (2) 相比较, 发 现两者值不相同, 则不可以过滤掉该物料 ; 同理, Map 中 C2 的层次码 (2) 与 mt 中 C2 的低层 码 (2) 相比较, 发现两者值相同, 则过滤掉 C2, 此时 Map 中仅剩下 C1 及其层次码 1。
     5) 子项物料层次码计算 : 遍历 BOM, 检索 Map 中 C1 的子节点, 并计算其层次码 :
     构建临时表 temp2, 将 Map 中物料 C1 及其层次码放入表中。构建缓存 S_Map, 同样 将 Map 中数据拷贝至 S_Map 中, 如表 11 和表 12 所示。
     表 11 : 初始化临时表 temp2 :
     表 12 : 缓存 S_Map :
     查找 C1 的子项节点, 有 D1 和 D2 两个节点, 其层次码为在 C1 的层次码基础上加 1。 并将这些数据添加或更新至 S_Map 中, 如表 13 和表 14 所示。
     表 13 : 第一次检索子项节点 :
     表 14 : 缓存 S_Map :
     遍历 D1 和 D2 的子项物料, 该例子中, D1 和 D2 已经是叶子节点, 因此遍历出的结 果为空, 此时可以结束遍历。
     6) 变更物料低层码更新 : 循环比较 S_Map 中物料层次码与 mt 表中相应物料的低 层码, 如果两者不相同, 则更新 mt 表中物料的低层码, 如表 15 所示。
     表 15 :
     通过上面的案例说明也可以看出, 在进行 BOM 更改后, 对新的 BOM 进行低层码计算 时, 并没有对 BOM 中所有的物料进行低层码运算, 只是有针对性的对部分物料进行运算, 缩 小了计算范围, 尤其是在 BOM 复杂, 物料较多, BOM 修改不大的情况下, 可显著提高低层码计 算效率。
     通过以上技术方案, 可以实现提供一种高效率、 易实现的低层码更新方案, 该轻量 型的低层码更新方案虽然也增加了 BOM 维护时的负担, 即将修改的物料进行保存, 但是仅
     有一次读取操作, 效率损失并不明显, 出错率较低。在低层码计算时, 再将这些修改过的物 料读取出来, 对其进行有限范围的遍历和计算。
     极端情况下, 企业在两次低层码计算之间没有对 BOM 结构进行任何修改, 如果采 用以往全部物料计算方案, 则依然要进行全部遍历和计算。但如果采用本发明的轻量型的 低层码更新方案, 待计算的物料为空, 即不必再进行低层码计算过程。 这与实际情况也是相 符的。
     另外一种极端情况, 即企业在两次低层码计算之间将 BOM 结构进行了较大改动, 使得全部物料的低层码都发生了变化, 这时采用轻量型低层码更新方案与采用以往计算方 法的效率是几乎相同的, 都进行了全部 BOM、 全部物料的遍历和计算。
     因此, 在 BOM 修改不频繁或者 BOM 修改范围不大的企业中, 采用本发明的轻量型的 低层码更新方案可以大幅度提高其低层码计算效率。
     以上所述仅为本发明的优选实施例而已, 并不用于限制本发明, 对于本领域的技 术人员来说, 本发明可以有各种更改和变化。 凡在本发明的精神和原则之内, 所作的任何修 改、 等同替换、 改进等, 均应包含在本发明的保护范围之内。

低层码更新装置和低层码更新方法.pdf_第1页
第1页 / 共19页
低层码更新装置和低层码更新方法.pdf_第2页
第2页 / 共19页
低层码更新装置和低层码更新方法.pdf_第3页
第3页 / 共19页
点击查看更多>>
资源描述

《低层码更新装置和低层码更新方法.pdf》由会员分享,可在线阅读,更多相关《低层码更新装置和低层码更新方法.pdf(19页珍藏版)》请在专利查询网上搜索。

1、10申请公布号CN102354314A43申请公布日20120215CN102354314ACN102354314A21申请号201110283991522申请日20110922G06F17/30200601G06Q10/0020120171申请人用友软件股份有限公司地址100094北京市海淀区北清路68号用友软件园72发明人纪录74专利代理机构北京友联知识产权代理事务所普通合伙11343代理人尚志峰汪海屏54发明名称低层码更新装置和低层码更新方法57摘要本发明提供一种低层码更新装置和一种低层码更新方法。其中,低层码更新装置包括数据项记录单元,记录所有发生变化的数据项;层次码计算单元,在记录完。

2、成后,根据与所述数据项相关的层次关系数据,取得所述数据项的层次码,并从所述数据项的层次码中取得出所述数据项的最大层次码,以及根据与所述数据项相关的层次关系数据以及所述数据项的最大层次码,取得所述数据项的子项数据项的最大层次码;低层码更新单元,使用所述数据项和所述子项数据项的最大层次码,对所述数据项和所述子项数据项的低层码进行更新。通过本发明,一次性记录发生变化的数据,并进行低层码的更新,快速有效,减少了资源的消耗。51INTCL19中华人民共和国国家知识产权局12发明专利申请权利要求书2页说明书13页附图3页CN102354323A1/2页21一种低层码更新装置,其特征在于,包括数据项记录单元。

3、,记录所有发生变化的数据项;层次码计算单元,在记录完成后,根据与所述数据项相关的层次关系数据,取得所述数据项的层次码,并从所述数据项的层次码中取得出所述数据项的最大层次码,以及根据与所述数据项相关的层次关系数据以及所述数据项的最大层次码,取得所述数据项的子项数据项的最大层次码;低层码更新单元,使用所述数据项和所述子项数据项的最大层次码,对所述数据项和所述子项数据项的低层码进行更新。2根据权利要求1所述的低层码更新装置,其特征在于,还包括过滤单元,将所述数据项和所述子项数据项的最大层次码与原低层码进行对比,从所述数据项和所述子项数据中过滤掉最大层次码与原低层码相同的数据项;所述低层码更新单元使用。

4、过滤后的剩余数据项的最大层次码,对所述剩余数据项的低层码进行更新。3根据权利要求1所述的低层码更新装置,其特征在于,所述数据项记录单元在所述层次关系数据发生结构变化时,记录所述层次关系数据中发生变化的所述数据项。4根据权利要求1所述的低层码更新装置,其特征在于,所述层次码计算单元在所述层次关系数据中,逐层遍历所述数据项的父项数据项,根据遍历结果来取得所述数据项的层次码。5根据权利要求1至4中任一项所述的低层码更新装置,其特征在于,所述层次关系数据的数量为一个或多个,所述数据项的层次码为一个或多个。6一种低层码更新方法,其特征在于,包括步骤202,记录所有发生变化的数据项;步骤204,在记录完成。

5、后,根据与所述数据项相关的层次关系数据,取得所述数据项的层次码,并从所述数据项的层次码中取得出所述数据项的最大层次码;步骤206,根据与所述数据项相关的层次关系数据以及所述数据项的最大层次码,取得所述数据项的子项数据项的最大层次码;步骤208,使用所述数据项和所述子项数据项的最大层次码,对所述数据项和所述子项数据项的低层码进行更新。7根据权利要求6所述的低层码更新方法,其特征在于,在所述步骤208之前,还包括将所述数据项和所述子项数据项的最大层次码与原低层码进行对比,从所述数据项和所述子项数据中过滤掉最大层次码与原低层码相同的数据项;所述步骤208具体包括使用过滤后的剩余数据项的最大层次码,对。

6、所述剩余数据项的低层码进行更新。8根据权利要求6所述的低层码更新方法,其特征在于,所述步骤202具体包括在所述层次关系数据发生结构变化时,从所述层次关系数据中查询出所述数据项。9根据权利要求6所述的低层码更新方法,其特征在于,所述步骤204,根据所述层次关系数据,取得所述数据项的层次码,具体包括在所述层次关系数据中,逐层遍历所述数据项的父项数据项,根据遍历结果来取得所权利要求书CN102354314ACN102354323A2/2页3述数据项的层次码。10根据权利要求6至9中任一项所述的低层码更新方法,其特征在于,所述层次关系数据的数量为一个或多个,所述数据项的层次码为一个或多个。权利要求书C。

7、N102354314ACN102354323A1/13页4低层码更新装置和低层码更新方法技术领域0001本发明涉及计算机技术领域,具体而言,涉及一种低层码更新装置和一种低层码更新方法。背景技术0002在数据处理的过程中,往往会需要数据的低层码进行更新操作,低层码表示数据处理系统的每个数据项一个从0至N的数字码。一个数据项只能有一个低层码,当一个数据项所处的结构层次不同,则取处在最低层的层次码作为该数据项的低层码,也即取数字最大的层次码。0003以企业资源规划ENTERPRISERESOURCEPLANNING,ERP系统为例,在ERP系统中,进行物料需求计划MATERIALREQUIREMEN。

8、TPLANNING,MRP运算时,需要使用到物料的低层码作为计算依据。传统低层码的计算采用全部物料计算、全部物料清单BILLOFMATERIAL,BOM遍历的方式。而如果物料数量较多,BOM结构比较复杂,这时采用传统低层码计算方法就需要花费较长时间,这直接影响接下来MRP运算的总体效率,需要研究如何对其效率进行提高。0004目前,解决该效率问题主要有以下方案00051、优化低层码计算算法,提高计算效率。该方法是比较主流的解决策略,通过算法优化,确实可以大幅度提高传统低层码计算效率。0006缺陷算法优化效果是有限的,计算低层码所耗用的时间不可能减少为0,当物料数量较大时,被物料基数放大后的计算时。

9、间依然是用户所无法接受的。00072、在非工作时间执行计算。该方案采用变相手段规避低层码运算耗时较长带来的问题,在非工作时间进行低层码计算,在工作时间对其进行使用。0008缺陷并未真正解决其效率问题。在非工作时间执行时,如果出现异常情况,无法处理,同样会造成企业损失。00093、采用多线程技术,令低层码计算任务在后台运行。该方案较之方案2更为优化,可以随时进行低层码计算。0010缺陷也并没有从根本上解决效率问题。而且,多线程技术比较复杂,容易受到环境影响,出现错误。00114、在BOM维护时,计算并更新物料低层码。该方案在维护BOM时,对进行了结构修改的物料进行其层次运算,并计算及更新该物料和。

10、其全部子项物料的低层码,该方案与本发明中采用的轻量型低层码计算方法类似,可以缩小计算物料范围,减轻计算负担。0012缺陷将低层码计算的负担转嫁给BOM维护操作,使得BOM维护时效率降低。00135、在BOM维护时,后台计算并更新物料低层码。这是方案4的优化,采用多线程技术,在BOM维护时,在后台进行方案4中进行的计算过程,用户不会感觉到BOM维护效率的降低。0014缺陷技术复杂,实现难度高,并且容易出现并发问题。说明书CN102354314ACN102354323A2/13页50015以上方案有的是从算法角度提高低层码计算效率,有的是从计算物料范围角度提高效率,但是都有各自的明显缺陷,如效率提。

11、高有限,技术实现难度高,易受环境影响,容易出错,用户体验较差等等。0016因此,需求一种高效率、易实现的低层码更新方案,能够保证在数据之间的结构关系比较复杂情况下,也能顺利完成低层码的更新,且不受系统环境影响,不易出错。发明内容0017本发明所要解决的技术问题在于,提供一种高效率、易实现的低层码更新方案,能够保证在数据之间的结构关系比较复杂情况下,也能顺利完成低层码的更新,且不受系统环境影响,不易出错。0018有鉴于此,本发明提供一种低层码更新装置,包括数据项记录单元,记录所有发生变化的数据项;层次码计算单元,在记录完成后,根据与所述数据项相关的层次关系数据,取得所述数据项的层次码,并从所述数。

12、据项的层次码中取得出所述数据项的最大层次码,以及根据与所述数据项相关的层次关系数据以及所述数据项的最大层次码,取得所述数据项的子项数据项的最大层次码;低层码更新单元,使用所述数据项和所述子项数据项的最大层次码,对所述数据项和所述子项数据项的低层码进行更新。通过该技术方案,一次性记录发生变化的数据,并进行低层码的更新,快速有效,减少了资源的消耗。本技术方案尤其适用于ERP系统中的物料管理,所述层次关系数据可以是物料清单。0019在上述技术方案中,优选地,还包括过滤单元,将所述数据项和所述子项数据项的最大层次码与原低层码进行对比,从所述数据项和所述子项数据中过滤掉最大层次码与原低层码相同的数据项;。

13、所述低层码更新单元使用过滤后的剩余数据项的最大层次码,对所述剩余数据项的低层码进行更新。通过该技术方案,通过过滤操作后,减少了需更新的数据项,也就减少了更新操作所需占用的资源。0020在上述技术方案中,优选地,所述数据项记录单元在所述层次关系数据发生结构变化时,记录所述层次关系数据中发生变化的所述数据项。通过该技术方案,对于不影响层次关系结构变化的数据变更,则不记录,进一步减少资源消耗。0021在上述技术方案中,优选地,所述层次码计算单元在所述层次关系数据中,逐层遍历所述数据项的父项数据项,根据遍历结果来取得所述数据项的层次码。通过该技术方案,可以准确有效地取得多个数据项的层次码。0022在上。

14、述技术方案中,优选地,所述层次关系数据的数量为一个或多个,所述数据项的层次码为一个或多个。通过该技术方案,可以对多个层次关系进行管理,能够保证变化数据记录不会疏漏。0023本发明还提供一种低层码更新方法,包括步骤202,记录所有发生变化的数据项;步骤204,在记录完成后,根据与所述数据项相关的层次关系数据,取得所述数据项的层次码,并从所述数据项的层次码中取得出所述数据项的最大层次码;步骤206,根据与所述数据项相关的层次关系数据以及所述数据项的最大层次码,取得所述数据项的子项数据项的最大层次码;步骤208,使用所述数据项和所述子项数据项的最大层次码,对所述数据项和所述子项数据项的低层码进行更新。

15、。通过该技术方案,一次性记录发生变化的数据,并进行低层码的更新,快速有效,减少了资源的消耗。本技术方案尤其适用于ERP系统中的物说明书CN102354314ACN102354323A3/13页6料管理,所述层次关系数据可以是物料清单。0024在上述技术方案中,优选地,在所述步骤208之前,还包括将所述数据项和所述子项数据项的最大层次码与原低层码进行对比,从所述数据项和所述子项数据中过滤掉最大层次码与原低层码相同的数据项;所述步骤208具体包括使用过滤后的剩余数据项的最大层次码,对所述剩余数据项的低层码进行更新。通过该技术方案,通过过滤操作后,减少了需更新的数据项,也就减少了更新操作所需占用的资。

16、源。0025在上述技术方案中,优选地,所述步骤202具体包括在所述层次关系数据发生结构变化时,从所述层次关系数据中查询出所述数据项。通过该技术方案,对于不影响层次关系结构变化的数据变更,则不记录,进一步减少资源消耗。0026在上述技术方案中,优选地,所述步骤204,根据所述层次关系数据,取得所述数据项的层次码,具体包括在所述层次关系数据中,逐层遍历所述数据项的父项数据项,根据遍历结果来取得所述数据项的层次码。通过该技术方案,可以准确有效地取得多个数据项的层次码。0027在上述技术方案中,优选地,所述层次关系数据的数量为一个或多个,所述数据项的层次码为一个或多个。通过该技术方案,可以对多个层次关。

17、系进行管理,能够保证变化数据记录不会疏漏。0028通过以上技术方案,可以实现提供一种高效率、易实现的低层码更新方案,能够保证在数据之间的结构关系比较复杂情况下,也能顺利完成低层码的更新,且不受系统环境影响,不易出错。附图说明0029图1是根据本发明的一个实施例的低层码更新装置的框图;0030图2是根据本发明的一个实施例的低层码更新方法的流程图;0031图3是根据本发明的一个实施例的低层码更新方法中使用的物料清单的结构示意图;0032图4是根据本发明的一个实施例的低层码更新方法中使用的物料清单的结构示意图;0033图5是根据本发明的一个实施例的低层码更新方法的工作流程图;0034图6是物料清单的。

18、结构示意图;0035图7是物料清单的结构示意图。具体实施方式0036为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。0037在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明并不限于下面公开的具体实施例的限制。0038图1是根据本发明的一个实施例的低层码更新装置的框图。0039如图1所示,本发明提供一种低层码更新装置100,包括数据项记录单元102,说明书CN102354314ACN102354323A4/13页7记录所有发生变化的数据项;层次码计算单元104,在。

19、记录完成后,根据与所述数据项相关的层次关系数据,取得所述数据项的层次码,并从所述数据项的层次码中取得出所述数据项的最大层次码,以及根据与所述数据项相关的层次关系数据以及所述数据项的最大层次码,取得所述数据项的子项数据项的最大层次码;低层码更新单元106,使用所述数据项和所述子项数据项的最大层次码,对所述数据项和所述子项数据项的低层码进行更新。通过该技术方案,一次性记录发生变化的数据,并进行低层码的更新,快速有效,减少了资源的消耗。本技术方案尤其适用于ERP系统中的物料管理,所述层次关系数据可以是物料清单。0040在上述技术方案中,还包括过滤单元108,将所述数据项和所述子项数据项的最大层次码与。

20、原低层码进行对比,从所述数据项和所述子项数据中过滤掉最大层次码与原低层码相同的数据项;所述低层码更新单元106使用过滤后的剩余数据项的最大层次码,对所述剩余数据项的低层码进行更新。通过该技术方案,通过过滤操作后,减少了需更新的数据项,也就减少了更新操作所需占用的资源。0041在上述技术方案中,优选地,所述数据项记录单元102在所述层次关系数据发生结构变化时,记录所述层次关系数据中发生变化的所述数据项。通过该技术方案,对于不影响层次关系结构变化的数据变更,则不记录,进一步减少资源消耗。0042在上述技术方案中,所述层次码计算单元104在所述层次关系数据中,逐层遍历所述数据项的父项数据项,根据遍历。

21、结果来取得所述数据项的层次码。通过该技术方案,可以准确有效地取得多个数据项的层次码。0043在上述技术方案中,所述层次关系数据的数量为一个或多个,所述数据项的层次码为一个或多个。通过该技术方案,可以对多个层次关系进行管理,能够保证变化数据记录不会疏漏。0044图2是根据本发明的一个实施例的低层码更新方法的流程图。0045如图2所示,本发明还提供一种低层码更新方法,包括步骤202,记录所有发生变化的数据项;步骤204,在记录完成后,根据与所述数据项相关的层次关系数据,取得所述数据项的层次码,并从所述数据项的层次码中取得出所述数据项的最大层次码;步骤206,根据与所述数据项相关的层次关系数据以及所。

22、述数据项的最大层次码,取得所述数据项的子项数据项的最大层次码;步骤208,使用所述数据项和所述子项数据项的最大层次码,对所述数据项和所述子项数据项的低层码进行更新。通过该技术方案,一次性记录发生变化的数据,并进行低层码的更新,快速有效,减少了资源的消耗。本技术方案尤其适用于ERP系统中的物料管理,所述层次关系数据可以是物料清单。0046在上述技术方案中,在所述步骤208之前,还包括将所述数据项和所述子项数据项的最大层次码与原低层码进行对比,从所述数据项和所述子项数据中过滤掉最大层次码与原低层码相同的数据项;所述步骤208具体包括使用过滤后的剩余数据项的最大层次码,对所述剩余数据项的低层码进行更。

23、新。通过该技术方案,通过过滤操作后,减少了需更新的数据项,也就减少了更新操作所需占用的资源。0047在上述技术方案中,所述步骤202具体包括在所述层次关系数据发生结构变化时,从所述层次关系数据中查询出所述数据项。通过该技术方案,对于不影响层次关系结构变化的数据变更,则不记录,进一步减少资源消耗。0048在上述技术方案中,所述步骤204,根据所述层次关系数据,取得所述数据项的层说明书CN102354314ACN102354323A5/13页8次码,具体包括在所述层次关系数据中,逐层遍历所述数据项的父项数据项,根据遍历结果来取得所述数据项的层次码。通过该技术方案,可以准确有效地取得多个数据项的层次。

24、码。0049在上述技术方案中,所述层次关系数据的数量为一个或多个,所述数据项的层次码为一个或多个。通过该技术方案,可以对多个层次关系进行管理,能够保证变化数据记录不会疏漏。0050以下详细说明本发明的技术方案的低层码更新装置,在ERP系统中物料管理上的应用。0051在物料数量较大,BOM结构比较复杂的情况下,单纯的低层码计算算法优化对效率提高所起到的作用是有限的。而对企业应用场景分析中发现,BOM的结构修改范围有限,因此对全部物料进行低层码运算是效率低下的,这种计算方式对很多结构没有变化的物料进行了无用的计算。本发明的技术方案就是解决如何确定结构变更的物料,并对其以及由其引起的层次结构变化的物。

25、料进行低层码计算。本发明提供的轻量型的低层码更新方法最大限度的缩小了低层码运算的物料范围,减少了低层码计算基数,从而提高低层码计算效率。0052相比于全部物料计算的“重型”计算方案,该轻量型的更新方法,可有效减轻低层码计算负担,减少总体计算时间,切实符合企业实际应用场景并满足其效率要求。0053根据本发明的低层码更新方法,工作时需要遵守以下模型0054BOM的维护采用主子表模型,即主表存储的是父项物料信息,结构如图3所示,子表存储的是该BOM的子项物料信息,结构如图4所示。这是一种仅有2层的树形结构,有且只有一个父节点,可以有多个子节点。采用该种模型的特点是BOM之间的维护是相互独立的,对物料。

26、B1的维护,仅仅会影响物料B1的下一层子项结构,并不会影响物料C1的下一层子项D1和D2的结构,也不会影响B1的父项A的结构。0055因此,低层码更新方法的实现需要以下前提条件00561、BOM维护采用父项、子项形式,例如采用2张数据库表主子表形式进行维护。00572、已知物料信息数据,并可以正常获取。如将物料信息存储在数据库中。本文中用MT表示物料的信息数据集合。00583、已经计算过MT中物料的低层码,存放至MT集合中。0059如图5所示,低层码更新方法的具体步骤包括0060步骤502,变更物料表记录。存储BOM维护中更改的物料信息。存储更改物料信息的表记为M_MT。0061在进行BOM维。

27、护时,如果对BOM进行了增加节点、删除节点及修改节点是指替换原有节点物料3种操作,就会对BOM的结构进行改动,从而可能会影响该物料及其全部子项物料的低层码,需要将该物料记入变更物料表,用于后面的计算。0062如果采用该文中的BOM数据结构模型,会出现以下几种情况00631增加BOM。在增加一个新的BOM时,由于只能增加该BOM的下一层子项物料,与其他的BOM数据是互相独立的,这并不会影响该物料在其他BOM中的层次结构,只会影响该物料全部层级子项物料的低层码,而在步骤508中对此进行了处理,因此,只需要将当前增加的BOM的全部子项物料记入变更物料表即可。00642删除BOM。与增加BOM时类似,。

28、删除BOM时也不会影响该物料在其他BOM中的说明书CN102354314ACN102354323A6/13页9层次结构,同样只需要将当前删除的BOM的全部子项物料记入变更物料表即可。00653修改BOM。对BOM进行修改,同样会有3种情况0066A增加BOM子项,将增加的子项物料记入变更物料表。0067B删除BOM子项,将删除的子项物料记入变更物料表。0068C替换BOM子项,此情况等同于先删除再增加子项,因此需要将被替换子项物料及替换子项物料都记入变更物料表。0069需要说明的是,只有在BOM维护时对BOM的树状结构进行了更改的,才要按照如上3种情况进行处理,如果只是修改了BOM的属性信息,。

29、或者只修改了BOM中物料的属性信息,并未对结构产生影响,则不要将其记入变更物料表中。0070从本质上来讲,表更物料表中记录的是在BOM树结构中发生变化的物料,因为这种变化,可能会使得该物料及其全部子项物料的层次码产生变化,从而影响其低层码。0071步骤504,变更物料层次码计算。计算M_MT中物料在BOM树中的最大层次码,该集合记为MAP。0072在步骤502中,已经将低层码可能发生改变,或者可能会影响其子项物料低层码的那些物料记录在变更物料表中,本步骤中要计算这些物料的最大层次码。0073根据物料检索BOM,计算出M_MT中各物料的层次码,即查找出该物料在BOM树中的层次号一般将BOM树根节。

30、点记为0层,下层子项层次号加1,依次类推。由于同一物料可能在不同的BOM中出现,因此M_MT中物料在不同BOM中的层次码可能是不同的,这时只需要获取其层次码最大值即可。0074BOM树的遍历及M_MT中各物料层次码的计算可以运用临时表,并采用以下方案进行00751构建缓存MAP,用来存储物料及层次码的键值对,将M_MT中的物料放入MAP中,并将其所有物料的层次码初始化置为0;00762构建临时表TEMP,分别存储子项物料、变更物料和层次码;00773初始化TEMP,将M_MT中的物料放入TEMP的变更物料列和子项物料列即该两列每一行的数据均相同,层次码列全部置为0;00784设I为正整数,初始。

31、化I1;00795根据物料在BOM中检索,查找出子项物料列的各个物料在BOM中的父项物料,即相应变更物料列中物料的向上第I层物料;00806查找出的集合记为S1,如果S1为空,则说明当前子项物料列的物料已经没有任何父项节点了,即已经遍历出了M_MT中物料的全部父项节点全部级别,转入步骤11;00817将S1中物料的层次码加1在其父项物料层次码基础上加1,需要注意的是,由于物料可能出现在多个BOM中,因此一次查询时可能找出同一物料的多个父项;00828将S1中物料的层次码与MAP中相应物料的层次码进行比较,如果前者数值大于后者,则更新MAP中物料的层次码;00839清空临时表TEMP,并将S1中。

32、物料放入TEMP的子项物料列中,作为下次查询父项的子项物料数据;008410令II1,并返回步骤5;008511此时TEMP中的数据已经为空,MAP中存储的更新物料的层次码为其在全部BOM说明书CN102354314ACN102354323A7/13页10中的最大层次码,即其最大深度根结点记为0层。MAP中数据在步骤506中作为输入数据使用。0086步骤506,变更物料过滤。将MAP中物料的层次码与MT中相应物料的低层码进行比较,过滤掉数值相同的那些物料。0087由于当前MAP中的更新物料中可能存在着某些物料的低层码没有发生变化,即MAP中物料的层次码与MT中相应物料的低层码相同,这些物料对低。

33、层码没有产生影响,可以过滤掉。可以采用如下方案进行过滤00881令I为正整数,初始化I1;00892取出MAP中第I个物料及其层次码,与MT中相应物料的低层码进行比较,如果前者等于后者,则将其从MAP中去除;00903令II1,判断I是否等于MAP中物料的个数,如果相等,则转入步骤4,否则转入步骤2;00914当前MAP就是经过过滤的结果集,将作为步骤508的输入参数参与后面的计算。0092步骤508,子项物料层次码计算。计算MAP中物料在BOM树中全部子项物料的层次码,同样只保留物料的最大层次码,所得集合记为S_MAP。0093根据物料检索BOM,并向下展开计算MAP中物料的各级子项的层次码。

34、,直至遍历至所有叶子节点。可以将这一过程看成是以MAP中物料为根节点,根据BOM向下遍历并计算层次码,只不过MAP中被作为根节点的物料的层次码不是0,而是保存在MAP中的物料相应的层次码由步骤504中计算得出的。由于同一物料可能在不同的BOM中出现,因此MAP中物料在不同BOM中查找出的子项物料可能是相同的,但由于MAP中两个物料的层次码可能不同,因此查找出来的相同子项物料的层次码也可能不同,这时只需要获取其层次码最大值即可。0094该步骤的计算也可以运用临时表,并采用以下方案进行00951构建缓存S_MAP,将MAP中的数据拷贝至S_MAP中。S_MAP用来存储物料及层次码的键值对,本步骤中。

35、可能会产生遍历出新的子项物料及其层次码,同样要放入MAP集合中;00962构建临时表TEMP2,分别存储父项物料和层次码;00973初始化TEMP2,将S_MAP中的物料和层次码分别放TEMP2的入父项物料列和层次码列;00984查找出父项物料列的各个物料在BOM中的向下一层子项物料;00995查找出的集合记为S2,如果S2为空,则说明当前父项物料列的物料已经没有任何子项节点了,即已经遍历出了原MAP中物料即过滤后的变更物料的全部子项节点全部级别,转入步骤9;01006将S2中物料的相应的层次码加1在其父项物料层次码基础上加1,需要注意的是,由于物料可能出现在多个BOM中,因此一次查询时可能找。

36、出同一物料的多个子项;01017将S2中物料的层次码与S_MAP中相应物料的层次码进行比较,如果前者数值大于后者,则更新S_MAP中物料的层次码;如果S2的某物料是中不存在的,则将该物料添加到S_MAP中;01028清空临时表TEMP2,并将S2中物料及其层次码分别放入TEMP2的子项物料列和说明书CN102354314ACN102354323A8/13页11层次码列中;返回步骤4;01039此时TEMP2中的数据已经为空,S_MAP中存储的物料及其层次码为原有的过滤后的变更物料,以及其在全部BOM中的所有子项物料及其次码,注意这里只需要保存物料的最大层次码。S_MAP中数据在步骤510中作为。

37、输入数据使用。0104步骤510,变更物料低层码更新。将S_MAP中物料的层次码与MT中相应物料的低层码进行比较,如果前者与后者不相同,则将S_MAP中物料的层次码更新至该物料在MT中的低层码0105由于低层码是记录层次码的最大值,因此在对S_MAP中物料进行低层码更新时,需要注意,只有在S_MAP中物料的层次码比MT中相应物料的低层码数值大的情况下,才去更新该物料的低层码。0106可以采用如下方案进行过滤01071令I为正整数,初始化I1;01082取出S_MAP中第I个物料及其层次码,与MT中相应物料的低层码进行比较,如果前者与后者不相同,则将其在MT中的低层码更新;01093令II1,判。

38、断I是否等于S_MAP中物料的个数,如果相等,则结束;否则转入步骤2。0110根据以上技术方案的低层码更新方法的一个实例如下。0111下面以图6及图7中的三个BOM为例进行案例说明,原有BOM为A1、A2和A3,结构如图6所示,通过传统低层码计算方法可以计算出各个物料的低层码。现对其中的B1结构进行修改,将其下属子项C1和C2删除,以此来模拟BOM维护操作。此时根据本发明技术方案的轻量型的低层码更新方法进行低层码计算,为清晰展示整个过程,特采用数据库表中的临时表为计算工具进行说明,数据推演过程如下01121数据准备BOM在修改前进行低层码计算,得出C1的低层码为2,D1及D2的低层码均为3,C。

39、2的低层码为2,将这些值存入数据库表MT中,如表1所示。0113表1原低层码记录表011401152变更物料记录在BOM维护时,对将B1下属子项C1及C2删除。这时,将更改的物料C1和C2计入变更物料表中,如表2所示。0116表2变更物料表说明书CN102354314ACN102354323A9/13页12011701183变更物料层次码计算遍历BOM,查找出C1和C2的父项节点。首先建立临时表,并设置初始数据,如表3所示。0119表3临时表初始数据01200121表4缓存MAP01220123表5中的“子项物料”列展示了一次父项检索后的结果。注意,由于修改后BOM中C1存在两个父项节点,因此。

40、检索出来两条数据,分别为A2和A3,而C1的层次码要加1。0124表5第一次父项检索后结果0125说明书CN102354314ACN102354323A10/13页130126表6缓存MAP01270128以表5中子项物料列的物料为子节点,在BOM树中查找其父节点,如果查找到父节点,则并将其层次码加1,否则层次码不变,结果如表7所示。0129表7第二次父项检索后结果01300131表8缓存MAP01320133继续遍历父项节点,会发现此时已经遍历到了所有根节点,则缓存MAP中存储的C1及C2的层次码是其在所有BOM中的最大层次数值,如表9所示。0134表9第三次父项检索后结果说明书CN1023。

41、54314ACN102354323A11/13页1401350136表10最终缓存MAP013701384变更物料过滤将MAP中C1的层次码1与MT中C1的低层码2相比较,发现两者值不相同,则不可以过滤掉该物料;同理,MAP中C2的层次码2与MT中C2的低层码2相比较,发现两者值相同,则过滤掉C2,此时MAP中仅剩下C1及其层次码1。01395子项物料层次码计算遍历BOM,检索MAP中C1的子节点,并计算其层次码0140构建临时表TEMP2,将MAP中物料C1及其层次码放入表中。构建缓存S_MAP,同样将MAP中数据拷贝至S_MAP中,如表11和表12所示。0141表11初始化临时表TEMP2。

42、01420143表12缓存S_MAP01440145查找C1的子项节点,有D1和D2两个节点,其层次码为在C1的层次码基础上加1。并将这些数据添加或更新至S_MAP中,如表13和表14所示。说明书CN102354314ACN102354323A12/13页150146表13第一次检索子项节点01470148表14缓存S_MAP01490150遍历D1和D2的子项物料,该例子中,D1和D2已经是叶子节点,因此遍历出的结果为空,此时可以结束遍历。01516变更物料低层码更新循环比较S_MAP中物料层次码与MT表中相应物料的低层码,如果两者不相同,则更新MT表中物料的低层码,如表15所示。0152表。

43、1501530154通过上面的案例说明也可以看出,在进行BOM更改后,对新的BOM进行低层码计算时,并没有对BOM中所有的物料进行低层码运算,只是有针对性的对部分物料进行运算,缩小了计算范围,尤其是在BOM复杂,物料较多,BOM修改不大的情况下,可显著提高低层码计算效率。0155通过以上技术方案,可以实现提供一种高效率、易实现的低层码更新方案,该轻量型的低层码更新方案虽然也增加了BOM维护时的负担,即将修改的物料进行保存,但是仅说明书CN102354314ACN102354323A13/13页16有一次读取操作,效率损失并不明显,出错率较低。在低层码计算时,再将这些修改过的物料读取出来,对其进。

44、行有限范围的遍历和计算。0156极端情况下,企业在两次低层码计算之间没有对BOM结构进行任何修改,如果采用以往全部物料计算方案,则依然要进行全部遍历和计算。但如果采用本发明的轻量型的低层码更新方案,待计算的物料为空,即不必再进行低层码计算过程。这与实际情况也是相符的。0157另外一种极端情况,即企业在两次低层码计算之间将BOM结构进行了较大改动,使得全部物料的低层码都发生了变化,这时采用轻量型低层码更新方案与采用以往计算方法的效率是几乎相同的,都进行了全部BOM、全部物料的遍历和计算。0158因此,在BOM修改不频繁或者BOM修改范围不大的企业中,采用本发明的轻量型的低层码更新方案可以大幅度提高其低层码计算效率。0159以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。说明书CN102354314ACN102354323A1/3页17图1图2说明书附图CN102354314ACN102354323A2/3页18图3图4图5说明书附图CN102354314ACN102354323A3/3页19图6图7说明书附图CN102354314A。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1