Windchill ESI VDB Builder 支持是一组类,用于按照定义的结构构建 Info*Engine VDB:这些类如下所示:
VDB 构建器类
VdbBuilder
此接口声明所有 VDB builders 必须实施的方法。有关类中的可用方法的更多详细信息,请参阅 Windchill 版本特定的 Java 文档。
VdbBuilderFactory
创建对 VdbBuilder 接口进行正确实现的实例。有关此类中可用属性和方法的详细信息,请参阅 Windchill 版本特定的 Java 文档。
VdbBuilderImpl
此类是默认 Windchill ESI VdbBuilder 实施。此类是可扩展的。有关此类中可用属性和方法的详细信息,请参阅 Windchill 版本特定的 Java 文档。
* 
mapInfo 的查找将在遇到第一个匹配键并提取关联值时终止。
其他 VDB 构建器类
VdbContainer
管理 VdbGroup 对象集合并将其呈现为 Info*Engine 集合。此类不可由自定义者扩展。有关此类中可用属性和方法的详细信息,请参阅 Windchill 版本特定的 Java 文档。
* 
上述所有说明中的“组集合”一词指 LinkedHashMap 指定组中的值集合。LinkedHashMap 中的每个键都是一个逻辑组名称,每个值都是分布目标的 VdbGroups 和集合的 HashMap
VdbGroup
管理 VdbElements 的集合,并将内容呈现为 Info*Engine 组。此类不可扩展。有关此类中可用属性和方法的详细信息,请参阅 Windchill 版本特定的 Java 文档。
VdbElement
管理 Info*Engine 元素的内容。有关此类中可用属性和方法的详细信息,请参阅 Windchill 版本特定的 Java 文档。
Windchill ESI 服务使用名为 renderers 的类调用 VDB builder。这些呈现器将在本文档的以下各节中进行说明:
发布变更通告
发布 BOM
发布部件
发布文档
发布工艺计划
发布资源
发布升级请求
发布选项集
以下 UML 序列图显示了使用 Windchill ESI 服务呈现器时所涉的消息流:
使用 Windchill ESI 呈现器
如上图所示,客户端创建 ESIRendererFactory 实例并在其上调用 getRenderer() 以提取所需类型的呈现器。然后在给定 ERP 实例或目标位置的已提取呈现器上调用 getXXX() (例如,在呈现变更通告时,会调用 getECN())。getXXX() 方法随即会创建 VdbBuilder 实例,并为属于给定实例的每个目标调用 getXXX() 的无差别加载版本。重载版本对 VdbBuilder 实例调用 update() (该实例将 currentTarget 属性设置为当前处理的分布目标),然后对呈现器调用 setData() 和 render() 方法。render() 方法调用 setBuilder()、validate() 和 buildGroups()。随后通过在 VdbBuilder 实例上调用 addElement() 构建响应。表示响应的 I*E 集合随后通过调用 VDB() 提取,然后返回到客户端。
* 
上述工作流在 ESI 事务处理过程中发生,并将针对每个 ERP (或目标位置) 重复,由此产生与发布中的实例同等数量的 ESI 响应消息。
Windchill ESI 服务提供了一个抽象类和一个用于定义所有 Windchill ESI 服务呈现器通用功能的接口 (请参阅上文)。提供的方法如下:
ESIRenderer
此接口由所有 Windchill ESI 呈现器实施,它提供的唯一方法是 public void render(VdbBuilder),如下所述。
render(builder : VdbBuilder)
此方法使用相应的内容填充所传递的 VdbBuilder 实例。如果发现用于初始化呈现器的数据无效或构建输出时出错,则此方法会抛出 ESIRendererException
ESIRendererException
ESIException 的子类 (以及 WTException 的子类),允许客户端确定 ESIRenderer 是否抛出异常。
BasicESIRenderer
此类为抽象基类,其中包含对所有 Windchill ESI XML 响应呈现器通用的行为。此类为抽象类,因此必须进行扩展。
有关此类中可用属性和方法的详细信息,请参阅 Windchill 版本特定的 Java 文档。
adjustTargets(element : Element, targets : Collection)
对于 targets 自变量中的每个 ESITarget 条目,该方法都会新建一个 Info*Engine Att 对象,并将其添加到 element 自变量中。Att 对象命名为 "TargetID",并分配由类 ESITargetUtilitygetTargetId() API 返回的值。
* 
ESITargetUtilitygetTargetId() API 返回采用 Number: Organization Name 格式的值,其中 Number 和 Organization Name 分别为 Windchill 中分布目标的唯一 ID 以及 Oracle Applications 中由目标表示的组织名称。
* 
在给定 ESI 事务处理期间生成的 ESI 响应消息适用于属于给定 Oracle Applications 实例的分布目标。因此,实例特定的信息 (即 DSN) 仅添加到名为 "Transaction" 的元素中出现的一个元素 (名为 "Destination"),而不是添加到响应消息中的所有 <TargetID> 元素。除了实例特定信息外,<Transaction> 元素还提供了一些有用信息,如事务处理编号、版本编号、已发布的主要业务对象的 UFID、已启动事务处理的 Windchill 用户的名称等。
这对您有帮助吗?