用于管理祖先树的方法和系统的制作方法

文档序号:6457878阅读:106来源:国知局
专利名称:用于管理祖先树的方法和系统的制作方法
技术领域
本发明总地涉及数据处理系统,具体而言涉及订单管理系统。更 具体地说,本发明涉及用于对包含嵌套部件的子配件进行实时识别的 计算机实施的方法、装置和计算机程序产品。
背景技术
现代制造经常涉及多级装配工艺。首先, 一组部件(part)被装 配在一起形成子配件(sub-assembly)。其次,这些子配件被进一步 装配成更复杂的子配件。利用子配件来建立更大的子配件的过程一直 持续,直到生产出成品为止。因而,成品可以是由多个嵌套的子配件 构成的复杂结构。例如,硬盘驱动器可以是驱动器托盘子配件的一个 部件,驱动器托盘子配件可以是抽屉子配件的一个部件,而抽屉子配 件可以是完整的服务器的一个部件。当多个部件被深度嵌套在子配件或成品中时,能够找到包含特定 部件的最高级子配件是很重要的。例如,当一个特定部件被发现是有 缺陷的时,能够找到包含该有缺陷部件的所有最高级子配件以便替换 有缺陷部件是有用的。当前,软件应用被用于执行生产后分析以确定哪些产品包含特定 部件。生产后分析递归地分析子配件以确定包含特定部件的最高级产 品。由于分析是在生产后而不是实时执行的,因此当部件已被装配到 成品中时才执行分析。发明内容这里描述的不同实施例提供了 一种用于管理祖先树的计算机实 施的方法、装置和计算机程序产品。接收制造产品的订单。创建祖先树。祖先树包括一组节点,其中每个节点代表产品的一个部件。接收 确定包含特定部件的更高级子配件的请求。在祖先树中定位特定部件 的节点。返回在特定部件的节点中的祖先指针。祖先指针指示包含该 部件的更高级子配件。


