数据结构的处理方法及系统的制作方法

文档序号:6467840阅读:174来源:国知局

专利名称::数据结构的处理方法及系统的制作方法
技术领域
:本发明涉及数据结构展开技术以及数据结构展开数据处理技术,尤其涉及一种数据结构的处理方法及系统。
背景技术
:物料清单(BOM,BillofMaterial)是计算机可以识别的产品结构数据文件,也是企业资源规划(ERP,EnterpriseResourcePlanning)的主导文4牛。BOM也叫产品结构或配方,用于记录物料(所述物料通常是完成品、或半成品、或部品)的组成情况,也即物料由哪些下级物料组成,以及每一下级物料的用量、对应的属性等。每一个BOM都是一个单层的物料组织结构,由一个父项物料和多个子项物料组成。由于BOM存在父项物料和子项物料的区别,因此,BOM中包含的每个物料都存在一个层级的概念。并且,除了最顶层物料和最底层物料之外,中间层级的物料既是其父项物料的子项物料,又是其子项物料的父项物料,由此,从最顶层产品向下由众多BOM构成一个产品树,该产品树由多层级的BOM组成。BOM展开就是从最顶层物料开始,将整个产品树中的物料逐层展开的过程,往往通过一些SQL算法或存储过程来实现。以电脑为例,电脑的BOM如图l所示,根据图l所示的电脑BOM进行BOM展开所获得的电脑BOM展开表如表1所示表1<table>tableseeoriginaldocumentpage4</column></row><table><table>tableseeoriginaldocumentpage5</column></row><table>BOM展开后,需要对得到的BOM展开表按层级和物料编码排序,在排序过程中,以层级逐层循环,判断各个物料的排列顺序。整个排序过程中需要创建多个临时表以完成排序。以下,以表l所示的BOM展开表为例进行现有技术BOM展开表按层级和物料编码排序的方法1)创建临时表A和临时表B;从BOM展开表中获取层级为1的物料插入临时表A,并按物料编码排序,将排序后的物料插入临时表B,之后,清除临时表A。本步骤完成后,所得到的临时表B的结构如表2所示表2<table>tableseeoriginaldocumentpage5</column></row><table>2)循环依次从BOM展开表中获取临时表B中层级为1的物料的下级物料,将获取到的下级物料插入临时表A,并按物料编码排序,将排完序的物料插入到临时表B中,插入的位置为所述下级物料对应的父项物料的下一行,插入时更新临时表B中物料的[排序顺序号],清除临时表A。在本例中,获取物料"主机"的下层物料,插入临时表A中,获取方法为根据"主机"的[物料内码]和其他物料的[父项物料内码]之间的对应关系进行获取,这里不再赘述。获取到的物料"主机"的下层物料插入临时表A后,临时表A的结构如表3所示;之后,将临时表A中的内容插入到临时表B的物料"主机"的下一行,此时,临时表B的结构如表4所示,其中,表4中粗线框出的部分即为插入的临时表A的内容。同样方法处理其他位于第1层级的子项物料,例如外设、说明书等。表3<table>tableseeoriginaldocumentpage6</column></row><table>3)使用和步骤102同样的方法,以位于第2层级的物料为父项物料循环插入位于第3层级的子项物料到临时表B中其父项物料下一行;如此循环,直到在临时表B中插入最后一层子项物料,最终得到按层级和物料编码排序的物料清单。如表5所示,为临时表B中插入"机箱"的子项物料之后的结构(所插入的机箱的子项物料以粗线框出)表5<table>tableseeoriginaldocumentpage7</column></row><table>本例中排序完毕后得到的物料清单如表6所示:表6<table>tableseeoriginaldocumentpage7</column></row><table><table>tableseeoriginaldocumentpage8</column></row><table>从上述现有技术的排序方法可知,这种方法每次需要两个临时表互相作为排序和插入的目标,并且,每次将临时表A中新一批排序后的物料插入到临时表B中时,从插入位置以下的所有物料的[排序顺序号]都必须重新排序,因此,每次插入并重新排序的才乘作的次数最大将可能达到(N1+N2+...+Nx)次(N为每层物料数),每次插入后重新排序的数量为[(Sn+Tn)n]次(n为插入的次数,S为每次新插入的物料数,T为每次插入位置之后的物料数)。从以上分析和描述可知,上述排序方法实现复杂,且无法充分利用数据库索引,性能较差,特别是在企业存在较大结构的BOM和较多层级的物料时,性能差的问题尤其明显。
发明内容有鉴于此,本发明要解决的技术问题是,提供一种数据结构的处理方法及系统,实现简单,排序迅速。为此,本发明实施例采用如下技术方案本发明提供了一种数据结构的处理方法,该方法包括当数据结构按层级展开时,判断当前所展开的数据元素是否为第1层级数据元素,如果是,根据该数据元素的数据元素标识码ID确定该数据元素的展开路径字段内容;否则,获取该数据元素的父项数据元素的展开路径字段内容,以所述父项数据元素的展开路径字段内容以及该数据元素的数据元素ID确定该数据元素的展开路径字段内容;当数据结构展开完成后,将数据结构展开表以展开路径字段为主字段进行排序。其中,所述根据该数据元素的数据元素ID确定该数据元素的展开路径字段内容具体为直接将数据元素的数据元素ID作为该数据元素的展开路径字段内容。所述以所述父项数据元素的展开路径字段内容以及该数据元素的数据元素ID确定该数据元素的展开路径字段内容具体为直接在所述父项数据元素的展开路径字段内容后添加该数据元素的数据元素ID作为该数据元素的展开路径字段内容;或者,在所述父项数据元素的展开路径字段内容后添加设定符号,之后,再将该数据元素的数据元素ID添加于所述设定符号之后,将获得的字符串作为该数据元素的展开路径字段内容。—.......______—.'—_______—.,—■_T|具体为将该数据元素的数据元素ID以设定字符补齐为设定的最大字段长度,将得到的字符串作为该数据元素的展开路径字段内容。所述以所述父项数据元素的展开路径字段内容以及该数据元素的数据元素ID确定该数据元素的展开路径字段内容具体为在父项数据元素的展开路径字段内容后添加该数据元素的以设定字符补齐为最大字段长度后的数据元素ID,将获得的字符串作为该数据元素的展开路径字段内容;或者,在父项数据元素的展开路径字段内容后添加设定符号,之后,再将该数据元素的以设定字符补齐为最大字段长度后的数据元素ID添加于所述设定符号之后,将获得的字符串作为该数据元素的展开路径字段内容。所述数据元素为物料,所述数据元素ID为物料编码或物料内码。本发明同时提供了一种数据结构的处理系统,该系统包括数据结构展开模块、数据元素属性确定模块、数据元素属性管理模块、以及排序模块;其中,数据结构展开模块,用于对具有层级结构的数据结构进行展开处理;数据元素属性确定模块,用于在BOM展开模块对BOM展开的过程中确定数据元素的包括展开路径在内的各个属性信息,并将确定的各个数据元素的属性信息发送给数据元素属性管理^f莫块;数据元素属性管理模块,用于对数据元素属性确定模块中确定的各个数据元素的属性信息进行管理;排序模块,用于对数据元素属性管理模块中管理的数据元素的属性信息以数据元素的展开路径字段为主字段进行排序。其中,数据元素属性确定模块进一步包括展开路径确定模块,用于根据数据元素的数据元素ID,或者,数据元素ID和该数据元素对应的父项数据元素的展开路径字段内容,确定该数据元素的展开路径字段内容;其他属性信息确定模块,用于确定数据元素的除展开路径之外的其他属性信息。对于上述技术方案的技术效果分析如下根据数据元素的数据元素ID和其父项数据元素的展开路径字段内容确定该数据元素的展开路径字段内容;当数据结构展开完成后,将获得的数据元素以展开路径字段为主字段进行排序,过程简单,排序过程中无需建立多个临时表,避免了复杂的SQL操作,提高了系统性能。图1为现有技术电脑BOM结构示例图2为本发明BOM的处理方法流程示意图3为本发明自行车BOM的处理方法流程示意图4为本发明BOM的处理系统结构示意图。具体实施例方式本发明的基本思想是在数据结构展开表中增加展开路径字段,并在展开过程中通过每个数据元素的数据元素ID(例如数据元素编码和数据元素内码等)和其父项数据元素的展开路径字段内容确定该数据元素的展开路径字段内容;当数据结构展开完成后,将数据元素以展开路径字段为主字段进行排序。.以下,通过具体实施例结合附图详细说明本发明数据结构的处理方法和系统的实现。在下述实施例中,将本发明所述数据结构的处理方法应用于物料的BOM展开中。所述物料的BOM对应本发明的数据结构;所述物料对应本发明中的数据元素;所述物料的BOM展开对应所述数据结构展开。同样的,本发明的凄t据结构的处理方法也可以应用于其他的业务或领域,只要该业务或领域中所包含的数据元素之间存在父项和子项的层级关系即可。图2为本发明BOM的处理方法流程示意图,如图2所示,该方法包括步骤201:为BOM展开表增加展开路径字段。所述展开路径字段用于描述对应物料的展开路径信息。在实际应用中,为展开路径字段设置的长度可以通过以下公式确定字段的最小长度=((物料ID的最大长度+1)x最大的BOM层级数)-1例如,设所使用的物料ID为物料编码,物料编码最大长度为6,BOM层级最大支持50层,则层级数为50,展开路径字段的最小长度就可以设定为((6+1)x50)-1=349。字段设置最小长度的限制是为了保证所有可能的情况下,BOM进行展开的展开路径信息都可以完整的保存,而不会出现由于长度限制,导致展开路径被截断,进而导致出现重复路径的可能。展开路径字段名称可以改变,这里并不限制。步骤202:当BOM展开时,判断当前所展开的物料是否为第1层级物料,如果是,执行步骤203;否则,执行步骤204。步骤203:根据该物料的物料ID确定该物料对应的展开路径字段的内容,并获取该物料的其他属性信息,执行步骤205。其中,在实际应用中,物料ID可以取物料内码、以及物料编码等,只要可以标识物料的唯一性即可。可以将物料内码或者物料编码直接作为该物料的展开路径字段的内容,或者,经过一定处理,例如,根据物料ID的最大长度,通过在物料ID之前添加设定的字符例如"0"对物料ID进行位数的补足,之后,再作为展开路径字段的内容。此时,在步骤204中,在物料的父项物料之后添加该物料的物料ID时,也需对该物料的物料ID进行相同处理。步骤204:获取当前所展开的物料的父项物料的展开路径字段内容,以该字段内容以及该当前所展开物料的物料ID确定当前物料的展开路径字段内容;并且,获取当前物料的其他属性信息;执行步骤205。本步骤中所述确定可以为直接将当前所展开物料的父项物料的展开路径字段内容之后添加所述当前所展开物料的物料ID;或者,所述父项物料的展开路径字段内容之后添加例如逗号、分隔符等字符进行分隔,之后,再添加当前所展开物料的物料ID。所述确定方法在图3所示的实例中也进行了说明。步骤205:确定当前所展开物料是否为BOM展开的最后一个物料,如果是,4丸行步骤206;否则,返回步骤202。字段进行排序,当前处理流程结束。在步骤206完成后,所得到的BOM展开表即为按照层级和物料ID排序之后的BOM展开表。及物料管^等以下,取物料ID为物料编码,以图1所示的电脑BOM结构实例,对本发明数据结构的处理方法进行进一步的说明。图3为本发明电脑BOM的处理方法流程示意图,如图3所示,该方法包括步骤301:为BOM展开表增加展开路径字段。步骤302:当BOM展开时,判断当前所展开的物料是否为第1层级物料,如果是,执行步骤303;否则,执行步骤304。在以下步骤中,分别以物料"主机"和其子项物料"机箱"为例。而在本步骤中,当当前所展开的物料为"主机"时,"主机,,为第l层级物料,则执行步骤303;当当前所展开的物料"机箱"时,"机箱,,不为第l层级物料,则执行步骤304。步骤303:将当前所展开物料的物料编码作为该物料的展开路径字段内容;确定该物料的—乂他属性信息。表7<table>tableseeoriginaldocumentpage13</column></row><table>如表7所示,物料"主机"位于第1层级,其[展开路径]取"00C002",为物料"主机,,自身的物料编码。并且,在图3所示的方法中,才艮据物料编码的最大长度,将"主机"的物料编码通过字符"0"补足为6位。步骤304:获取当前所展开物料的父项物料的展开路径字段内容,在所述父项物料的展开路径字段内容之后添加分隔符,之后,添加当前所展开物料的物料编码,将得到的字符串作为当前所展开物料的展开路径字段内容;并且,确定当前物料的其他属性信息。实例如表8所示表8<table>tableseeoriginaldocumentpage14</column></row><table>如表8所示,物料"主机"为物料"机箱"的父项物料,则"机箱"的[展开路径]为00C002|00C005;同样道理,"机箱"的子项物料"电源"的[展开路径]为00C002|00C005|00C008。步骤305:确定当前物料是否为BOM展开中的最后一个物料,如果是,执行步骤306;否则,返回步骤302。当当前物料为最后一个物料时,即完成了BOM的展开,此时,图l所示的电脑BOM展开所获得的BOM展开表如表9所示表9<table>tableseeoriginaldocumentpage14</column></row><table><table>tableseeoriginaldocumentpage15</column></row><table>步骤306:对获得的BOM展开表以展开路径字段为主字段进行排序。执行本步骤之后,表9所示的BOM展开表如表10所示表10<table>tableseeoriginaldocumentpage15</column></row><table><table>tableseeoriginaldocumentpage16</column></row><table>从表10可以看出,以展开路径字段作为主字段进行排序后,所得到的BOM展开表即实现了按物料层级和物料编码进行排序,完成了本发明的发明目的。在图3所示的本发明物料BOM的处理方法中,在BOM展开表中增加展开路径字段,并根据物料的物料ID和其父项物料的展开路径字段内容确定该物料的展开路径字段内容;当BOM展开完成后,将获得的BOM展开表以展开路径字段为主字段进行排序,即可得到按层级和标识码排序的BOM展开表,过程简单,排序过程中无需建立多个临时表,避免了复杂的SQL操作,提高了系统性能。以下,同样将本发明所述数据结构的处理系统应用于物料的BOM展开中。所述物料的BOM对应本发明的数据结构;所述物料对应本发明中的数据元素;所述物料的BOM展开对应所述数据结构展开。同样的,本发明数据结构的处理系统也可以应用于其他的业务或领域,只要该业务或领域中所包含的数据元素之间存在父项和子项的层级关系即可。图4为本发明物料清单展开表按层级和标识码排序的系统结构示意图,如图4所示,该系统包括BOM展开4莫块410、物^F属性确定才莫块420、物料属性管理模块430、以及排序模块440;其中,BOM展开才莫块410,用于对BOM进4亍展开处理。物料属性确定模块420,用于在BOM展开模块410对BOM展开的过程中确定物料的包括展开路径在内的各个属性信息,并将确定的各个物料的属性信息发送给物料属性管理模块430。其中,物料属性确定模块420可以进一步分为两个模块,分别为展开路径确定模块4201,用于确定当前物料的展开路径信息;进一步地,确定当前物料为第1层级物料时,直接根据物料ID确定该物料的展开路径信息;确定当前物料不是第1层级物料时,根据当前物料父项物料的展开路径和当前物料的物料ID确定该物料的展开路径信息。其他属性信息确定模块4202,用于确定物料的除展开路径之外的其他属性信息。物料属性管理模块430,用于对物料属性确定^f莫块420中确定的各个物料的属性信息进行管理。其中,物料属性管理模块430可以以数据表的形式进行所述物料属性信息的管理。排序模块440,用于对物料属性管理模块430中管理的物料的属性信息以物料的展开路径字段为主字段进行排序。本领域普通技术人员可以理解,实现上述实施例数据结构处理方法的过程可以通过程序指令相关的硬件来完成,所述的程序可以存储于可读取存储介质中,该程序在执行时执行上述方法中的对应步骤。所述的存储介质可以如ROM/RAM、磁碟、光盘等。以上所述仅是本发明的优选实施方式,应当指出,对于本
技术领域
的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。权利要求1、一种数据结构的处理方法,其特征在于,该方法包括当数据结构按层级展开时,判断当前所展开的数据元素是否为第1层级数据元素,如果是,根据该数据元素的数据元素标识码ID确定该数据元素的展开路径字段内容;否则,获取该数据元素的父项数据元素的展开路径字段内容,以所述父项数据元素的展开路径字段内容以及该数据元素的数据元素ID确定该数据元素的展开路径字段内容;当数据结构展开完成后,将数据结构展开表以展开路径字段为主字段进行排序。2、根据权利要求1所述的方法,其特征在于,所述根据该数据元素的数据元素ID确定该数据元素的展开路径字段内容具体为直接将数据元素的数据元素ID作为该数据元素的展开路径字段内容。3、根据权利要求2所述的方法,其特征在于,所述以所述父项数据元素的展开路径字段内容以及该数据元素的数据元素ID确定该数据元素的展开路径字段内容具体为直接在所述父项数据元素的展开路径字段内容后添加该数据元素的数据元素ID作为该数据元素的展开路径字段内容;或者,在所述父项数据元素的展开路径字段内容后添加设定符号,之后,再将该数据元素的数据元素ID添加于所述设定符号之后,将获得的字符串作为该数据元素的展开路径字段内容。4、根据权利要求1所述的方法,其特征在于,所述根据该数据元素的数据元素ID确定该数据元素的展开路径字段内容具体为将该数据元素的数据元素ID以设定字符补齐为设定的最大字段长度,将得到的字符串作为该数据元素的展开路径字段内容。5、根据权利要求4所述的方法,其特征在于,所述以所述父项数据元素的展开路径字段内容以及该数据元素的数据元素ID确定该数据元素的展开路径字段内容具体为在父项数据元素的展开路径字段内容后添加该数据元素的以设定字符补齐为最大字段长度后的数据元素ID,将获得的字符串作为该数据元素的展开路径字段内容;或者,在父项数据元素的展开路径字段内容后添加设定符号,之后,再将该数据元素的以设定字符补齐为最大字段长度后的数据元素ID添加于所述设定符号之后,将获得的字符串作为该数据元素的展开路径字段内容。6、根据权利要求1至5任一项所述的方法,其特征在于,所述数据元素为物料,所述数据元素ID为物料编码或物料内码。7、一种数据结构的处理系统,其特征在于,该系统包括数据结构展开模块、数据元素属性确定模块、数据元素属性管理模块、以及排序模块;其中,数据结构展开模块,用于对具有层级结构的数据结构进行展开处理;数据元素属性确定模块,用于在BOM展开模块对BOM展开的过程中确定数据元素的包括展开路径在内的各个属性信息,并将确定的各个数据元素的属性信息发送给数据元素属性管理模块;数据元素属性管理模块,用于对数据元素属性确定模块中确定的各个数据元素的属性信息进行管理;排序模块,用于对数据元素属性管理模块中管理的数据元素的属性信息以数据元素的展开路径字段为主字段进行排序。8、根据权利要求7所述的系统,其特征在于,数据元素属性确定模块进一步包括展开路径确定模块,用于根据数据元素的数据元素ID,或者,数据元素ID和该数据元素对应的父项数据元素的展开^各径字段内容,确定该数据元素的展开路径字段内容;其他属性信息确定模块,用于确定数据元素的除展开路径之外的其他属性信息。全文摘要本发明公开了一种数据结构的处理方法,在该方法中,数据结构展开过程中,通过数据元素的数据元素ID和其父项数据元素的展开路径字段内容确定该数据元素的展开路径字段内容;当数据结构展开完成后,将展开得到的数据元素以该展开路径字段为主字段进行排序。本发明同时公开了一种数据结构的处理系统,该方法和系统实现简单,排序迅速,提高了系统性能。文档编号G06F17/30GK101393560SQ200810174518公开日2009年3月25日申请日期2008年11月5日优先权日2008年11月5日发明者馗王申请人:金蝶软件(中国)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1