Swift PLM 循环BOM检查(Donny Yang)

首页    产品中心    Swift PLM功能点介绍    物料/BOM管理模块    Swift PLM 循环BOM检查(Donny Yang)

Swift PLM循环BOM检查

实际生产中,企业从单一数据源中提取数据形成BOM的多视图,这对数据一致性的维护有重要意义。但是由于各种BOM的生成过程不同,包含的数据也不完全相同,因此仍需要对比同一产品的不同BOM视图,以保证数据的一致性。物料项和物料项关系两部分构成了BOM,所以维护BOM一致性需要维护物料项和物料项关系的一致性。常见的BOM数据不一致现象可大致从结构和属性两个角度分析。BOM结构不一致,最常见的情形就是物料项父子关系循环。


物料项父子关系循环

在BOM中,如果存在子件中含有父件的结点,则构成了父子关系循环,即循环引用。编辑BOM中的零部件,或者从其他BOM中导入数据到当前BOM,都可能造成循环引用。这两种情况在本质上相同,都可以在事先避免:增加BOM结点,调用父子循环检测算法,进行BOM结构检查,可以判断是否发生了父子循环。


Swift PLM的父子循环检测算法

通常在BOM添加结点时调用父子循环检测算法,事先防止BOM父子循环的出现。

设源BOM为S,目标BOM的集合为T,SD记录S中某结点的所有后代,TA是T中某一结点的祖先的集合,QS存放按广度优先访问S得到的结点序列,QC是按顺序分别存放访问S中某结点的所有后代,QT是按顺序分别存放访问T中某结点的所有祖先。函数GetParent(v)和GetChild(v)分别访问并存储结点v的父结点和子结点。父子循环检测算法如下: 

第1步:选取S的根结点r,将此结点放入队列QS中。

第2步:如果队列QS空,则不存在循环引用,结束算法;否则从队列QS中取出一结点v,将GetChild(v)加进队列QS,将v加入队列QC。

第3步:从T中取GetParent(v)加入队列QT和集合TA中。

第4步:如果队列QC空,则转第2步;否则从队列QC中取出一结点c,将GetChild(c)加进队列QC尾及集合SD中,C=SD∩TA,如果C≠φ,则存在循环引用,转第6步;否则继续本步。

第5步:如果队列QT空,则转第2步;否则从队列QT中取出一结点c,将GerParent(c)加进队列QT尾及集合TA中,C=SD∩TA,如果C≠φ,则存在循环引用,转第6步;否则继续本步。

第6步:输出v以及C,据此可分析得出何处发生循环引用。结束算法。

img1

图(1)Item-2包含BOM Item-1

1632968710(1)

图(2)Item-1添加Item-2作为BOM时


小结

BOM管理贯穿与企业生产经营活动的全周期,其配置、管控、发放等各环节对于产品至关重要,因此BOM的一致性是尤为重要。 本文主要是描述Swift PLM系统中循环BOM的检查,保证BOM结构的一致性。Swift PLM是部署在云端,可以快速部署,帮助企业提升研发管理水平,实现真正的降本增效,现在限时免费体验,欢迎大家前来咨询。


杰信软件Swift PLM产品生命周期管理

 

      杰信软件专注于医疗器械、高科技电子、芯片半导体、精密制造、离散组装设备、汽车零部件等行业PLM解决方案咨询和实施,同时有着超20年的EDM咨询和实践经验,杰信软件立志于将最先进的业务模式与管理创新方法,通过杰信软件公司专家团队提供的专业信息化解决方案,帮助企业飞速发展。因此公司研制开发了一套有着自我知识产权的国产PLM系统Swift PLM,它有着轻量化、高效化、实用化、易用化的特点,是中小型企业研发设计管理的最佳工具。

 

想要了解更多详细内容,赶紧联系我们吧! 

请拨服务电话: 4007-169-700

或发送邮件至:marketing@jiexininfo.com 

获取更多资料。