在所附权利要求中给出了被认为是本发明的特性的新颖特征。但 是,结合附图参考下面对说明性实施例的详细描述将最好地理解本发明自身及其优选使用方式、其他目的和优点,在附图中图1示出了根据说明性实施例的数据处理系统的网络的图解表示;图2是可以实现说明性实施例的数据处理系统的框图;图3是根据说明性实施例的祖先树(ancestry tree )的图;图4是根据说明性实施例具有父亲和孩子指针的祖先树的框图;图5是根据说明性实施例包含有缺陷部件的祖先树的框图;图6是根据说明性实施例包含三级部件的祖先树的框图;图7是根据说明性实施例其中一个部件被发现是有缺陷的并且 变为孤儿的祖先树的框图;图8A和8B —起是根据说明性实施例示出了在一个新的部件被 添加到祖先树中之前该新部件的祖先树的框图;图9A和9B —起是根据说明性实施例示出了在一个新的部件被 添加到祖先树中之后该新部件的祖先树的框图;图io是根据说明性实施例的简化制造体系结构的框图;图11是根据说明性实施例用于创建并维护祖先树的过程的流程图;图12是根据说明性实施例用于从祖先树中去除部件的过程的流 程图;以及图13是根据说明性实施例用于向祖先树添加部件的过程的流程图。
具体实施方式
现在参考附图,具体而言参考图1和2,图1和2提供了可以实 现说明性实施例的数据处理环境的示例图。应当意识到,图1和2仅 是示例性的,而并不是要表明或暗示对可以实现不同实施例的环境的 任何限制。可以对图示环境进行许多修改。图1示出了可以实现说明性实施例的数据处理系统的网络的图 解表示。网络数据处理系统IOO是可以实现实施例的计算机网络.网 络数据处理系统100包含网络102,网络102是用于提供在网络数据 处理系统100内连接在一起的各种设备和计算机之间的通信链路的介 质。网络102可以包括多种连接,例如有线线路、无线通信链路或光 缆。在图示的例子中,服务器104和服务器106与存储单元108 —起 连接到网络102。另外,客户端IIO、 112和114连接到网络102。客 户端110、 112和114例如可以是个人计算机或网络计算机。在图示 的例子中,服务器104向客户端110、 112和114提供数据,例如引 导文件、操作系统映像和应用程序。在该例子中,客户端110、 112 和114是服务器104的客户端。网络数据处理系统IOO可以包括未示 出的其它服务器、客户端和其他设备。在图示的例子中,网络数据处理系统100是因特网,网络102 代表使用传输控制协议/因特网协议(TCP/IP)协议组来相互通信的 网络和网关的全球集合。因特网的核心是主要节点或主机之间的高速 数据通信线路的主干线,而所述主要节点或主机由路由数据和消息的 千万个商业、政府、教育和其他计算机系统组成。当然,网络数据处 理系统IOO也可以被实现为多种不同类型的网络,例如内联网、局域 网(LAN)或广域网(WAN)。图1仅是举例说明,并不是对不同 实施例的体系结构的限制。现在参考图2,图2示出了可以实现说明性实施例的数据处理系 统的框图。数据处理系统200是诸如图1中的服务器104或客户端110之类的计算机的例子,其中可以存储有实施用于说明性实施例的不同 处理过程的计算机可用代码或指令。在图示的例子中,数据处理系统200采用集线器体系结构,包括 北桥和存储器控制器集线器(MCH)202以及南桥和输入/输出(I/O) 控制器集线器(ICH) 204。处理单元206、主存储器208和图形处理 器210耦合到北桥和存储器控制器集线器202。处理单元206可以包 含一个或多个处理器,甚至可以利用一个或多个异构处理器系统实 现。图形处理器210可以通过例如加速图形端口(AGP )耦合到MCH。在图示的例子中,局域网(LAN)适配器212耦合到南桥和I/0 控制器集线器204,并且音频适配器216、键盘和鼠标适配器220、调 制解调器222、只读存储器(ROM) 224、通用串行总线(USB)端 口和其他通信端口 232、以及PCI/PCIe设备234通过总线238耦合到 南桥和I/O控制器集线器204,并且硬盘驱动器(HDD) 226和 CD-ROM驱动器230通过总线240耦合到南桥和I/O控制器集线器 204。 PCI/PCIe设备例如可以包括以太网适配器、插入(add-in)卡 和用于笔记本电脑的PC卡。PCI使用卡总线控制器,而PCIe并不 使用。ROM 224可以是例如闪存二进制输入/输出系统(BIOS)。硬 盘驱动器226和CD-ROM驱动器230可以4吏用例如集成驱动电子i殳 备(IDE)或串行高级技术附接(SATA)接口。超级I/O (SIO)设 备236可被耦合到南桥和I/O控制器集线器204。操作系统运行在处理单元206上并且对图2的数据处理系统200 中的各种組件进行协调并提供控制。该操作系统可以是商业上可获得 的操作系统,比如Microsoft⑧的Windows XP。( Microsoft和Windows 是在美国、其他国家或两者都有的微软公司的商标)。诸如JavaTM 程序设计系统等面向对象的程序设计系统可与操作系统一同运行并 从运行在数据处理系统200上的Java程序或应用提供对操作系统的 调用。(Java和所有基于Java的商标都是在美国、其他国家或两者 都有的Sun Microsystems公司的商标)。用于操作系统、面向对象的程序设计系统和应用或程序的指令位于诸如硬盘驱动器226之类的存储设备上,并且可以加载到主存储器 208中以供处理单元206执行,说明性实施例的处理过程可以由处理 单元206利用计算机实施的指令来执行,计算机实施的指令可以位于 诸如主存储器208、只读存储器224之类的存储器中,或者位于一个 或多个外围设备中。图l和2中的硬件可以根据实施方案而变。可以使用其他内部硬 件或外围设备(例如闪存、等效的非易失性存储器或光盘驱动器等) 作为对图l和2中所示的硬件的补充或替换。另外,说明性实施例的 处理过程可以应用于多处理器数据处理系统。在某些说明性的例子中,数据处理系统200可以是个人数字助理 (PDA),其一般配置有闪存以提供用于存储操作系统文件和/或用户 生成数据的非易失性存储器。总线系统可以由一条或多条总线构成, 例如系统总线、1/0总线和PCI总线。当然,总线系统可以利用任何 类型的通信架构或体系结构实现,这种通信架构或体系结构实现了附 接到该架构或体系结构的不同组件或设备之间的数据传输。通信单元 可以包括用于发送和接收数据的一个或多个设备,例如调制解调器或 网络适配器。存储器可以例如是主存储器208或诸如在北桥和存储器 控制器集线器202中找到的緩存。处理单元可以包括一个或多个处理 器或CPU。图1和2中的图示的例子以及上述例子并不是要暗示对体 系结构的限制。例如,数据处理系统200除了采用PDA形式以外, 也可以是平板计算机、膝上型计算机或电话设备。现代制造一般涉及这样一个过程,其中多个部件最初被装配在一 起形成子配件,这些子配件与附加的部件一起被进一步装配成更复杂 的子配件。装配子配件以产生更多子配件的过程持续,直到生产出成 品为止。成品是制造商生产的最高级别的子配件.因而,成品可以包含多 个嵌套的子配件。在下面给出的例子中,术语"子配件"应当理解为包 括成品。由一个制造商生产的成品可以被不同制造商用作部件或子配件。例如, 一个制造商可以将各种部件装配在一起产生硬盘驱动器。笫二 制造商可以将硬盘驱动器用作驱动器托盘子配件的一个部件,而驱动 器托盘子配件又是完整的服务器的一个部件。完整的服务器可以是第 二制造商的成品,但是又可以被笫三制造商用作一个部件来生产另一 成品,例如容错事务处理器。制造商经常使用材料表(BOM)来描述产品的子配件和基本部 件。材料表一般用于描述制造商重复制造的成品或子配件。当制造商在许多不同产品中或者在同一产品的不同位置中使用 一个特定的子配件时,制造商通过向该子配件分配唯一的工作单元 (work unit)来区分每种使用。例如,服务器在一个架子上可能具有 三个硬盘驱动器子配件, 一个硬盘驱动器子配件在左边, 一个在中间, 一个在右边。每个硬盘驱动器子配件具有相同的材料表,但是通过给 每个硬盘驱动器子配件分配不同的工作单元而使每个硬盘驱动器子 配件相互区分。当多个部件被深度嵌套在子配件中时,能够实时地找到包含特定 部件的最高级别子配件是很重要的。例如,当一个部件已被识别为有 缺陷的时,能够快速找到包含有缺陷部件的所有子配件从而可以替换 有缺陷部件是很重要的。在传统系统中,软件应用执行生产后分析以构造祖先树并识别哪 些产品包含哪些部件。在生产后分析中,子配件被递归地分析以识别 包含特定部件的最高级产品。递归意味着成品被反复分析并分解为部 件和子配件。例如,成品可能由多个部件和几个子配件组成。每个子 配件随后被进一步分析并分解为部件和子配件,直到成品中的所有子 配件都已被分解为组成部件为止。由于分析是在生产后进行的,因此该分析通常是在部件已被装配 到成品或复杂子配件中之后进行的。因此,当在生产后进行分析时, 一般而言,需要更多的努力来替换有缺陷部件,这是因为该部件已经 结合到更高级的配件或成品中。本发明的实施例认识到,如果分析是实时进行的,则可以在子配件被结合到成品中之前较早地在子配件中发现部件。有缺陷部件一般 更易于在较小的包含该部件的子配件中替换,而不是在该部件已经结 合到几个子配件中并随后结合到成品中之后。这里描述的不同实施例提供了一种用于管理祖先树的计算机实 施的方法、装置和计算机程序产品。接收制造产品的订单。创建祖先 树。祖先树包括一组节点,其中每个节点代表产品的一个部件。接收 确定包含特定部件的更高级子配件的请求。在祖先树中定位特定部件 的节点。返回在特定部件的节点中的祖先指针。祖先指针指示包含该 部件的更高级子配件。许多子配件通常是由提供商装配并提供的。为了供制造商实时地 跟踪祖先树,如果提供商提供一个子配件,则提供商还向制造商提供 该子配件的材料表。祖先树由含有一个或多个节点的一组节点构成,其中每个节点都 代表部件。部件可以指不能被进一步分解的个体部件,或者部件可以 指子配件。每个节点的数据结构通常包含指向更高级子配件的指针和 指向父亲子配件的指针。更高级子配件可以是父亲子配件、祖父子配 件或者包含该部件的任何更高级子配件。每个节点的数据结构还可以包含指向该部件的零个或更多个孩 子的一组指针。如果一个节点是由其他部件构成的子配件,则该节点 的数据结构一般包含一个或多个孩子指针。另一方面,如果一个节点 是不能被进一步分解的个体部件,则该节点的数据结构将具有零个孩 子指针。本领域技术人员将意识到,祖先树中每个节点的数据结构可以包 含额外的字段和信息。例如,该数据结构可以包含附加信息,例如该 部件在何处制造、制造该部件所需的时间或者该部件的其他制造商。图3是根据说明性实施例的祖先树。祖先树300图示了成品是如 何使用多个子配件和部件产生的。部件302、 304和306被用于产生 子配件308。部件312、 312和314被用于产生子配件316。子配件308 和316被用作产生子配件318的部件。子配件318与部件320和322一起被用于产生子配件324。子配件324与部件326、 328、 330和332 —起被用于产生子配件 334。部件336和338被用于产生子配件340。子配件340与部件342 相结合以产生子配件344。子配件334和344以及部件346、 348和 350被用于产生成品352。在该例中,五级嵌套子配件和部件构成了成品352。部件302、 304、 306、 310、 312和314构成第一级。子配件308和316构成第二 级。子配件318与部件320、 322、 336和338构成第三级。子配件324 和340与部件326、 328、 330、 332和342构成第四级。子配件334 和344与部件346、 348和350构成笫五级。这个例子图示了诸如成品352之类的产品是如何可以包含多个 子配件的,其中每个子配件可以包含附加的子配件,如果处于较低级 的部件被识别为有缺陷的,则重要的是识别包含有缺陷部件的所有更 高级子配件从而可以替换有缺陷部件。图3是可以被构造并用于识别 包含特定部件的所有更高级子配件的祖先树的例子。通过保存一个复杂成品的祖先树(其中根节点是该成品),可以 实时地保存每个子配件或部件与根节点之间的关系。当装配计划被首 次发送到制造环节时,产品树被初始化。随着产品的制造,在每次添 加子配件时,与子配件相对应的子树就被添加到产品的祖先树。如果发现有缺陷的部件,则识别包舍有缺陷部件的子配件。与包 含有缺陷部件的子配件相对应的每个子树被从树中去除。与替换子配 件相对应的子树被插入到树中,以替换包含有缺陷部件的子配件.向祖先树中添加部件和子树并从祖先树中去除部件和子树的过程在下 面的例子中将更详细地描述。图4是根据说明性实施例的具有父亲指针和孩子指针的祖先树。 具有父亲和孩子指针的祖先树400图示了诸如图3中的子配件308之 类的子配件是如何利用部件402、 404和406产生的。在这个例子中,部件402、 404和406被用于产生子配件408。 在这个例子中使用的祖先树数据结构具有四个字段指向最高级祖先的指针、详细数据字段、指向父亲的指针和指向所有孩子的(一个或 多个)指针。指针是其数值直接标引("指向")存储在别处的另一值的数据。在这个例子中,部件402、 404和406是孩子,而父亲是子 配件408。在部件402的数据结构中,字段410包含指向最高级祖先的指针, 字段412包含关于该部件的详细数据,字段414包含父亲指针,字段 416包含(一个或多个)孩子指针。部件402不是子配件,不可以被 进一步分解为更多的部件。因此,字段416具有空指针,指示部件402 没有孩子。部件402是子配件408的部件,因此,字段414包含指向 父亲子配件(部件408 )的指针。部件408也是部件402的最高级祖 先,因此,字段410指向部件408。在部件404的数据结构中,字段418包含指向最高级祖先的指针, 字段420包含关于该部件的详细数据,字段422包含父亲指针,字段 424包含(一个或多个)孩子指针。字段420中的详细数据提供了关 于该部件的信息,例如部件号、该部件被制造的位置以及可以替换部 件404的等效部件的列表。本领域技术人员将意识到,在字段420中 可以提供各种类型的信息,作为对这里给出的例子的补充或替代。部件404不是子配件,因此,字段424具有空指针,指示部件 404没有孩子。部件404是子配件408的部件。因此,字段422包含 指向父亲子配件(部件408)的指针。部件408也是部件404的最高 级祖先,因此,字段418指向部件408。在部件406的数据结构中,字段426包含指向最高级祖先的指针, 字段428包含关于该部件的详细数据,字段430包含父亲指针,字段 432包含(一个或多个)孩子指针。部件406不是子配件,因此,字 段432具有空指针,指示部件406没有孩子。部件406是子配件408 的部件。因此,字段430包含指向父亲子配件(部件408)的指针。 部件408也是部件406的最高级祖先,因此,字段426指向部件408。在部件408的数据结构中,字段434包含指向最高级祖先的指针, 字段436包含关于该部件的详细数据,字段438包含父亲指针,字段440包含(一个或多个)孩子指针。部件408是子配件,因此,字段 440具有指向孩子(部件402、 404和406)的三个指针。在装配过程 中的这一点处的部件408不是子配件的部件。因此,字段438包含空 指针,指示部件408没有父亲子配件。部件408也是部件408的最高 级祖先,因此,字段434指向部件408。图5是根据说明性实施例的包含有缺陷部件的祖先树。包含有缺 陷部件的祖先树500图示了当一个部件被确定为有缺陷时,诸如图3 中的子配件308之类的子配件所发生的事情。在这个例子中,图4中的部件406假定是有缺陷的,并且被部件 502替换。这个例子图示了当发现有缺陷部件时祖先指针、父亲指针 和孩子指针是如何动态更新的。在图5中,部件402和404与图4没 有变化。但是, 一旦部件406被确定为有缺陷的,部件406就变为孤儿, 并且指针字段被相应更新。字段426被更新使得指向最高级祖先的指 针指向部件406而不是部件408。由于部件406不再有父亲,因此字 段430中的父亲指针被设为空。部件502用于替换有缺陷部件406,并且适当的指针字段被更新。 在子配件408中,字段440中指向部件406的孩子指针被替换为指向 部件502的指针。在部件502中,字段504被更新以使得指向最高级 祖先的指针指向部件408。字段506包含关于部件502的详细数据。 字段508中的父亲指针被更新为指向部件408。字段510中的孩子指 针保持为空,因为部件502没有孩子部件。图6、 7、 8A、 8B、 9A和9B—起图示了当一个部件是子配件时 在祖先树中是如何替换该部件的。描述祖先树,确定一个部件是有缺 陷的,引入新的部件,并且随后利用新的部件来替换祖先树中的有缺 陷部件。图6是根据说明性实施例的包含三级部件的祖先树。包含三级部 件的祖先树600示出了诸如图3中的子配件318之类的子配件是如何 由其他子配件构成的。为了简化,只讨论每个部件的数据结构的相关字段,但是应当理解,每个数据结构可以具有附加的字段,例如前迷 的那些字段。在这个例子中,部件602是通过组合部件604和部件606而构成 的子配件。部件604和606各自也是子配件。部件604由部件608、 610和612构成。部件606由部件614、 616和618构成。在部件602的数据结构中,最高级祖先指针(字段620)被设为 指向部件602。由于部件602当前并不用作任何其他子配件的部件, 因此字段622将父亲指针设为空。由于部件602具有两个孩子,因此 字段624将孩子指针^:为指向部件604和部件606。在部件604的数据结构中,最高级祖先指针(字段626)被设为 指向部件602。由于部件604是子配件602的部件,因此字段628将 父亲指针设为部件号602。由于部件604具有三个孩子,因此字段630 具有指向孩子(部件608、 610和612)的指针。在部件608的数据结构中,最高级祖先指针(字段632)被设为 指向部件602。由于部件608是子配件604的部件,因此字段634将 父亲指针设为部件号604。由于部件608没有孩子,因此字段636为 空。部件610和612的数据结构中的字段类似于部件608的字段。例 如,字段638和640中指向最高级祖先的指针被设为指向部件602。 部件606、 614、 616和618的字段分别类似于部件604、 608、 610和 612的部件字段。由于子配件602是图6中所有部件的最高级祖先, 因此部件602-618的^且先指针被^L为指向部件602。部件608-618并 不由其他部件构成,因此部件608-618的孩子指针为空。如果发现有缺陷部件,则包含有缺陷部件的子配件被从树中去 除,并且与替换子配件相对应的子树被插入到树中,以替换包含有缺 陷部件的子配件。例如,如果子配件604是有缺陷的,则子配件604 可以被另一子配件替换。图7是根据说明性的实施例,其中一个部件被发现是有缺陷的并 且变为孤儿的祖先树。图7是当一个部件被确定为有缺陷时如何从祖先树中去除子配件的例子。在其中一个部件被发现是有缺陷的并且变为孤儿的祖先树700 中,确定子配件604是有缺陷的。替换有缺陷子配件的第一步是去除 子配件604。当配件604被从子配件602中去除时,对各个指针进行 下面的改变。在子配件602中,指向部件604的指针被从字段624中去除以指 示部件604不再是子配件602的孩子。在子配件604中,字段628中 的父亲指针变为空以指示子配件604不再是子配件602的部件。在子 配件604中,最高级祖先从部件602变为部件604以指示部件604不 再用在子配件602中,因此最高级祖先是部件604。字段632、 638和 640中的最高级祖先指针也发生改变以指示部件608、 610和612的最 高级祖先分别是子配件604。图8A和8B—起是根据说明性实施例的一个祖先树,其中示出 了在一个新的部件被添加到祖先树中之前的该新部件。祖先树800示 出了在新部件被添加到祖先树中之前该新部件和祖先树中的指针。新 部件被添加用来替换有缺陷部件。在这个例子中,新部件是一个子配件,并且有缺陷部件也是子配 件。本领域技术人员将意识到,这里描述的技术可以用在新部件是个 体部件或子配件时。在图8A中,子配件802是代表将替换子配件602中的子配件604 的新部件的数据结构。子配件802由部件804、 806和808构成。图 8A示出了子配件802中的指针值。在子配件802中,字段810中的 最高级祖先指针最初被设为指向子配件802。在被添加到子配件602 的祖先树中之前,字段812中的父亲指针被设为空。字段814中的孩 子指针指向部件804、 806和808。在部件804、 806和808中,字段816、 822和828中的最高级祖 先指针被设为指向子配件802。字段818、 824和830中的父亲指针也 被设为指向子配件802。在部件804、 806和808中,字段820、 826 和832中的孩子指针分别被设为空。图8B表明子配件604是孤儿并且不再是子配件602的孩子。图9A和9B —起是根据说明性实施例的一个祖先树,其中示出 了在一个新的部件被添加到祖先树中之后的该新部件。祖先树900示祖先树中的指针。在这个例子中,部件802替换子配件602的祖先树中的部件604, 并且部件602、 802、 804、 806和808中的指针字段按如下方式更新。 在图9A中,字段812中的父亲指针被从空变为指向部件602,这是 因为部件802现在是子配件602的部件。祖先字段810、 816、 822和 828被更新以指示部件602现在是最高级祖先。在图9B中,字段624中的孩子指针通过添加指向部件802的指 针来进行修改,这是因为部件802现在是子配件602的部件。被确定 为有缺陷的子配件604仍然是子配件602的孤儿。这样就构造了祖先树,其中该树的每个节点代表一个部件。部件 可以是个体组件或子配件。每个节点是包含有关该节点的信息以及有 关该节点与其他节点的关系的信息的数据结构。每个节点可以包含不同类型的指针,例如祖先指针、父亲指针和 指向孩子节点的指针。节点中的祖先指针指向最高级子配件,其中该 节点是最高级子配件的一个部件。如果该节点是子配件的一个部件, 则该节点包含指向父亲子配件的父亲指针。如果该节点是子配件,则 该节点包含指向构成子配件的每个孩子节点的指针。关于该节点的附 加信息也可以被包含在该节点的数据结构中。对祖先树中的节点可以执行各种操作。可以创建新的节点,可以 破坏现有的节点。节点与该节点的孩子一起可以被添加到祖先树中作 为另一节点的孩子。作为另一节点的孩子的节点可以变为孤儿,使得 该节点不再是任何节点的孩子。当对祖先树中的节点执行操作时,祖先指针、父亲指针或者(一 个或多个)孩子指针中的至少一个被修改。具体而言,每个节点总是 知道该节点所属的最高级部件,从而每个部件的最高级祖先可以被快速识别。无论何时,每个节点都只有单个祖先节点。图10示出了根据说明性实施例的简化的制造体系结构。简化的 制造体系结构1000图示了制造环境中的基本组成部分,并且示出了创建并维护祖先树的软件可以被放置在制造环境中的何处。在这个例子中,客户1002、 1004和1006分别发出订单1008、 1010和1212。订单1008、 1010和1212被订单管理系统(OMS) 1014 接收。订单管理系统1014将订单发送到制造资源规划(MRP)或企 业资源规划(ERP)系统1016中。制造资源规划系统1016连接到其 他系统,包括采购1018、库存管理1020、运输1022和车间控制器1024。车间控制器1024 —般是被用于管理制造产品的各种设备的软件 和硬件。车间控制器1024可以通过网络(例如网络1026)连接。网 络1026可以是有线网络、无线网络或同时使用有线和无线技术提供 连接到网络1026的各种网络组件之间的通信的网络。例如,网络1026 可以使用诸如铜双绞线、以太网、通用仪器总线(GPIB)和光纤之 类的有线技术以及诸如IEEE 802.11和蓝牙之类的无线技术。各种工作站连接到网络1026以控制制造设备。在这个例子中, 工作站1028、 1030和1032连接到网络1026。工作站1028控制设备 1034,工作站1030控制设备1036,工作站1032控制设备1038和1040。本领域技术人员将意识到,图10中所示的工作站和设备的数目 仅是用于说明目的。在制造环境中,多个工作站可以附接到网络1026, 并且每个工作站可以控制多个设备。工作站1042附接到车间控制器1024。软件1044运行在工作站 1042上。软件1044利用车间控制器1024创建并维护制造的货物的祖 先树。在这个例子中,工作站1042被示为附接到车间控制器1024。 但是,在另一实施例中,工作站1042可以利用网络1026连接到制造 设备。图11是根据说明性实施例用于创建并维护祖先树的过程的流程 图。图11中所述的过程由软件过程(例如图10中的软件1044)执行。 该过程开始于接收到制造产品的订单时(步骤1102)。该订单可以是例如订单配置(CTO)或订单生产(BTP)。创建并初始化祖 先树(步骤1104)。可选地,如果用于生产产品的子配件由提供商提 供,则该过程从提供商接收关于子配件的信息(步骤1106)。提供商 提供关于该子配件的足够信息以构造子配件的祖先树,例如关于各个 组件的信息,以及各个組件之间的父亲和孩子关系。该过程接收关于用于构成产品的一个部件已被确定为是有缺陷 的信息(步骤1108 )。该过程使用包含在祖先树的每个节点的数据结 构中的祖先指针来识别包含有缺陷部件的所有最高级祖先部件(步骤 1110)。该过程从祖先树中去除包含有缺陷部件的最高级祖先部件(步 骤1112)。在祖先树中,对于包含有缺陷部件的最高级祖先部件,更 新指向最高级祖先、父亲和孩子的指针(步骤1114)。对于包含有缺陷部件的每个最高级祖先部件识别替换部件(步骤 1116)。将一个或多个替换部件添加到祖先树中(步骤1118)。在祖 先树中更新指向最高级祖先、父亲和孩子的指针(步骤1120),然后 该过程结束。图12是根据说明性实施例用于从祖先树中去除部件的过程的流 程图。图12中所述的过程由软件过程(例如图10中的软件1044)执 行。该过程开始于接收到从祖先树中去除部件的请求时(步骤 1202)。根据部件中的父亲指针识别该部件的父亲节点(步骤1204)。 在父亲节点中,去除指向该部件的孩子指针(步骤1206).在该部件 中,去除指向父亲节点的父亲指针(步骤1208)。在该部件中,祖先 指针被设为指向该部件(步骤1210)。如果该部件具有孩子指针,则在每个孩子中,将祖先指针变为指 向该部件的指针(步骤1212),然后该过程结束。步骤1212是可选 的,并且只在该部件具有孩子指针时执行。图13是根据说明性实施例用于向祖先树添加部件的过程的流程 图。图13中所述的过程由软件过程(例如图10中的软件1044)执行。该过程开始于接收到向祖先树添加部件的请求时(步骤1302)。一般根据请求中的信息识别将成为该部件的父亲节点的节点(步骤1304)。在父亲节点中,添加指向该部件的孩子指针(步骤1306)。 在该部件中,添加指向父亲节点的父亲指针(步骤1308)。利用父亲节点中的祖先指针识别父亲节点的最高级祖先(步骤 1310)。在该部件中,祖先指针被变为先前识别的最高级祖先(步骤 1312)。如果该组件具有孩子指针,则每个孩子中的祖先指针被设为指向 最高级祖先的指针(步骤1314),然后该过程结束。步骤1314是可 选的,并且只在该部件具有孩子指针时执行。不同的实施例提供了 一种用于管理祖先树的计算机实施的方法、 装置和计算机程序产品。接收制造产品的订单。创建祖先树。祖先树 包括一组节点,其中每个节点代表产品的一个部件。接收确定包含特 定部件的最高级子配件的请求。在祖先树中定位特定部件的节点。返回在特定部件的节点中的祖先指针。该祖先指针指示包含该部件的更 高级子配件。图中的流程图和框示了根据各种实施例的系统、方法和计算 机程序产品的某些可能实现方式的体系结构、功能和操作。为此,流 程图或框图中的每个块可以代表一个模块、代码段或代码的一部分, 其包括用于实现指定逻辑功能的一个或多个可执行指令。还应当注意 到,在某些替换实现方式中,块中所示的功能可以在没有图中所示的 订单的情况下发生。例如,被示为连续的两个块事实上可以基本同时 执行,或者这些块取决于涉及的功能有时可以按相反顺序执行。本发明可以采用完全硬件的实施方式、完全软件的实施方式或包 含硬件和软件成分的实施方式。在优选实施例中,本发明以软件实现, 其包括但不限于固件、常驻软件、微代码等。此外,本发明可以采用计算机程序产品的形式,该计算机程序产 品可以从提供程序代码供计算机或任何指令执行系统使用或与之结合使用的计算机可用介质或计算机可读介质来访问。对于本说明书, 计算机可用介质或计算机可读介质可以是可包含、存储、传送、传播或输送程序供计算机或任何指令执行系统、装置或设备使用或与之结 合使用的任何装备。介质可以是电的、磁的、光的、电磁的、红外或半导体系统(或 设备或器件)或传播媒体。计算机可读介质的例子包括半导体或固态存储器、磁带、可拆卸的计算机盘、随机访问存储器(RAM)、只读存储 器(ROM)、硬磁盘和光盘。光盘的当前的例子包括压缩盘-只读存储 器(CD-ROM)、压缩盘-读/写(CD-R/W)和DVD。适于存储和/或执行程序代码的数据处理系统将包括至少 一个通 过系统总线直接或间接耦合到存储器单元的处理器。存储器单元可包 括在程序代码执行期间所使用的局部存储器、大容量存储装置和緩 存,緩存提供至少某些程序代码的临时存储,以便减小代码在执行期 间必须从大容量存储装置取回的次数。输入/输出或者说i/o设备(包括但不限于键盘、显示器、指针设备等等)可直接或通过居中的1/0控制器被耦合到系统。网络适配器也可以被耦合到系统,使得数据处理系统能够通过居储装置。调;〗解调、器、,有线调制解调器和以太网'卡一仅仅是几种当i可 用类型的网络适配器。本发明的描述是为了解释和说明的目的而给出的,不希望是穷举 的或限于所公开的形式的发明。许多修改和变型对于本领域的技术人 员是显而易见的。选择和描述一些实施例是为了最好地解释本发明的 原理和实际应用,并使本领域的技术人员能够理解本发明的多种实施 方式,这些实施方式为适于所设想的具体使用而作出多种修改。
权利要求
1.一种用于管理祖先树的计算机实施的方法,该计算机实施的方法包括响应于接收到制造产品的订单,创建所述祖先树,其中所述祖先树包括一组节点,并且该组节点中的每个节点代表所述产品的一个部件;响应于接收到确定包含所述产品的特定部件的更高级子配件的请求,在所述祖先树中定位所述特定部件的节点;以及返回在所述特定部件的节点中的祖先指针,其中所述祖先指针指示包含所述特定部件的更高级子配件。
2. 如权利要求1所述的计算机实施的方法,其中该组节点中的 每个节点包含指向所述节点的父亲的父亲指针、指向所述节点的孩子 的一组孩子指针以及指向包含所述产品的该部件的更高级子配件的 祖先指针。
3. 如权利要求2所述的计算机实施的方法,其中所述父亲指针、 所述祖先指针和所述一组孩子指针中的一个孩子指针当中至少有一 个为空。
4. 如权利要求1所述的计算机实施的方法,还包括响应于接收到向所述祖先树添加新节点的请求,根据所述请求识 别所述新节点的父亲节点;在所述父亲节点中添加指向所述新节点的孩子指针;以及 在所述新节点中添加指向所述父亲节点的父亲指针。
5. 如权利要求4所述的计算机实施的方法,还包括 根据所述父亲节点中的祖先指针确定更高级祖先;以及 将所述新节点中的祖先指针变为指向所述更高级祖先。
6. 如权利要求4所述的计算机实施的方法,还包括 响应于确定所述新部件是子配件,根据所述新节点中的一组孩子指针确定所述新节点的一个或多个孩子;以及在所述新节点的一个或多个孩子的每一个中将祖先指针变为所 述更高级祖先。
7. 如权利要求1所述的计算机实施的方法,还包括 响应于接收到从所述祖先树中去除当前节点的请求,根据所述当前节点中的父亲指针识别父亲节点;在所述父亲节点中去除指向所述当前节点的孩子指针; 在所述当前节点中去除指向所述父亲节点的父亲指针;以及 在所述当前节点中将所述祖先指针变为指向所述当前节点。
8. 如权利要求7所述的计算机实施的方法,还包括 响应于确定所述当前节点是子配件,根据所述当前节点中的一组孩子指针识别一个或多个孩子;以及在所述当前节点的一组孩子指针所指向的一个或多个孩子中,将 所述祖先指针变为指向所述当前节点。
9. 如权利要求7所述的计算机实施的方法,还包括 响应于去除所述孩子指针,将所述孩子指针设为空;以及 响应于去除所述父亲指针,将所述父亲指针设为空。
10. 如权利要求1所述的计算机实施的方法,其中所述更高级子 配件是所述祖先树中的最高级子配件。
11. 一种用于管理祖先树的数据处理系统,该数据处理系统包括用于接收制造产品的订单的接收装置;响应于接收到制造产品的订单,用于创建所述祖先树的创建装 置,其中所述祖先树包括一组节点,并且该组节点中的每个节点代表 所述产品的一个部件;用于接收确定包含所述产品的特定部件的更高级子配件的请求 的接收装置;响应于接收到确定包含所述产品的特定部件的更高级子配件的 请求,在所述祖先树中定位所述特定部件的节点的定位装置;以及 用于返回在所述特定部件的节点中的祖先指针的返回装置,其中所述祖先指针指示包含所述特定部件的更高级子配件。
12. 如权利要求11所述的数据处理系统,其中该组节点中的每 个节点包含指向所述节点的父亲的父亲指针、指向所述节点的孩子的 一组孩子指针以及指向包含所述产品的该部件的更高级子配件的祖 先指针。
13. 如权利要求11所述的数据处理系统,还包括响应于接收到向所述祖先树添加新节点的请求,根据所述请求识 别所述新节点的父亲节点的识别装置;以及用于在所述父亲节点中添加指向所述新节点的孩子指针,并在所 述新节点中添加指向所述父亲节点的父亲指针的添加装置。
14. 如权利要求13所述的数据处理系统,还包括 用于根据所述父亲节点中的祖先指针确定更高级祖先的确定装置;以及用于将所述新节点中的祖先指针变为指向所述更高级祖先的改 变装置。
15. 如权利要求13所述的数据处理系统,还包括 响应于确定所述当前节点是子配件,根据所述当前节点中的一组孩子指针识别一个或多个孩子的识别装置;以及用于在所述当前节点的一组孩子指针所指向的一个或多个孩子 中,将所述祖先指针变为指向所述当前节点的改变装置。
16. 如权利要求ll所述的数据处理系统,还包括 响应于接收到从所述祖先树中去除当前节点的请求,根据所述当前节点中的父亲指针识别父亲节点的识别装置;用于在所述父亲节点中去除指向所述当前节点的孩子指针,并在 所述当前节点中去除指向所述父亲节点的父亲指针的去除装置;以及用于在所述当前节点中将所述祖先指针变为指向所述当前节点 的改变装置。
17. 如权利要求16所述的数据处理系统,还包括 用于确定所述当前节点是否为子配件的确定装置;响应于确定所述当前节点是子配件,根据所述当前节点中的一组孩子指针识别一个或多个孩子的识别装置;以及用于在所述当前节点的一组孩子指针所指向的一个或多个孩子 中,将所述祖先指针变为指向所述当前节点的改变装置。
18. 如权利要求16所述的数据处理系统,还包括 响应于去除所述孩子指针,将所述孩子指针设为空的设置装置;以及响应于去除所述父亲指针,将所述父亲指针i殳为空的设置装置。
19. 如权利要求11所述的数据处理系统,其中所述更高级子配 件是所述祖先树中的最高级子配件。
20. —种包括计算机可用介质的计算机程序产品,该计算机可用 介质包括用于管理祖先树的计算机可用程序代码,该计算机轾序产品 包括用于实现根据权利要求1-10中的任何一个的方法的步骤的代码。
全文摘要
公开了一种用于管理祖先树的计算机实施的方法、装置和计算机程序产品。接收制造产品的订单。创建祖先树。祖先树包括一组节点,其中每个节点代表产品的一个部件。接收确定包含特定部件的更高级子配件的请求。在祖先树中定位该特定部件的节点。返回在该特定部件的节点中的祖先指针。祖先指针指示包含该部件的更高级子配件。
文档编号G06Q30/00GK101231735SQ20081000459
公开日2008年7月30日 申请日期2008年1月25日 优先权日2007年1月26日
发明者威廉·R.·泰勒, 杰弗里·G.·科马特苏, 艾弗里·W.·奈弗 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1