CN101388040A - 一种数据结构管理方法及*** - Google Patents
一种数据结构管理方法及*** Download PDFInfo
- Publication number
- CN101388040A CN101388040A CNA2008101745177A CN200810174517A CN101388040A CN 101388040 A CN101388040 A CN 101388040A CN A2008101745177 A CNA2008101745177 A CN A2008101745177A CN 200810174517 A CN200810174517 A CN 200810174517A CN 101388040 A CN101388040 A CN 101388040A
- Authority
- CN
- China
- Prior art keywords
- data element
- sign
- subitem
- path
- full exhibition
- 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
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据结构管理方法,该方法包括:获取当前所需展开数据元素的子项数据元素,确定各个子项数据元素的标识ID;按照数据元素之间的层级隶属关系,通过子项数据元素的标识ID、以及所述当前所需展开数据元素的标识ID,逐层记录对数据元素进行数据结构的展开所获得的各层级数据元素,得到全展路径字段内容;数据结构展开结束后,遍历各数据元素的全展路径字段内容,根据数据元素的标识ID查询得到数据元素之间的层级隶属关系。本发明同时公开了一种数据结构管理***,该方法和***缩短了进行数据结构中所包含数据元素查询时的数据结构展开时间,提高了数据元素的查询效率,优化了对于数据结构的管理。
Description
技术领域
本发明涉及数据结构管理技术,尤其涉及一种数据结构管理方法及***。
背景技术
物料清单(BOM,Bill of Material)是计算机可以识别的产品结构数据文件,也是企业进行计划、采购、生产、商务、成本核算及技术管理等企业资源规划(ERP,Enterprise Resource Planning)的主导文件。BOM也叫产品结构或配方,用于记录物料(通常是完成品或半成品、部品)的组成情况,也即:物料由哪些下级物料组成,以及每一下级物料的用量等属性信息。每一个BOM都是一个单层的物料组织结构,由一个父项物料和若干个子项物料组成。
由于BOM存在父项物料和子项物料的区别,因此,BOM中包含的每个物料都存在一个层级的概念。并且,除了最顶层物料和最底层物料之外,中间层级的物料既是其父项物料的子项物料,又是其子项物料的父项物料,由此,从最顶层产品向下由众多BOM构成一个产品树,该产品树由多层级的BOM组成。BOM展开就是从最顶层物料开始,将整个产品树中的物料逐层展开的过程,往往通过一些SQL算法或存储过程来实现。
通常,ERP***中记录一个产品BOM采用的是“单层物料清单”的方式记录,只记录该产品BOM中的主产品及该主产品的子项物料。采用单层记录有其自身的优点,例如:避免重复的记录,从而减少记录数,减少计算机中记录占用的容量;物料结构简单、易于管理等。
如表1所示,为图1所示自行车BOM在计算机中以单层记录方式存储物料信息的表结构,在该表中同时记录了自行车BOM中所包含的每个BOM的父项物料和子项物料。
表1
或者,一些ERP***在进行BOM物料信息存储时,将每个BOM中的父项物料和子项物料分别存储于BOM主件表和BOM部件表中,通过ID或BOM编号使得同一BOM中的父项物料和子项物料相互联系。如表2和表3所示,表2为BOM主件表,存储各个BOM的父项物料;表3为BOM部件表,存储各个BOM的子项物料。BOM主件表和BOM部件表中的父项物料和子项物料通过ID和BOM编号相互联系。
表2
ID | BOM编号 | 产品 | 用量 |
10000 | BOM001 | 自行车10 | 1 |
10001 | BOM002 | 车架101 | 1 |
10002 | BOM003 | 轮胎102 | 2 |
10003 | BOM004 | 电脑20 | 1 |
10004 | BOM005 | 主机201 | 1 |
表3
在进行物料的企业资源规划中,例如,当进行某种物料的生产,如需生产100辆自行车,按照表1、或表2和表3所示的产品树确定所需生产的部件、以及各个部件的数量等时,需要对该物料对应的BOM进行展开,以获得该物料所包含的各个层级的物料。或者,查询某一物料在哪些产品中使用时,也需要将所有BOM展开,以便从展开结果中进行查询。
以下,将介绍现有技术中进行BOM展开的方法。
以BOM主件表(即表2)和BOM部件表(即表3)所示的物理表中的自行车为例,现有技术中,对自行车BOM展开的方法一般为:
1)建立展开结果表,将BOM主件表需要展开的物料“自行车”、和“自行车”对应的[ID]放入展开结果表,并标记为未展开,当前层级为第0层。
本步骤执行后获得的展开结果表结构如表4所示:
表4
层级 | ID | 物料名称 | 数量 | 展开标记 |
0 | 10000 | 自行车10 | 1 | 否 |
2)循环展开结果表中第0层未展开的物料集合,根据所述物料集合中各个物料的[ID],依次从BOM部件表中获取各个物料的子项物料,存入展开结果表中,标记所述各个物料为已展开,当前层级为第(0+1)层。
执行本步骤之后得到的展开结果表结构如表5所示:
表5
层级 | ID | 物料名称 | 数量 | 展开标记 |
0 | 10000 | 自行车10 | 1 | 是 |
1 | 车架101 | 1 | 否 | |
1 | 轮胎102 | 2 | 否 |
3)在BOM主件表中查找是否存在展开结果表中第1层级的物料,如果存在,则从BOM主件表中获取该物料的[ID],并根据该[ID]从BOM部件表中获取该物料的子项物料存入展开结果表中;如此循环,直到BOM展开到指定层级,展开结束。
对展开结果表中第1层物料“车架”,从BOM主件表中查找到其[ID]为1001,根据该[ID]从BOM部件表中获取物料“车架”的子项物料为“扶手”和“车身”,将其放入展开结果表中;同样方法获取第1层物料“轮胎”的子项物料;上述物料放入展开结果表中作为第2层物料。由于上述第2层物料均不包含子项物料,因此物料“自行车”的BOM展开结束,所得到的展开结果表结构如表6所示。
表6
层级 | ID | 物料名称 | 数量 | 展开标记 |
0 | 10000 | 自行车10 | 1 | 是 |
0 | 10001 | 车架101 | 1 | 是 |
0 | 10002 | 轮胎102 | 2 | 是 |
1 | 扶手1001 | 1 | 否 | |
1 | 车身1002 | 1 | 否 | |
1 | 钢圈1021 | 1 | 否 | |
1 | 辐条1022 | 56 | 否 |
这样,可以从展开结果表中获取物料“自行车”每一层级的物料。
从上述展开方法的描述可知,现有技术中的展开方法存在以下缺点:
需要查询某个BOM使用了哪些部件,或者查询某个部件在哪些BOM中被使用时,需要将相应的BOM全部展开,之后,从展开结果中过滤,得到查询结果,过程复杂,耗时严重;而且,展开结果一般仅可供当次查询使用,下一次重新进行类似查询时,该次展开结果无法被重复利用,进而也无法优化下一次的查询结果;由此,每次查询时,使用者一般需要浪费较长时间等待BOM展开完毕,以获得查询结果,降低了用户体验,进而限制了使用BOM进行企业物料资源管理的方法在企业中的推广和应用。
发明内容
有鉴于此,本发明要解决的技术问题是,提供一种数据结构管理方法及***,以缩短进行数据结构中所包含数据元素查询时的数据结构展开时间,提高数据元素的查询效率,优化对于数据结构的管理。
为此,本发明实施例采用如下技术方案:
本发明提供了一种数据结构管理方法,该方法包括:
步骤1:根据数据元素之间的层级隶属关系以及数据元素的标识ID,确定各个数据元素对应的全展路径字段内容;
具体为:
获取当前所需展开数据元素的子项数据元素,确定各个子项数据元素的标识ID;
按照数据元素之间的层级隶属关系,通过子项数据元素的标识ID、以及所述当前所需展开数据元素的标识ID,逐层记录对数据元素进行数据结构的展开所获得的各层级数据元素,得到全展路径字段内容;
步骤2:根据数据元素的标识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替换为所述所需展开数据元素的全展路径。
全展路径处理模块进一步包括:
直接部件确定模块,用于根据数据元素之间的层级隶属关系、当前所需展开数据元素的标识ID以及当前所需展开数据元素的子项数据元素的标识ID确定所述当前所需展开数据元素的直接部件字段内容;
全展路径确定模块,用于将直接部件确定模块确定的当前所需展开数据元素的直接部件字段内容直接更新为该数据元素的全展路径字段内容;还用于依次查找所需展开数据元素的全展路径中包含的各个子项数据元素的标识ID是否对应有全展路径,并将所述所需展开数据元素的全展路径中包含的对应有全展路径的各个子项数据元素的标识ID替换为所述标识ID对应的全展路径;还用于将位于所述所需展开数据元素之上的各层数据元素的全展路径中包含的所述所需展开数据元素标识ID替换为所述所需展开数据元素的全展路径。
对于上述技术方案的技术效果分析如下:
为存储数据结构中数据元素属性的物理表至少增加标识ID和全展路径字段,从而在全展路径字段中使用标识ID记录对应数据结构展开过程中各个层级所包含的数据元素,实现对于全展路径字段的物理存储,下一次进行数据元素查询时,可以直接通过全展路径字段查询各个数据元素所对应的数据结构中包含的数据元素,无须每次重复进行数据结构的展开,实现了数据结构展开结果的重复利用,节省了之后进行数据元素查询时数据结构的展开时间,提高了数据元素的查询效率,优化了对数据元素的资源管理。
另外,对数据结构的展开完成后,当每次进行数据结构改变时,可以通过维护全展路径字段实现物料对应的数据结构改变的保存,无须重新进行该数据结构的展开操作,从而将数据结构的展开时间分解到了平时,同样节省了每次数据元素查询时,对物料进行数据结构展开的时间,提高了数据元素的查询效率,优化了对数据元素的资源管理。
附图说明
图1为现有技术自行车BOM结构示例图;
图2为本发明一种物料资源管理方法流程示意图;
图3为本发明自行车BOM展开方法流程示意图;
图4为本发明另一种物料资源管理方法流程示意图;
图5为本发明自行车BOM展开方法流程示意图;
图6为本发明物料资源管理***结构示意图。
具体实施方式
本发明的基本思想是:根据数据元素之间的层级隶属关系及数据元素的标识ID确定所需展开数据元素的全展路径字段内容;当数据结构展开结束后,遍历数据元素的全展路径字段内容,根据数据元素的标识ID查询得到数据元素之间的层级隶属关系及其他属性信息。
以下,通过具体实施例结合附图详细说明本发明数据结构管理方法及***的实现。
在下述实施例中,将本发明数据结构管理方法及***应用于物料资源管理中。所述数据结构对应物料BOM,所述数据元素对应物料。当然,本发明所述数据结构管理方法同样适用于其他领域或业务中,只要该领域或业务中包含的数据元素之间存在父项和子项的数据关系,这里不再赘述。
现有技术中,当需要进行物料的查询时,需要首先对物料进行BOM展开,获得BOM的各层级物料信息,之后,再查询物料之间的层级隶属关系,例如:物料所属BOM、BOM所包含的物料、或者某一物料的父项物料等等。在本发明中,只需要第一次进行物料的BOM展开时,在全展路径字段内容中通过标识ID进行所述BOM展开路径的记录,之后,进行BOM的改变时,进行物料对应全展路径字段内容的维护;而进行某一物料的查询时,直接通过物料的标识ID遍历各个物料的全展路径字段内容,即可查找到所述某一物料与其他物料之间的层级隶属关系,省略了现有技术中每次进行物料查询时的物料BOM展开过程,从而优化了物料资源管理。
在下述实施例中,用“[]”符号标识字段中的内容。例如:[全展路径]表示全展路径字段中的内容;物料A的[全展路径]即为物料A所对应的全展路径字段内容。
实施例1
在本实施例中首先通过图2详细描述一种本发明的物料资源管理方法,之后,通过图3中对表2和表3的物料“自行车”进行BOM展开方法的描述,以具体实例的方式对图2所示物料资源管理方法中的物料展开方法进一步详细说明。
图2为本发明一种物料资源管理方法流程示意图,如图2所示,该方法包括:
步骤201:为BOM主件表增加标识ID、直接部件和全展路径三个字段;根据一定的规则为BOM主件表中的各个物料确定对应的标识ID。
其中,全展路径用于存储BOM的展开结果,该结果逐层记录对物料进行BOM展开获得的各层级物料;直接部件用于记录物料的子项物料,也即物料的下一层级物料;标识ID用于标识每个物料,具有唯一性。
所述根据一定的规则为每个物料确定标识ID可以为:根据物料在主件表中的记录顺序,从1开始,以步长1依次增加,确定为2、3、4...等。但是,这种确定物料标识ID的方法并不是唯一的,只要能够表征物料的唯一性即可满足本发明。例如,也可以使用A、B、C......等等各种方法,或者,随机为物料分配不同数字作为标识ID。但是,从物料的排列顺序以及管理方便角度,标识ID以1为步长递增较佳。
步骤202:确定进行某个物料的BOM展开时,从BOM部件表中获取所需展开物料的子项物料,依次判断各个所述子项物料是否已存储于BOM主件表中,如果未存储,则将该子项物料及相关属性信息添加到BOM主件表中,确定该子项物料的标识ID;如果已存储,则直接从BOM主件表中获取该子项物料的标识ID。
步骤203:根据物料之间的层级隶属关系、所需展开物料的标识ID、及其子项物料的标识ID确定所述所需展开物料的[直接部件]。
其中,具体如何通过标识ID进行直接部件字段的表示并不限定,例如,可以为1(2,3),或者1{2,3}的形式等等,只要能够将父项物料、该父项物料的子项物料、以及物料之间的层级隶属关系通过物料的标识ID以一定的形式表现出来即可。
步骤204:将所述所需展开物料的[全展路径]直接更新为所述所需展开物料的[直接部件]。
步骤205:在BOM主件表中依次查找所需展开物料[全展路径]中包含的各个子项物料的标识ID是否对应有[全展路径],对于标识ID对应有[全展路径]的子项物料,将所述所需展开物料[全展路径]中该子项物料的标识ID替换为所述该子项物料的标识ID所对应的[全展路径]。
也即:每个标识ID对应一物料,从而对应该物料的[全展路径]。
其中,在实际应用中,对某一物料逐层展开时,如果其对应BOM中各层物料在之前均未进行过BOM展开,则本步骤可以省略;但是,存在该物料BOM中包含的至少一个物料已经进行过BOM展开的情况,则所述包含的至少一个物料已经对应有[全展路径],则本步骤必须执行。
以图3中所示自行车BOM展开为例,假设首先对物料“车架”进行了BOM展开,获得了车架的全展路径字段内容为2(6,7),则,以后进行物料“自行车”的BOM展开时,物料“车架”已存在对应的全展路径字段内容,这时,本步骤必须执行,以使得全展路径字段能够完整的表示自行车BOM中所包含的物料以及物料之间的层级隶属关系。
步骤206:遍历BOM主件表中位于所需展开物料之上各层物料的[全展路径],将所述各层物料的[全展路径]中包含的所述所需展开物料标识ID替换为所述所需展开物料的[全展路径]。
步骤207:判断是否继续进行物料的展开,如果是,确定下一个所需展开的物料,返回步骤202;否则,展开结束。
其中,当对某一物料进行BOM的逐层展开时,即可通过步骤202~步骤207的循环执行完成。对某一物料逐层进行BOM展开,在展开过程中,需要逐层逐物料的对每个物料进行BOM展开,直到物料展开到某一指定的中间层级、或者最底层,展开结束。
步骤208:遍历BOM主件表中物料的全展路径字段内容,根据物料的标识ID查询得到物料之间的层级隶属关系,以进行相应的企业资源规划。
例如,可以遍历物料的全展路径字段内容,查找到包含某一物料的标识ID,从而确定该物料隶属的各个BOM;或者,也可以查找到某一物料对应的全展路径字段内容,从而获得以该物料作为主产品的物料BOM所包含的各个层级的物料。进一步的,还可以获得各个物料的数量关系等属性信息之间的关系。获得这些查询结果后,即可以根据查询结果进行生产、商务、成本核算及技术管理等企业资源规划。
其中,由于全展路径字段内容是以物料的标识ID进行物料层级关系的表示的,因此,本步骤中得到的查询结果也是与全展路径字段内容相同的形式,这种表现物料之间层级隶属关系的形式并不利于用户进行物料之间层级隶属关系的直观查看,因此,在实际应用中,可以将查询结果再次转化成物理表的方式提供给用户进行查询结果的查看,转化方法举例如下:
例如:查询结果为1(5(9,7,8),3,4),通过查找查询结果中的符号“(”和“)”获得标识ID之间的层级关系以及隶属关系,从而根据所述层级隶属关系,转化得到如表7a所示的表格形式的查询结果。
表7a
标识ID | 层级 |
1 | 0 |
5 | 1 |
9 | 2 |
7 | 2 |
8 | 2 |
3 | 1 |
4 | 1 |
下面,通过图3对图2所示物料资源管理方法中的BOM展开方法进行具体实例说明。如图3所示为使用图2中所包含的BOM展开方法,对表2和表3所示的BOM主件表和部件表中的物料“自行车”进行BOM展开的方法流程示意图,如图3所示,该方法包括:
步骤301:为BOM主件表增加标识ID、直接部件和全展路径三个字段;为BOM主件表中所记录的各个物料确定对应的标识ID。
此时,表2所示的BOM主件表结构如表7所示。其中,标识ID从1开始,以步长1递增。
表7
标识ID | ID | BOM编号 | 产品 | 直接部件 | 全展路径 | 用量 |
1 | 10000 | BOM001 | 自行车10 | 1 | ||
2 | 10001 | BOM002 | 车架101 | 1 | ||
3 | 10002 | BOM003 | 轮胎102 | 2 | ||
4 | 10003 | BOM004 | 电脑20 | 1 | ||
5 | 10004 | BOM005 | 主机201 | 1 |
步骤302:确定进行自行车的BOM展开时,从BOM部件表中获取物料“自行车”对应的子项物料,判断各个子项物料是否存储于BOM主件表中,如果未存储,则将子项物料以及子项物料的相关属性信息添加到BOM主件表中,确定子项物料的[标识ID];如果已存储,则直接从BOM主件表中获取该子项物料的[标识ID]。
其中,依次判断出物料“自行车”的子项物料为“车架”和“轮胎”,且已存储BOM主件表中,因此,直接获取两种子项物料的[标识ID]—“2”和“3”。
步骤303:根据“自行车”的[标识ID]、及其子项物料“车架”和“轮胎”的[标识ID]确定物料“自行车”的[直接部件]。
在本例中,设[直接部件]的表示方法为A(B,C)的形式。
由于所需展开物料“自行车”的[标识ID]为“1”,子项物料“车架”和“轮胎”的[标识ID]分别为2和3,因此,确定物料“自行车”的[直接部件]为1(2,3)。
步骤304:将物料“自行车”的[全展路径]直接更新为[直接部件]。
步骤305:在BOM主件表中依次查找物料“自行车”的[全展路径]中包含的子项物料“车架”和“轮胎”的标识ID—“2”和“3”是否对应有[全展路径],若其对应有[全展路径],则将“自行车”的[全展路径]中“车架”和“轮胎”的标识ID—“2”和“3”替换为子项物料“车架”和“轮胎”的标识ID—“2”和“3”所对应的[全展路径]。
本实施例中,子项物料“车架”和“轮胎”不存在[全展路径],因此,标识ID“2”、“3”并不存在对应的[全展路径],因此,本步骤中无需替换“自行车”对应的[全展路径]中包含的标识ID—2和3。
步骤306:遍历位于物料“自行车”之上各层物料的[全展路径],将所述各层物料的[全展路径]中该所需展开物料的标识ID替换为其对应的[全展路径]。
在本步骤中,物料“自行车”为最顶层物料,因此,无需进行所述替换。
本步骤之后,BOM主件表结构如表8所示:
表8
标识ID | ID | BOM编号 | 产品 | 直接部件 | 全展路径 | 用量 |
1 | 10000 | BOM001 | 自行车10 | 1(2,3) | 1(2,3) | 1 |
2 | 10001 | BOM002 | 车架101 | 1 | ||
3 | 10002 | BOM003 | 轮胎102 | 2 | ||
4 | 10003 | BOM004 | 电脑20 | 1 | ||
5 | 10004 | BOM005 | 主机201 | 1 |
步骤307:返回步骤302,对获取到的子项物料“车架”和“轮胎”继续进行BOM展开,如此循环,以逐层对物料“自行车”进行BOM展开,直到自行车BOM展开完毕,展开结束。
以子项物料“车架”为例,继续进行车架BOM展开时,执行步骤302~步骤306,具体展开过程为:
从BOM部件表中获得物料“车架”的子项物料“扶手”和“车身”,并确定BOM主件表中不存在子项物料“扶手”和“车身”的记录,因此,从BOM部件表中获取子项物料“扶手”和“车身”的信息,添加到BOM主件表中,并确定两种物料的标识ID分别为6和7;
确定物料“车架”的[直接部件]为2(6,7),并更新到车架的[全展路径];
遍历车架的[全展路径]中子项物料标识ID对应的[全展路径](在本实施例中扶手和车身未确定全展路径,因此,无需替换车架的[全展路径]中子项物料的标识ID);
遍历车架的父项物料的[全展路径],由于在本实施例中只有“自行车”,因此,将“自行车”[全展路径]中车架的标识ID—2替换为车架的[全展路径]—2(6,7)。从而自行车的[全展路径]转变为1(2(6,7),3)。
同样方法处理物料“轮胎”的BOM展开,以及物料“车架”和“轮胎”下一层级物料的BOM展开,直到展开结束。
在本实施例中,将自行车BOM展开到最底层,则自行车BOM展开结束后,得到的BOM主件表如表9所示:
表9
标识ID | ID | BOM编号 | 产品 | 直接部件 | 全展路径 | 数量 |
1 | 10000 | BOM001 | 自行车10 | 1(2,3) | 1(2(6,7),3(8,9)) | 1 |
2 | 10001 | BOM002 | 车架101 | 2(6,7) | 2(6,7) | 1 |
3 | 10002 | BOM003 | 轮胎102 | 3(8,9) | 3(8,9) | 2 |
4 | 10003 | BOM004 | 电脑20 | 1 | ||
5 | 10004 | BOM005 | 主机201 | 1 | ||
6 | 扶手1001 | 1 | ||||
7 | 车身1002 | 1 | ||||
8 | 钢圈1021 | 1 | ||||
9 | 辐条1022 | 56 |
在实施例1中,BOM主件表已经建立,并且,可以保存多个物料进行BOM展开的所获得的物料,并且,可以当某一物料进行BOM展开时,展开得到的子项物料如果已经进行过BOM展开,则可以直接使用已经确定的所述子项物料的[全展路径],无需再次对该子项物料进行后续展开,节省了BOM展开过程和时间。
而在下述的实施例2中所提供的物料资源管理方法,进行物料BOM展开时获得的物料及其属性信息存储于新建立的BOM主件表中。因此,当进行一系列物料的BOM展开时,一般需要使用实施例2所提供的方法进行第一个物料的BOM展开,之后,则可以使用实施例1所提供的方法进行后续物料的BOM展开,当所述一系列物料的BOM中包含一定数量的相同物料时,可以达到优化物料展开过程的目的。
实施例2
在本实施例中首先通过图4详细描述本发明另一种物料资源管理方法,之后,通过图5中对表1中物料“自行车”进行BOM展开方法的描述,以具体实例的方式对图4所示物料资源方法中所使用的BOM展开方法进行进一步详细说明。
图4为本发明另一种物料资源管理方法流程示意图,在该方法中,设BOM展开得到的物料信息存储于一个新建立的物理表中。如图4所示,该方法包括:
步骤401:建立存储BOM展开物料的名称为“BOM主件表”的物理表,所述BOM主件表至少包括标识ID、直接部件和全展路径三个字段。
步骤402:确定进行BOM展开时,获取所需展开物料的相关属性信息,添加到BOM主件表中;确定该物料的[标识ID]。
其中,所述获取根据所述相关属性信息存储方法的不同而相应改变。例如:如表2和表3所示存储于两个物理表中,则,需要从两个物理表中进行所述获取;或者也可以如表1所示存储于一个物理表中,则直接从该物理表中获取。
步骤403:获取所需展开物料的子项物料,将子项物料及其相关属性信息添加到BOM主件表中,并确定子项物料的[标识ID]。
步骤404:根据物料之间的层级隶属关系、所述所需展开物料的[标识ID]、及其子项物料的[标识ID]确定所述所需展开物料的[直接部件]。
步骤405:将该所需展开物料的[全展路径]直接更新为[直接部件]。
步骤406:遍历位于所需展开物料之上各层物料的[全展路径],将所述各层物料的[全展路径]中包含的所需展开物料的标识ID替换为其对应的[全展路径]。
步骤407:判断是否继续进行物料的展开,如果是,确定下一个所需展开的物料,返回步骤402;否则,展开结束。
其中,可以循环执行步骤402~步骤407,依次对获取到的子项物料继续进行BOM展开,如此循环,以逐层对所述所需展开的物料进行BOM展开,直到所述所需展开物料的BOM展开到指定层级,展开结束。
步骤408:遍历BOM主件表中物料的全展路径字段内容,根据物料的标识ID查询得到物料之间的层级隶属关系,以进行相应的企业资源规划。
例如,可以遍历物料的全展路径字段内容,查找到包含某一物料的标识ID,从而确定该物料隶属的各个BOM;或者,也可以查找到某一物料对应的全展路径字段内容,从而获得以该物料作为主产品的物料BOM所包含的各个层级的物料。进一步的,还可以根据所述层级隶属关系获得物料之间的数量关系的属性信息之间的关联关系。获得这些查询结果后,即可以根据查询结果进行生产、生产、商务、成本核算及技术管理等企业资源规划。
另外,与图2中步骤208相同的,本步骤中得到的查询结果同样可以转化成物理表形式提供给用户查看,这里不再赘述。
以表1所示的自行车BOM部件表为例,以图4所示物料资源管理方法中所包含的BOM展开方法进行自行车BOM展开,具体步骤流程如图5所示:
步骤501:建立存储自行车BOM的展开物料的BOM主件表,所述BOM主件表包括标识ID、ID、BOM编号、产品、直接部件、全展路径、以及用量等字段。
步骤502:确定进行BOM展开时,从BOM部件表中获取物料“自行车”的相关属性信息,添加到BOM主件表中;确定该物料“自行车”的[标识ID]。
表10
标识ID | ID | BOM编号 | 产品 | 直接部件 | 全展路径 | 用量 |
1 | 10000 | BOM001 | 自行车10 | 1 |
步骤503:从BOM部件表中获取物料“自行车”的子项物料,将子项物料添加到BOM主件表中,确定子项物料的[标识ID]。
其中,将获取到子项物料“车架”和“轮胎”,设所确定子项物料“车架”和“轮胎”的[标识ID]分别为2和3。
步骤504:根据“自行车”的[标识ID]、及其子项物料“车架”和“轮胎”的[标识ID]确定物料“自行车”的[直接部件]。
步骤505:将物料“自行车”的[全展路径]直接更新为[直接部件]。
本步骤执行之后,BOM主件表结构如表11所示:
表11
标识ID | ID | BOM编号 | 产品 | 直接部件 | 全展路径 | 数量 |
1 | 10000 | BOM001 | 自行车10 | 1(2,3) | 1(2,3) | 1 |
2 | 10001 | BOM002 | 车架101 | 1 | ||
3 | 10002 | BOM003 | 轮胎102 | 2 |
步骤506:遍历位于“自行车”之上各层物料的[全展路径],将所述各层物料的[全展路径]中包含的“自行车”的标识ID替换为其对应的[全展路径]。
其中,物料“自行车”不存在上一层级的物料,因此本步骤中不进行所述替换。但是,当从步骤507返回步骤502继续进行子项物料“车架”和“轮胎”的展开时,则需要将“车架”和“轮胎”的上一层级物料“自行车”的[全展路径]中的“2”和“3”分别替换为“2”和“3”对应的[全展路径]“2(4,5)”和“3(6,7)”,从而“自行车”的[全展路径]转换为1(2(6,7),3(8,9))。
步骤507:分别以获取到的“自行车”的子项物料“车架”和“轮胎”作为父项物料,返回步骤502继续进行BOM展开,如此循环,直到自行车BOM全部展开,展开结束。
自行车BOM全部展开后,得到的BOM主件表如表12所示。
表12
标识ID | ID | BOM编号 | 产品 | 直接部件 | 全展路径 | 数量 |
1 | 10000 | BOM001 | 自行车10 | 1(2,3) | 1(2(6,7),3(8,9)) | 1 |
2 | 10001 | BOM002 | 车架101 | 2(4,5) | 2(4,5) | 1 |
3 | 10002 | BOM003 | 轮胎102 | 3(6,7) | 3(6,7) | 2 |
4 | 扶手1001 | 1 | ||||
5 | 车身1002 | 1 | ||||
6 | 钢圈1021 | 1 | ||||
7 | 辐条1022 | 56 |
对于上述实施例1和实施例2中所述的物料资源管理方法,其中均在现有技术的基础上增加了直接部件字段,从而更加直观得到每个BOM中包含的父项物料和子项物料,但是,也可以不增加直接部件字段,而使用确定直接部件字段的方法直接确定全展路径字段,而省略两个实施例中先确定直接部件字段再更新到全展路径字段的步骤。
另外,当进行BOM主件表中[全展路径]等字段的维护时,同样可以使用类似图2和图4所示的方法。例如,当为物料“自行车”增加一子项物料X时,可以直接确定该子项物料X的标识ID,并根据其在自行车BOM中的具体层级以及物料之间的层级隶属关系,相应在位于其上层物料的[全展路径]以及[直接部件]中增加物料X的标识ID,并使用类似图2或图4所示的方法,确定物料X的[直接部件]和[全展路径],并相应更新到位于其上层物料的[全展路径];或者,当删除某一物料的BOM时,相应在BOM主件表中删除该物料对应的记录,并根据该物料的标识ID删除位于该物料上层的物料中所包含的该物料的标识ID或全展路径字段内容;同时,删除该物料的全展路径字段中包含的下层物料的标识ID对应的记录。通过以上维护,可以实时通过全展路径字段内容的改变,实现对于各个物料BOM改变的记录。无需重新对组成结构发生改变的BOM进行展开,从而将BOM展开时间分解在了各个对全展路径字段内容进行修改的时刻,同样节省了每次物料查询时,对物料进行BOM展开的时间,提高了物料的查询效率。
以上实施例1和实施例2所描述的数据结构管理方法应用于物料资源的管理中,为存储BOM展开物料属性的BOM主件表至少增加标识ID和全展路径字段,从而在全展路径字段中使用标识ID记录对应物料BOM展开过程中各个层级所包含的物料,实现对于全展路径字段的物理存储,下一次进行查询时,可以直接通过全展路径字段查询各个物料BOM中包含的物料,无须每次重复进行BOM展开,实现了BOM展开结果的重复利用,节省了之后进行物料查询时BOM展开的时间,提高了物料的查询效率,优化了对物料的资源管理。
另外,对BOM展开完成后,当每次进行BOM的改变时,可以通过维护全展路径字段实现物料BOM改变的保存,无须重新进行该物料BOM的展开操作,从而将BOM展开的时间分解到了平时,同样节省了每次物料查询时,对物料进行BOM展开的时间,提高了物料的查询效率,优化了对物料的资源管理。
以下,同样以物料资源的管理进行本发明数据结构管理***实现的说明。物料BOM对应本发明中的数据结构,物料对应本发明所述数据元素,物料BOM的展开对应本发明数据结构的展开。另外,本发明所述数据结构管理***同样可以适用于其他领域,只要该领域中的数据元素之间存在父项和子项的隶属关系即可。
图6为本发明物料资源管理***结构示意图,如图6所示,该***包括:原始数据管理模块610、标识ID确定模块620、全展路径处理模块630、其他属性信息确定模块640、展开数据管理模块650、以及物料信息查询模块660;其中,
原始数据管理模块610,用于存储各个BOM所包括的物料的相关属性信息。
例如,将BOM的所有物料在一个表中存储,如表1,或者,以BOM主件表和BOM部件表的方式存储,如表2和表3。
标识ID确定模块620,用于以一定的规则确定展开数据管理模块650中存储的各个物料的标识ID,并将所确定的物料的标识ID信息发送给展开数据管理模块650。
全展路径处理模块630,用于根据物料之间的层级隶属关系、当前所需展开物料的标识ID以及当前所需展开物料的子项物料的标识ID确定所述当前所需展开物料的全展路径。还用于依次查找所需展开物料的全展路径中包含的各个子项物料的标识ID是否对应有全展路径,并将所述所需展开物料的全展路径中包含的对应有全展路径的各个子项物料的标识ID替换为所述标识ID对应的全展路径;还用于将位于所述所需展开物料之上的各层物料的全展路径中包含的所述所需展开物料标识ID替换为所述所需展开物料的全展路径。
其中,全展路径处理模块还可以进一步分为直接部件确定模块和全展路径确定模块两部分,其中,
直接部件确定模块,用于根据物料之间的层级隶属关系、当前所需展开物料的标识ID以及当前所需展开物料的子项物料的标识ID确定所述当前所需展开物料的直接部件字段内容;
全展路径确定模块,用于将直接部件确定模块确定的当前所需展开物料的直接部件字段内容直接更新为该物料的全展路径字段内容;还用于依次查找所需展开物料的全展路径中包含的各个子项物料的标识ID是否对应有全展路径,并将所述所需展开物料的全展路径中包含的对应有全展路径的各个子项物料的标识ID替换为所述标识ID对应的全展路径;还用于将位于所述所需展开物料之上的各层物料的全展路径中包含的所述所需展开物料标识ID替换为所述所需展开物料的全展路径。
其他属性信息确定模块640,用于在BOM展开中,从原始数据管理模块610中获取物料对应的ID、BOM编号、数量等全展路径、直接部件以及标识ID之外的其他属性信息,并发送给展开数据管理模块650。
展开数据管理模块650,用于存储BOM展开过程中,标识ID确定模块620、全展路径处理模块630以及其他属性信息确定模块640所确定的各层物料的属性信息。
其中,展开数据管理模块650可以通过建立物理表的方法进行物料属性信息的存储和管理。
物料信息查询模块660,用于遍历展开数据管理模块650中存储的物料的全展路径字段内容,根据物料的标识ID查询得到物料之间的层级隶属关系。
物料信息查询模块660得到的查询结果将用于进行企业资源规划。
本领域普通技术人员可以理解,实现上述实施例数据结构管理方法的过程可以通过程序指令相关的硬件来完成,所述的程序可以存储于可读取存储介质中,该程序在执行时执行上述方法中的对应步骤。所述的存储介质可以如:ROM/RAM、磁碟、光盘等。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1、一种数据结构管理方法,其特征在于,该方法包括:
步骤1:根据数据元素之间的层级隶属关系以及数据元素的标识ID,确定各个数据元素对应的全展路径字段内容;
具体为:
获取当前所需展开数据元素的子项数据元素,确定各个子项数据元素的标识ID;
按照数据元素之间的层级隶属关系,通过子项数据元素的标识ID、以及所述当前所需展开数据元素的标识ID,逐层记录对数据元素进行数据结构的展开所获得的各层级数据元素,得到全展路径字段内容;
步骤2:根据数据元素的标识ID遍历各数据元素的全展路径字段内容,查询得到数据元素之间的层级隶属关系,具体为:
数据结构展开结束后,遍历各数据元素的全展路径字段内容,根据数据元素的标识ID查询得到数据元素之间的层级隶属关系。
2、根据权利要求1所述的方法,其特征在于,确定所述当前所需展开数据元素的全展路径字段内容后,该方法进一步包括:
依次查找所需展开数据元素的全展路径字段内容中包含的各个子项数据元素的标识ID是否对应有全展路径字段内容,并将所述所需展开数据元素的全展路径字段内容中包含的对应有全展路径字段内容的各个子项数据元素的标识ID替换为所述标识ID对应的全展路径字段内容。
3、根据权利要求2所述的方法,其特征在于,全展路径字段内容中的标识ID替换后,该方法进一步包括:
遍历位于所需展开数据元素之上各层数据元素的全展路径字段内容,将所述各层数据元素的全展路径字段内容中包含的所述所需展开数据元素的标识ID替换为所述所需展开数据元素的全展路径字段内容。
4、根据权利要求1至3任一项所述的方法,其特征在于,数据结构展开过程中所获取到的数据元素信息、以及确定的数据元素的属性信息存储于一物理表中;
相应的,该方法进一步包括:
确定各个子项数据元素的标识ID之前,依次判断各个子项数据元素是否已经存储于所述物理表中;
如果子项数据元素已存储,则所述确定子项数据元素的标识ID为:直接从所述物理表中获取该子项数据元素对应的标识ID;
如果子项数据元素未存储,则将该子项数据元素以及对应的属性信息存储于所述物理表中;所述确定子项数据元素的标识ID为:根据一定的规则确定该子项数据元素的标识ID。
5、根据权利要求4所述的方法,其特征在于,所述根据一定的规则确定具体为:将物理表中所存储的该子项数据元素前一个数据元素的标识ID增加设定步长,得到子项数据元素的标识ID。
6、根据权利要求1至3任一项所述的方法,其特征在于,根据数据元素之间的层级隶属关系以及数据元素的标识ID,确定各个数据元素对应的全展路径字段内容具体为:
根据数据元素之间的层级隶属关系以及数据元素的标识ID,确定各个数据元素对应的全展路径字段内容确定所述当前所需展开数据元素的直接部件字段内容;将所述直接部件字段内容更新为所述全展路径字段内容。
7、一种数据结构管理***,其特征在于,该***包括:原始数据管理模块、标识ID确定模块、全展路径处理模块、其他属性信息确定模块、展开数据管理模块、以及数据元素信息查询模块;其中,
原始数据管理模块,用于存储各个数据结构展开前所包含数据元素的包括数据元素层级隶属关系的相关属性信息;
标识ID确定模块,用于确定展开数据管理模块中各个数据元素的标识ID;
全展路径处理模块,用于根据数据元素之间的层级隶属关系、当前所需展开数据元素的标识ID以及当前所需展开数据元素的子项数据元素的标识ID确定所述当前所需展开数据元素的全展路径;
其他属性信息确定模块,用于从原始数据管理模块中获取数据结构展开所得到数据元素除标识ID以及全展路径之外的其他属性信息;
展开数据管理模块,用于存储数据结构展开过程中,标识ID确定模块、全展路径处理模块以及其他属性信息确定模块所确定的各层数据元素的属性信息;
数据元素信息查询模块,用于遍历展开数据管理模块中存储的数据元素的全展路径字段内容,根据数据元素的标识ID查询得到数据元素之间的层级隶属关系。
8、根据权利要求7所述的***,其特征在于,所述全展路径处理模块进一步用于:
依次查找所需展开数据元素全展路径中包含的各个子项数据元素的标识ID是否对应有全展路径,并将所述所需展开数据元素的全展路径中包含的对应有全展路径的各个子项数据元素的标识ID替换为所述标识ID对应的全展路径。
9、根据权利要求7或8所述的***,其特征在于,所述全展路径处理模块进一步用于:
将位于所述所需展开数据元素之上的各层数据元素的全展路径中包含的所述所需展开数据元素标识ID替换为所述所需展开数据元素的全展路径。
10、根据权力要求9所述的***,其特征在于,全展路径处理模块进一步包括:
直接部件确定模块,用于根据数据元素之间的层级隶属关系、当前所需展开数据元素的标识ID以及当前所需展开数据元素的子项数据元素的标识ID确定所述当前所需展开数据元素的直接部件字段内容;
全展路径确定模块,用于将直接部件确定模块确定的当前所需展开数据元素的直接部件字段内容直接更新为该数据元素的全展路径字段内容;还用于依次查找所需展开数据元素的全展路径中包含的各个子项数据元素的标识ID是否对应有全展路径,并将所述所需展开数据元素的全展路径中包含的对应有全展路径的各个子项数据元素的标识ID替换为所述标识ID对应的全展路径;还用于将位于所述所需展开数据元素之上的各层数据元素的全展路径中包含的所述所需展开数据元素标识ID替换为所述所需展开数据元素的全展路径。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2008101745177A CN101388040A (zh) | 2008-11-05 | 2008-11-05 | 一种数据结构管理方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2008101745177A CN101388040A (zh) | 2008-11-05 | 2008-11-05 | 一种数据结构管理方法及*** |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101388040A true CN101388040A (zh) | 2009-03-18 |
Family
ID=40477459
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2008101745177A Pending CN101388040A (zh) | 2008-11-05 | 2008-11-05 | 一种数据结构管理方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101388040A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101840427A (zh) * | 2010-04-15 | 2010-09-22 | 北京数码大方科技有限公司 | 数据处理的方法和装置 |
CN101976242A (zh) * | 2010-09-26 | 2011-02-16 | 用友软件股份有限公司 | 生成业务对象的内部级次编码的方法和*** |
CN101840400B (zh) * | 2009-03-19 | 2012-02-01 | 北大方正集团有限公司 | 一种多级分类检索方法及*** |
CN109003031A (zh) * | 2018-10-09 | 2018-12-14 | 郑州云海信息技术有限公司 | 一种生产调试产品的方法、设备以及存储介质 |
-
2008
- 2008-11-05 CN CNA2008101745177A patent/CN101388040A/zh active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101840400B (zh) * | 2009-03-19 | 2012-02-01 | 北大方正集团有限公司 | 一种多级分类检索方法及*** |
CN101840427A (zh) * | 2010-04-15 | 2010-09-22 | 北京数码大方科技有限公司 | 数据处理的方法和装置 |
CN101976242A (zh) * | 2010-09-26 | 2011-02-16 | 用友软件股份有限公司 | 生成业务对象的内部级次编码的方法和*** |
CN101976242B (zh) * | 2010-09-26 | 2012-12-05 | 用友软件股份有限公司 | 生成业务对象的内部级次编码的方法和*** |
CN109003031A (zh) * | 2018-10-09 | 2018-12-14 | 郑州云海信息技术有限公司 | 一种生产调试产品的方法、设备以及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11341139B2 (en) | Incremental and collocated redistribution for expansion of online shared nothing database | |
AU779250B2 (en) | Method and apparatus for populating multiple data marts in a single aggregation process | |
CN101183387A (zh) | 一种增量数据捕获方法和*** | |
CN101329676B (zh) | 一种数据并行抽取方法、装置和数据库*** | |
CN102893281A (zh) | 信息搜索设备、信息搜索方法、计算机程序和数据结构 | |
CN103544323A (zh) | 一种数据更新方法和装置 | |
CN103218402A (zh) | 通用的数据库数据结构与数据迁移***及其方法 | |
CN102782679A (zh) | 事件信息管理***、事件管理方法及程序 | |
CN101388040A (zh) | 一种数据结构管理方法及*** | |
JP2004030221A (ja) | 変更対象テーブル自動検出方法 | |
CN110879799B (zh) | 标注技术元数据的方法和装置 | |
Li et al. | ETL tool research and implementation based on drilling data warehouse | |
CN103198138A (zh) | 一种基于云计算的大规模热连轧数据主题定制*** | |
CN101578579A (zh) | 分类对象建模 | |
CN110929120A (zh) | 管理技术元数据的方法和装置 | |
US20130117230A1 (en) | Enablement of Quasi Time Dependency in Organizational Hierarchies | |
CN101441742A (zh) | 物料资源的管理方法及装置 | |
CN112015804A (zh) | 数据同步方法、装置、设备及存储介质 | |
CN101609462B (zh) | 一种个人数据空间环境下的任务识别***和方法 | |
CN104182438A (zh) | 一种消息的统计方法及装置 | |
CN107679245A (zh) | 一种组织架构调整方法及装置 | |
CN101393560A (zh) | 数据结构的处理方法及*** | |
CN102866892A (zh) | 一种电力设备软件的开发方法及平台 | |
US20100023535A1 (en) | Apparatus, method, and computer program product thereof for storing a data and data storage system comprising the same | |
CN101588456A (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 | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Open date: 20090318 |