Windchill ESI 文档呈现器类
ESIAbstractDocumentsRenderer
这是一个抽象类,可将其扩展为 ESIEPMDocumentRenderer 的基类,并提供用于导航和呈现文档结构的 API。它利用 TreeNavigator 实例的服务对文档结构进行导航。
有关此类中可用属性和方法的详细信息,请参阅 Windchill 版本特定的 Java 文档。
ESIDocumentsRendererInterface
此接口位于包 wt.esi.doc 中,需要由任何 ESI 文档呈现器进行实施。
它会调用适用于实施此接口的给定文档呈现器的 getXXX() API。例如,类 ESIEPMDocumentRenderer 中的实施会调用 getEPMDocument() 方法。
有关此类中可用属性和方法的详细信息,请参阅 Windchill 版本特定的 Java 文档。
ESIEPMDocumentRenderer
它会扩展 ESIAbstractDocumentsRenderer 并实施接口 wt.esi.doc.ESIDocumentsRendererInterface。该类提供了用于导航和呈现 CAD 文档结构的 API。在从父项继承用于导航和呈现文档结构的大部分逻辑时,该类添加了用于处理特定于 CAD 文档结构的关联和属性的代码。例如,该类提供了用于提取 CAD 文档表示并进行适当呈现的 API。
* 
CAD 文档结构可发布为独立对象,也可以与变更通告或升级请求相关联。
有关此类中可用属性和方法的详细信息,请参阅 Windchill 版本特定的 Java 文档。
TreeNavigator
此接口位于包 com.ptc.windchill.esi.treenavigation 中,并提供用于导航结构的 API。
有关此类中可用属性和方法的详细信息,请参阅 Windchill 版本特定的 Java 文档。
AbstractTreeNavigatorImpl
com.ptc.windchill.esi.treenavigation。除了接口方法的具体实施之外,它还提供了用于导航结构的 API。它利用 TreeNavigationRequestBuilder 和 DependencyHelper 实例的服务来执行导航。
有关此类中可用属性和方法的详细信息,请参阅 Windchill 版本特定的 Java 文档。
有关此类的其他受支持 API 以及 com.ptc.windchill.esi.treenavigation 包 (及其方法) 中的其他类和接口,请参阅 Javadoc。
TreeNavigatorImpl
这是 CAD 文档结构 TreeNavigator 接口的默认实施。此类驻留在包 com.ptc.windchill.esi.treenavigation 中并扩展抽象类 com.ptc.windchill.esi.treenavigation.AbstractTreeNavigatorImpl。自定义者可以扩展此类,以改写由此类和抽象类定义的 API。有关 TreeNavigator 接口的抽象实施的说明,请参阅上一节 TreeNavigator。
此类的唯一可用方法是 filterNodes(assemblyNodes : Collection<Persistable>, leafNodes : Collection<Persistable>)。该方法不起任何作用,但是,此类的自定义扩展可改写此方法并根据需要执行任何装配和叶节点筛选。
TreeNavigationRequestBuilder
此接口位于包 com.ptc.windchill.esi.treenavigation 中,它提供了用于获取给定对象集合的 TreeNavigationRequest 对象、导航深度和导航条件的方法。
有关此类中可用属性和方法的详细信息,请参阅 Windchill 版本特定的 Java 文档。
EPMDocTreeNavigationReqBuilder
它是 CAD 文档结构的接口 com.ptc.windchill.esi.treenavigation.TreeNavigationRequestBuilder 的默认实施,位于包 com.ptc.windchill.esi.esidoc 中。它提供了用于构建 TreeNavigationRequest 对象的方法,该对象可用于导航 CAD 文档结构。
有关此类中可用属性和方法的详细信息,请参阅 Windchill 版本特定的 Java 文档。
ESIDocumentsRenderer
它会实施接口 wt.esi.doc.ESIDocumentsRendererInterface 并提供用于呈现的 API:
与部件 (或任何其他 RevisionControlled 对象) 关联的 WTDocument 或 CAD 文档
未与 RevisionControlled 对象关联的 WTDocument。
* 
尽管 Windchill 允许将 WTDocument 与结构中的其他 WTDocument 相关联,但 ESI 服务不支持处理此类结构。
ESI 部件呈现器 (ESIWTPartRenderer) 使用 ESI 呈现器工厂来获取 ESIDocumentsRenderer 的实例,该实例用于呈现与部件关联的文档。
* 
使用 ESIDocumentsRenderer 的其他呈现器包括 ESIWTChangeOrder2Renderer、ESIPromotionRequestRenderer、ESIProcessPlanRenderer、ESISequenceRenderer、ESIOperationRenderer、ESIToolingRenderer、ESIProcessMaterialRenderer 和 ESISkillRenderer。
有关此类中可用属性和方法的详细信息,请参阅 Windchill 版本特定的 Java 文档。
ESIDocUtility
ESIDocUtility 是 com.ptc.windchill.esi.esidoc 包的公共接口。它提供了可在 Windchill ESI 文档处理逻辑中使用的方法。这些公共方法可供自定义者使用,但自定义者不能扩展和修改该类。
有关此类中可用属性和方法的详细信息,请参阅 Windchill 版本特定的 Java 文档。
PartDocInfo
请参阅本文档的文档附件差异一节。
呈现文档
上图显示了为在文档的响应模式中创建子元素而调用的类。下面是事件的序列:
1. ESIWTPartRenderer 调用 ESIRendererFactory 上的 getRenderer() 以获取 ESIDocumentsRenderer 实例。然后在呈现器上调用 getESIDoc(),并将关联集合
a. 从先前发布的部件小版本、
b. 当前发布的部件小版本和
c. 目标本身等传递到分布目标。
2. getESIDoc() 调用 setData() 以适当初始化文档呈现器实例,然后调用 render() - 将针对当前发布的每个部件小版本执行此操作。由 ESIWTPartRenderer 传入的 VdbBuilder 实例将传递给 render() 方法。
3. render() 方法调用 setBuilder() (用于将属性 builder 设置为传递的 VdbBuilder 实例)、validate() (用于确认属性 currentPartIterationtargets 存在) 和 buildGroups() (用于调用将当前和先前部件小版本以及分布目标集合作为其自变量的 buildGroups() 的无差别加载版本)。
4. buildGroups() 的无差别加载版本调用 getPartDocInfo()。如果正在发布的部件未发生变更且未新建小版本,则在调用 getPartDocInfo() 时,对于自变量 currentprevious,将传递为当前部件小版本传入的自变量本身。另一方面,如果部件已变更或新建了小版本,则从 buildGroups() 传入的当前和先前小版本将传递至 getPartDocInfo()。
5. 如果向 getPartDocInfo() 传递的先前部件小版本为空,则会调用 ESIDocUtility 上的方法 retrievePartDocInformation()。否则,调用 ESIDocUtility 上的 retrievePartDocDifferences()。使用返回的 PartDocInfo 对象集合数组,可分别通过调用 getDocElements() 和 getDocLinkElements() 构建文档和 documentlink 元素映射。
6. 将遍历由 getPartDocInfo() 返回的数组中的集合 - 如果集合包含表示已添加或已删除文档链接信息的 PartDocInfo 对象,则将调用 buildDocumentLink()。否则,将调用 buildUnchangedLink()。
7. 文档链接上的属性将通过调用 mapDocumentLink() 进行映射,生成的 I*E 元素将通过调用 VdbBuilder.addElement() 添加到 VdbBuilder 实例。
8. 将通过在从步骤 5 获取的 PartDocInfo 对象上调用 getDocument() 获取关联的文档。对于每个文档,将通过调用 mapDocument() 映射相关属性,生成的 I*E 元素将通过调用 VdbBuilder.addElement() 添加到 VdbBuilder 实例。
不考虑发布先前已发布或具有待定发布状态的文档和文档链接。发布状态通过查找是否有相应的 ReleaseActivity 与文档或文档链接相关联进行确定。
Windchill ESI 的默认实施中,不使用响应模式中的 XML 子元素
<DeletedDocuments>。仅填充 <AddedDocuments>、<ChangedDocuments> 和 <UnchangedDocuments> 元素。
* 
1. 上述步骤不仅与 WTPart 小版本相关,还与任何先前提到的 RevisionControlled 对象相关,即可能具有关联文档的 MPMProcessPlan、MPMSequence、MPMOperation、MPMTooling、MPMProcessMaterial 和 MPMSkill 小版本。
2. 如果 Windchill ESI 首选项“发布 ERP 物料信息”的值为“是”,则还将发布与 ERPMaterial 对象 (表示给定部件) 关联的文档。如果 Windchill MPMLink 首选项“自动 ERP 物料创建的可变类型”将 "wt.part.WTPart" 作为其值中的标记之一,则系统将自动为部件创建 ERPMaterial 对象。
3. 如果 Windchill ESI 首选项“仅发布文档关联的增量变更”设置为“否”,则无论这些关联先前是否已发布,RevisionControlled 对象的文档关联都将作为 ESI 响应中的 added ones 发送。
4. 上述步骤 1 至 8 在 ESITransaction 过程中发生,并将针对表示给定目标位置的每个分布目标重复。由于将在给定时间处理单个分布目标,因此步骤 (1) 和 (3) 中引用的分布目标集合实际上是单态集合。
5. 有关发布独立文档时发生的事件的序列,请参阅上述 PartDocInfo 一节中的 buildGroups() 说明。
这对您有帮助吗?