部件抽象
wt.part 包提供了部件的标准实现。部件是可生产或使用的项,例如引擎、螺栓或油漆。部件可组装成其他部件;例如,汽车的传动系可以看作是由引擎、变速器、轴、差速器等组成的部件。
设计概述
下图说明了由 Windchill 部件参考实现封装的基本概念。
部件参考实现
部件类将基于针对 wt.enterprise 包中所控制的修订对象所建立的阵列实现。这些类 (WTPartMaster 和 WTPart) 提供了具体的类,展示了在 wt.enterprise 中建立的管理特征,并会为部件添加具体信息。部件的特性在 WTpart 类上指定。然后,出于标准化目的,特性的总和存储在 WTPartMaster 上。
部件包是实现“所控制的修订”业务子类的一个示例。具体部件业务类继承自企业模型中的所控制的修订业务模型 (主数据和 RevisionControlled) 模板。部件的大部分功能都继承自企业对象 RevisionControlled。RevisionControlled 将以下即插即用功能组合在一起:入夹、可索引、可通知、DomainAdministered、AccessControlled、BusinessInformation、LifeCycleManaged、版本、可操作和可更改。
属性位于 WTPartMaster 或 WTPart 上。作为主对象,WTPartMaster 表示部件标识。因此,"number" 和 "name" 置于此对象上。部件编号是企业识别和用于跟踪目的的印章。名称是用户可读的组件。部件的此类特性在分配时会十分谨慎且很少发生更改。
对于所有版本和小版本,WTPartMaster 上的属性都使用相同值。如果在创建多个版本和小版本后主数据的属性发生更改,则更改将反映在所有版本和小版本中。
作为“具有多个版本”且“可操作”的对象,WTPart 的更改会作为检出和检入过程记录在其版本和小版本中。通常,对于每个小版本,WTPart 上的属性都会使用不同值,因此更改仅影响一个小版本。
部件每经过一次检出和检入操作,都会出现一个小版本。可将其视为部件的工作副本。两个版本之间可能会出现多个小版本。但是,版本表示业务增量;即,对部件进行经批准的主要更改。典型情况是:部件版本 A 已经过批准并投入生产。然后,确定需要进行某项更改。在更改的调查和测试期间,部件会经历多个小版本。最后,版本 B 得以批准。
此外,设置为 ViewManageable 时,WTPart 可分配至视图,从而通过各个开发阶段进行处理,例如工程和制造阶段。它位于文件夹中,受访问控制、贯穿生命周期,并且作为 RevisionControlled 的结果,它是更改进程的一部分。也可将其分配给基线以保留特定实现,并使其版本生效以指示制造过程将构建的内容。
虽然显示在上图中,但默认情况下,WTPart 不再是 ContentHolder。保存文件和 URL 的功能仍然存在,但不再向用户显示。
WTPart 还包含源和类型的聚合特性 (如下图所示)。
WTPart 特性
源可用于指示部件的采购方式,例如,制造或购买。类型指定其分解方式,例如,可分离 (由可拆卸来进行维修的元件组装)、不可分离 (已组装但不能拆卸) 或元件 (未组装)。这些特性的值可通过编辑其资源束进行更改。
另外,请注意,编号和名称将建模为衍生项,并可实现以从 WTPartMaster 中设置和获取其实数值。已使用属性规范 Windchill 选项卡中的 DerivedFrom 特性指示它是通过指定数据库派生项的方式派生于主数据属性;此外,已通过如下方式覆盖 getter 和 setter:
((WTPartMaster) getMaster()).get/set...(...)
WTPart 可以使用其他部件来构建使用 WTPartUsageLink 的装配,如下图所示。
使用 WTPartUsageLink 构建装配
WTPartUsageLink 是一种 IteratedUsageLink,是经定义用来构建结构的关联。WTPartUsageLink 总计数量可用于指示所使用的元件的数量。可通过编辑 QuantityUnit 的资源束来更改其值。
WTPartUsageLink 可使用 PersistenceManager 的导航 API、甚至使用 StructService 的 navigateUses 和 navigateUsedBy API 来导航。请注意,导航 usedBy 角色会返回所有部件小版本;StructService 的 navigateUsedBy API 则仅返回版本。但是,StructService 的 API 将使用 IteratedUsageLink 作为其导航目标。WTPartUsageLink 可能不是自定义中的唯一 IteratedUsageLink。建议使用下图中的 API。
导航 WTPartUsageLink
getUsesWTParts 导航至 WTPartMaster,并使用 WTPartConfigSpec 解析主数据中的 WTPart,返回 Persistable[] 的 QueryResult,其中 WTPartUsageLink 位于第 0 位,在第一个 getUsesWTPartMasters 中的 WTPart/WTPartMaster 仅导航 WTPartUsageLink 并返回 WTPartUsageLink 的 QueryResult。最后,getUsedByWTParts 返回 WTPart 的 QueryResult (版本,不只是所有小版本),表示调用部件的实现。
WTPart 也可以参考文档 (请参阅下图)。
WTPartReferenceLink 和导航 API
通常,部件参考文档主要是因为以下两个原因之一:
• 部件不是文档的逻辑所有者。例如,文档为标准文档时就是如此。标准文档独立于部件,但可用于验证文档的一致性。
• 文档 (文件) 从概念上讲属于部件,但必须进行单独的生命周期管理、独立于文件等进行检入和检出。请注意,当文档版本在 WTPart 透视图不必为可交换版本时,WTPartReferenceLink 可能不适用。如果文档的特定版本应链接到部件的特定版本,请改为使用 DescribedBy 链接 (如本节后续内容中所述)。
WTPartReferenceLink 可使用 WTPartService 的 getReferencesWTDocumentMasters API 导航。
WTPart 也可以链接到使用 WTPartDescribedByLink 在版本特定级别上对其进行描述的文档。此类文档的示例之一是 CAD 绘图,它可准确显示部件特定版本的设计和构建方式。如果对部件进行更改并创建新版本,则应使用 DescribedBy 功能将反应此更改的 CAD 绘图的修订版本链接到新部件。
总之,参考应被视为有用但不必需的补充信息。它可能有自己的生命周期,且其更改不会影响参考它的部件。通过 DescribedBy 链接链接到部件的文档包含特定于该部件版本的相关信息。文档的特定版本将链接到部件的特定版本。
getUsesWTParts API 会涉及 WTPartConfigSpec。WTPartConfigSpec 在其导航过程中将用于部件结构。它由三个 ConfigSpecs 组成:WTPartStandardConfigSpec、WTPartEffectivityConfigSpec 和 WTPartBaselineConfigSpec (如下图所示)。
WTPartConfigSpec
已将区域的概念添加到 WTPartConfigSpec,以确定在任何给定时间将处于启用状态的 ConfigSpec。WTPartConfigSpec 使用下图中列出的 WTPartService API 进行存储,每个承担者一个。
查找并保存 WTPartConfigSpec
由 WTPartConfigSpec 聚合的 ConfigSpec 具有以下行为:
WTPartStandardConfigSpec
启用状态下,将根据 WTPart 的状态及其视图成员资格对其进行筛选。可使用 workingIncluded 来允许用户在其工作副本及其检出的版本之间进行切换。
WTPartEffectivityConfigSpec
启用状态下,允许用户根据有效性和视图查看结构。仅显示指定为有效的 WTPart (有关其他信息,请参见 wt.effectivity 包)。
WTPartBaselineConfigSpec
启用状态下,仅显示分配给指定基线的 WTPart (有关其他信息,请参见 wt.vc.baseline 包)。
部件通常可在全局或在装配的上下文中由其他部件替换。此可互换性用于表示某个部件在给定情况下与另一个部件对等。WTPartAlternateLink (如下图所示) 用于表示全局互换,而 WTPartSubstituteLink 表示在装配的上下文内互换。请注意,每当复制 WTPartUsageLink 时,都会复制 WTPartSubstituteLink。
全局替换部件和特定替换部件链接
这两个链接均可使用持久化管理器的导航 API 进行导航。此外,WTPartService 提供的 getAlternatesWTPartMasters 和 getAlternateForWTPartMasters 方法用于导航 WTPartAlternateLinks,而 getSubstitutesWTPartMasters 和 getSubstituteForWTPartUsageLinks 方法用于导航 WTPartSubstituteLinks。WTPartAlternateLink 和 WTPartSubstituteLink 均受访问控制,因此,将使用访问控制服务定义执行如创建和删除链接等操作的权限。
在 wt.part 包中建模的 Part、PartMaster 和 PartIteration 类 (请参见下图) 是用于未来功能的占位符。