Windchill ESI VDB 构建器支持是一组类,用于按照定义的结构构建 Info*Engine VDB:类如下所示:
VDB 构建器类
VdbBuilder
此接口声明了所有 VDB 构建器都必须实现的方法。有关类中可用方法的详细信息,请参阅 Windchill 版本特定的 Java 文档。
VdbBuilderFactory
创建对 VdbBuilder 接口进行正确实现的实例。
有关此类中可用属性和方法的详细信息,请参阅 Windchill 版本特定的 Java 文档。
VdbBuilderImpl
此类是对 Windchill ESI VdbBuilder 的默认实施。此类是可扩展的。
有关此类中可用属性和方法的详细信息,请参阅 Windchill 版本特定的 Java 文档。
* 
在遇到第一个匹配的键并获取关联值时,将终止对 mapInfos 的查找。
其他 VDB 构建器类
VdbContainer
管理 VdbGroup 对象的集合并将其呈现为 Info*Engine IeCollection。此类不可由自定义者扩展。有关此类中可用属性和方法的详细信息,请参阅 Windchill 版本特定的 Java 文档。
* 
以上每条说明中的术语 groups collection 是指名为 groups 的 LinkedHashMap 中的值集合。LinkedHashMap 中的每个键都是一个逻辑组名称,每个值都是 VdbGroup 和分布目标集合的 HashMap。
VdbGroup
管理 VdbElement 的集合并将内容呈现为 Info*Engine 组。此类不可扩展。有关此类中可用属性和方法的详细信息,请参阅 Windchill 版本特定的 Java 文档。
VdbElement
管理 Info*Engine 元素的内容。有关此类中可用属性和方法的详细信息,请参阅 Windchill 版本特定的 Java 文档。
Windchill ESI 服务使用名为呈现器的类调用 VDB 构建器。这些呈现器将在本文档的以下各节中进行说明:
以下 UML 序列图显示了使用 Windchill ESI 服务呈现器时所涉的消息流:
使用 Windchill ESI 呈现器
如图所示,客户端使用 Windchill ESI 呈现器创建 ESIRendererFactory 实例并调用呈现器的 getRenderer() 以获取所需类型的呈现器。然后调用所获取呈现器 for a given destination 的 getXXX() (例如,在呈现变更通告时,调用 getECN())。getXXX() 方法随后会为表示给定目标位置的每个目标都创建一个 VdbBuilder 实例并调用 getXXX() 的重载版本。重载版本对 VdbBuilder 实例调用 update() (该实例将 currentTarget 属性设置为当前处理的分布目标),然后对呈现器调用 setData() 和 render() 方法。render() 方法调用 setBuilder()、validate() 和 buildGroups()。然后,通过对 VdbBuilder 实例调用 addElement() 来构建响应。然后,通过调用 asVDB() 获取表示响应的 I*E 集合,该集合随后返回到客户端。
* 
上述工作流在 ESI 事务处理过程中发生,并将针对每个目标位置重复,由此产生与发布中的目标位置同等数量的 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)
对于目标自变量中的每个 ESITarget 条目,该方法都会创建一个新的 Info*Engine Att 对象,并将其添加到元素自变量中。将 Att 对象命名为 TargetID,并为其分配由类 ESITargetUtility 的 getTargetId() API 返回的值。
* 
类 ESITargetUtility 的 getTargetId() API 返回 Windchill 中 ERP Connector 分布目标的 number 属性。
* 
在给定的 ESI 事务处理期间生成的 ESI 响应消息适用于给定目标位置。目标位置 ID 会添加到名为 Destination 的元素中,该元素出现在名为 Transaction 的元素中。除了实例特定信息外,<Transaction> 元素还提供了一些有用信息,如事务处理编号、版本编号、已发布的主要业务对象的 UFID、已启动事务处理的 Windchill 用户的名称等。
这对您有帮助吗?