自定义点
可扩展类
如果扩展了本文档
发布 BOM 一节所述的
Windchill ESI 呈现器所使用的类,则必须根据需要在某些
Windchill ESI 首选项或 ESI 服务特性文件中定义扩展。
以下是通常在 Windchill ESI 首选项中定义的类:
◦ BOMOrgFilter
首选项名称:“分布目标筛选器”
默认值:com.ptc.windchill.esi.bom.BOMOrgFilter
◦ TreeNavigator
首选项名称:“树导航器”
默认值:com.ptc.windchill.esi.treenavigation.TreeNavigatorImpl
以下是通常在 ESI 服务特性文件中定义的呈现器类:
◦ ESIBOMRenderer
服务特性名称:com.ptc.windchill.esi.rnd.ESIRenderer
<Option> 元素的默认属性值:
cardinality="duplicate"
requestor="wt.part.WTPart"
selector="BOM"
serviceClass="com.ptc.windchill.esi.bom.ESIBOMRenderer"
◦ ESIBOMHeaderRenderer
服务特性名称:com.ptc.windchill.esi.rnd.ESIRenderer
<Option> 元素的默认属性值:
cardinality="duplicate"
requestor="wt.part.WTPart"
selector="BOMHEADER"
serviceClass="com.ptc.windchill.esi.bom.ESIBOMHeaderRenderer"
◦ ESIBOMComponentRenderer
服务特性名称:com.ptc.windchill.esi.rnd.ESIRenderer
<Option> 元素的默认属性值:cardinality="duplicate"
cardinality="duplicate"
requestor="wt.part.WTPart"
selector="BOMCOMPONENT"
serviceClass="com.ptc.windchill.esi.bom.ESIBOMComponentRenderer"
◦ ESISubstituteRenderer
服务特性名称:com.ptc.windchill.esi.rnd.ESIRenderer
<Option> 元素的默认属性值:
cardinality="duplicate"
requestor="wt.part.WTPart"
selector="SUBSTITUTE"
serviceClass="com.ptc.windchill.esi.bom.ESISubstituteRenderer"
◦ ESIReferenceDesignatorRenderer
服务特性名称:com.ptc.windchill.esi.rnd.ESIRenderer
<Option> 元素的默认属性值:
cardinality="duplicate"
requestor="wt.part.WTPart"
selector="REFERENCEDESIGNATOR"
serviceClass="com.ptc.windchill.esi.bom.ESIReferenceDesignatorRenderer
ESI 服务特性文件中还定义了以下 TreeNavigationRequestBuilder 类:
◦ BOMTreeNavigationReqBuilder
服务特性名称:com.ptc.windchill.esi.treenavigation.TreeNavigationRequestBuilder
<Option> 元素的默认属性值:
cardinality="duplicate"
requestor="null"
selector=" WCTYPE|wt.part.WTPart"
serviceClass="com.ptc.windchill.esi.bom.BOMTreeNavigationReqBuilder"
以上所有类均允许自定义者进行扩展。
BusinessRuleSetRelationshipDelegate 委派:ESIPartRelationshipDelegate 类在 ESI 服务特性文件中定义:
◦ ESIPartRelationshipDelegate
服务特性名称:com.ptc.core.businessRules.relationship.BusinessRuleSetRelationshipDelegate
<Option> 元素的默认属性值:
cardinality="singleton"
requestor="null"
selector= "ESIPartRelationshipDelegate"
serviceClass="com.ptc.windchill.esi.businessRules.relationship.ESIPartRela tionshipDelegate"
可扩展此类以收集与部件关联的其他应用业务规则的对象。此业务规则评估决定将给定装配节点发布为生产 BOM。同样,可扩展此类以在应用业务规则之前筛选出默认逻辑已收集的对象。
示例:“分布目标筛选器”首选项的典型用法
有时,您可能需要实施一个允许在设计流程早期将“正在处理”BOM 发送至 ERP 的业务流程。其主要作用是为提前期较长的部件更早采购工具。随着设计流程的发展,可能会有一部分部件已列在 Windchill 装配上,但尚未准备好发送至 ERP 系统。换句话说,在将这些部件导出到 ERP 时需要将其从 BOM 中筛选出来。通常,可通过上述首选项执行下列步骤来实现此目的:
1. 创建用于扩展类 com.ptc.windchill.esi.bom.BOMOrgFilter 的新 Java 类 com.ptc.windchill.esi.bom.BOMUsageLinkFilter。在此新类中提供方法公共枚举 filterOutput(WTPart, Enumeration) 的替代版本,以基于特定条件从 BOM 筛选出零部件。例如,WTPartUsageLink 对象特定属性的值可用于表示需要从 BOM 筛选出给定组件。
2. 编译 BOMUsageLinkFilter.java 以在 <<Windchill>\codebase\com\ptc\windchill\esi\bom 目录中创建其类文件。
3. 将名为“分布目标筛选器”的 Windchill ESI 首选项的值设置为 com.ptc.windchill.esi.bom.BOMUsageLinkFilter。
现在,发布 BOM 将需要从 BOM 筛选组件。
类 BOMUsageLinkFilter 中方法 filterOutput() 的实施示例如下所示:
package com.ptc.windchill.esi.bom;
…
public class BOMUsageLinkFilter extends BOMOrgFilter
{
…
public Map<WTPartUsageLink, WTPart>[] filterOutput(WTPart part, Map<WTPartUsageLink, WTPart>[]partDelta) {
Map<WTPartUsageLink, WTPart>[]delta = super.filterOutput(part, partDelta);
// Perform the necessary filtering of components here, adding the remaining
// ones to a result Vector in the process
return delta;
}
可配置选项
Windchill ESI 首选项用于控制 Windchill ESI BOM 呈现器支持的多个可配置选项。选项包括:
◦ 定义是否 ERP Connector 应创建替换项组。替换项组需要与 SAP ERP 兼容。SAP 通过将一个替换项组号分配到所有具有特定替换部件的 BOM 组件来管理 BOM 特定替换部件。SAP 判断具有相同替换项组号的部件可互换。
首选项名称:“启用替换项组”
默认值:“是”
◦ 定义 ERP Connector 是否应在找到无行号信息的产品结构时抛出异常。标准 Windchill 行为是既允许具有行号的产品结构,也允许没有行号的产品结构。对于任何一个产品结构来说,它的所有组件必须都具有行号或都没有行号。标准 Windchill 行为相当于将首选项设置为“否”。如果目标企业系统无法处理无行号的 BOM,则应将首选项设置为“是”
首选项名称:“强制行号”
默认值:“否”
◦ 定义 ERP Connector 是否应在找到组件数量为零的产品结构时抛出异常。默认行为是抛出异常。
首选项名称:“要求的组件数量”
默认值:“是”
◦ 定义 ERP Connector 是否应在处理装配中的组件时,在找不到部件主数据的合格版本的情况下抛出异常。
首选项名称:“显示没有找到符合条件的版本错误”
默认值:“是”
◦ 定义Windchill ESI 服务是否检查 GetBOM、GetECN 和 GetProcessPlan RPC 请求参数以确定是否已请求行号。如果尚未请求行号,则 Windchill ESI 服务将在“企业系统事务处理管理”用户界面中为每个可能会导致 SAP 中出现唯一性错误的对象生成一条警告消息。当某个部件被列为 BOM 中多个组件的特定替换部件时,或者某个部件同时作为组件和特定替换部件在 BOM 列出时,就会发生这种情况。
|
GetXXX RPC 请求参数是指提供响应设置的相关分布目标属性。
|
首选项名称:“强制 BOM 行号警告”
默认值:“是”
◦ 定义视图与分布目标之间的 Windchill ESI 映射 (以逗号分隔的 <view name>:<target number> 对列表表示)。例如,值 Plant1:001、Plant2:002 会将视图 Plant1 和 Plant2 分别映射到编号为 001 和 002 的分布目标。除了驱动部件分布目标分配的验证外,此首选项还可用于确定通过 BOM 的 ESI 响应发送的使用关系元素的值。有关详细信息,请参阅首选项“视图到 BOM 类型映射”。
首选项名称:“视图到分布目标映射”
默认值:此首选项默认情况下设置为空值。
◦ 定义 Windchill ESI 视图与 BOM 类型 (或使用关系) 值之间的映射 (以逗号分隔的 <view name>:<BOM usage value> 对列表表示)。例如,Design:Engineering,Manufacturing:Production 等值会将 Design 和 Manufacturing 视图分别映射到 BOM 使用关系值 Engineering 和 Production。
将 BOM 发布至给定分布目标时,ESI 服务首先通过首选项“视图到分布目标映射”确定与目标相应的视图。然后查找“视图到 BOM 类型映射”,查找与上一步骤中获取的视图相对应的 BOM 使用关系值。此值将与响应中的 BOM 的“使用关系”元素一起发送,从而改写可能在 BOM 标题小版本上设置的所有使用关系。
首选项名称:“视图到 BOM 类型映射”
默认值:此首选项默认情况下设置为空值。
◦ 定义是否在 ESI 响应中为备用装配发送部件数据。如果设置为“是”,ESI 服务将为备用装配发送部件数据。如果设置为“否”,则不会为此类装配发送部件数据。仅当发布常规装配 (而不是备用装配) 期间在 ERP 系统中创建部件时,此首选项才会派上用场。
首选项名称:“为备用装配发送部件数据”
默认值:“是”
◦ 定义是否在 ESI 响应中返回未变更的对象信息。选择“是”将呈现未变更的对象,选择“否”将忽略未变更的对象。
首选项名称:“呈现未变更的对象”
默认值:“是”
|
如果将首选项设置为“否”,则生成 ESI 响应时,将仅忽略未变更的部件和 BOM 组件。
|
◦ 指定在发布备用部件时是否通过 ESI 响应发送 BOM 数据。如果设置为“是”,则会发送装配中备用部件的 BOM 数据。如果设置为“否”,则仅会为此类部件发送部件数据。仅当发布备用部件的分布目标属性的值为“是”时,此首选项才有意义。
首选项名称:“为全局替换部件发送 BOM 数据”
默认值:“否”
◦ 指定在发布特定备用部件时是否通过 ESI 响应发送 BOM 数据。如果设置为“是”,则会为装配中的特定替换部件发送 BOM 数据。如果设置为“否”,则仅会为此类部件发送部件数据。仅当发布特定替换部件的分布目标属性的值为“是”时,此首选项才有意义。
首选项名称:“为特定替换部件发送 BOM 数据”
默认值:“否”
◦ 定义 ERP Connector 应发布具有子项的部件节点的生产 BOM,还是仅将部件发送至下游。这使得用户能够灵活地选择性发布给定物料清单中特定部件的生产 BOM。此首选项应与分布属性 Always publish Production BOM for a Part when Publishing a BOM 结合使用。因此,当使用业务规则集设置首选项并将其目标属性设置为“是/否”时,可根据需要选择将其应用于一个或多个目标集。有关此功能的详细信息,请参阅 Windchill 帮助中心主题 Configuration option to Inhibit Publishing of a Production BOM。
首选项名称:“禁止发布生产 BOM 的业务规则集”。
默认值:“空白值”
◦ 定义应如何处理将增量信息发布到 BOM 的分布目标。从
Windchill 10.2 M030 版本开始,
ERP Connector 会将部件与对象的 "view"、"variation1"、"variation2" 属性以及版本和小版本进行比较。不希望使用此新默认行为的用户可以通过将以下
Windchill 特性设置为 false 来还原回旧的行为。较旧的实施将根据版本或小版本比较部件,或者仅通过比较 "variation1" 和 "variation2" 属性比较部件。此特性为可选特性,
esi.properties 文件中预设不提供。有关计算差异的详细信息,请参阅
物料清单主题中的“将对等 BOM 增量信息发布至分布目标”部分。
Windchill 特性名称:com.ptc.windchill.esi.CalculateDeltaUsingLatestPublishedObject
默认值:true
设为默认设置时,考虑使用对象的最新发布小版本 (而不是版本系列的最新小版本) 来计算增量发布增量。例如,如果对象的版本 A.2 是在版本 B.1 之后发布的,那么将考虑使用版本 A.2 进行增量计算。
变更默认行为的步骤
1. 将以下特性添加到 site.xconf 以传播行为变更
<Property name="com.ptc.windchill.esi.CalculateDeltaUsingLatestPublishedOb ject" overridable="true" targetFile="codebase/com/ptc/windchill/esi/esi.properties" value="false"/>
2. 将变更传播到 esi.properties
3. 重新启动 Windchill 服务。
发布装配时,分布目标上有多个可配置属性会影响 ESI 响应消息的内容。
有关详细信息,请参阅 Windchill 帮助中心“分布目标属性”主题下的“与 BOM 相关的属性”一节。
发布变型规范
概述
在部件结构中创建变型后,Windchill 会将配置规范、选项、选择和参数输入存储在变型规范中,并将其与变型关联。变型规范是在准备创建变型时为可配置结构指定的输入和选择的集合。ERP Connector 允许发布当 ESI Options and Variants 随 ERP Connector 一同安装时分配的变型规范,以及发布 BOM 时的部件信息。仅当分布目标属性“在发布对象时,发布关联变型规范”设置为“是”时,才会发布变型规范。此属性的默认值为“否”。
发布变型规范时,还会发布“最新”、“成熟化”、“基线”、“单位有效性”、“升级请求”、“日期有效性”的配置规范以及“选项筛选器”和“属性筛选器”的筛选器信息。Windchill ESI 服务利用某些要处理的呈现器及其相关对象,所有这些服务都扩展了 BasicESIRenderer 类。这些呈现器类在本文档的“变型规范类”一节中介绍。
发布 ModuleVariantInformationLink
ModuleVariantInformationLink 是从 WTPart 到 VariantSpec 的版本到版本链接。当 ESI Options and Variants 随部件和变型规范信息一同安装时,ERP Connector 允许您将此链接与 BOM 一同发布。仅当将分布目标属性“在发布对象时,发布关联的变型规范”设置为“是”时,才会发布此链接和关联变型规范。此属性的默认值为“否”。
BasicESIRenderer
此类是用来实现接口 ESIRenderer 的抽象类,由 ESI 服务提供的变型规范和相关呈现器类扩展而来。有关 BasicESIRenderer 的详细信息,请参阅
类一节。
VariantSpecRenderer
它属于包 com.ptc.windchill.esi.ov,并且可扩展用于自定义。在发布 BOM 结构、具有已分配变型规范和设置特定分布目标属性时,类会被实例化。
有关类中可用属性和方法的详细信息,请参阅 Windchill 版本特定的 Java 文档。
|
除了变型规范本身之外,呈现器还具有处理变型规范导航条件的方法。
|
当分布目标属性“在发布对象时,发布关联的变型规范”设置为“是”时,ESI 服务在发布 BOM 结构时处理分配的变型规范 (如有)。
发布变型规范时,还会发布其相关的配置规范、选项筛选器和属性。VariantSpecRenderer 呈现器使用 ConfigSpecRenderer 和 FilterRenderer 实现此目的。
ConfigSpecRenderer
它属于包 com.ptc.windchill.esi.ov,并且可由自定义者进行扩展。该类由 buildGroups() API 实例化,该 API 转而调用 VarinatSpecRenderer 类的 renderConfigSpec() API,以处理与 VariantSpec 相关的所有 configSpec。此类扩展自 NavigationCriteriaAssociatedObjectRenderer,进而扩展自 BasicESIRenderer。它用于初始化 ConfigSpec 呈现器和 FilterRenderer 所需的数据。
有关此类中可用属性和方法的详细信息,请参阅 Windchill 版本特定的 Java 文档。
对于已发布变型规范中的每种配置规范类型,在 ESI 响应中都有一个 <ESIPartConfigSpec> 元素。元素包含属性 Class,您可通过该属性标识所发布的配置类型。此外,该元素还包含 Product_Configuration_ObjectID 属性,该属性表示配置规范是变型规范的一部分。
FilterRenderer
它属于包 com.ptc.windchill.esi.ov,并且可由自定义者进行扩展。该类由 buildGroups() API 实例化,该 API 转而调用 VariableSpecRenderer 类的 renderFilters() API,以处理与变型规范相关的所有选项筛选器和属性筛选器。此类扩展自 NavigationCriteriaAssociatedObjectRenderer,进而扩展自 BasicESIRenderer。它用于初始化 ConfigSpec 呈现器和 FilterRenderer 所需的数据。
有关类中可用属性和方法的详细信息,请参阅 Windchill 版本特定的 Java 文档。
|
呈现器仅处理以下类型的筛选器 - 选项筛选器和属性筛选器。
|
呈现器还具有发布 OptionFilter 相关配置规范的方法。
electedChoicesInfoRenderer
它属于包 com.ptc.windchill.esi.ov,并且可由自定义者进行扩展。类由 buildGroups() API 实例化,该 API 转而调用 FilterRenderer 类的 renderOptionsAncChoices() API,以处理 OptionFilter 的所有选定选择和选项信息。此类从 BasicESIRenderer 扩展。
有关此类中可用属性和方法的详细信息,请参阅 Windchill 版本特定的 Java 文档。
OptionsVariantsHelper
它属于包 com.ptc.windhill.esi.ov,但不可由自定义者进行扩展。该类提供 renderAssocVarinatSPec 方法,该方法采用 VariantSppec 必须发布的部件对象、验证字符串、VdbBuilder 实例和 VariantSpec 集合。
有关此类中可用属性和方法的详细信息,请参阅 Windchill 版本特定的 Java 文档。
自定义点
可扩展类
如果存在具有预设设置的不同类型的变型规范、筛选器或配置规范,则必须为上述对象创建自己的呈现器,并将其注册到相应选择器的 "service.properties" 文件中。以下是可使用的选择器和预设呈现器文件。
VariantSpecRenderer
服务特性名称:com.ptc.windchill.esi.rnd.ESIRenderer
<Product_Configuration> 元素的默认属性值:
<Option cardinality="duplicate"
requestor="com.ptc.wpcfg.doc.VariantSpec"
selector="VARIANTSPEC"
serviceClass="com.ptc.windchill.esi.ov.VariantSpecRenderer"/>
ConfigSpecRenderer
服务特性名称:com.ptc.windchill.esi.rnd.ESIRenderer
<ESIPartConfigSpec> 元素的默认属性值:
<Option cardinality="duplicate"
requestor="wt.vc.config.ConfigSpec"
selector="CONFIGSPECRENDERER"
serviceClass="com.ptc.windchill.esi.ov.ConfigSpecRenderer"/>
如果用户想要添加未提供预设设置的新配置规范,则改写 renderConfigSpec 方法。如果新添加的 configSpec 为 WTPartConfigSpec 类型,则用户只能改写 adjustConfigSpecElement 来添加自己的逻辑以显示添加的 configSpec
FilterRenderer
服务特性名称:com.ptc.windchill.esi.rnd.ESIRenderer
<ESIOptionFilter> 元素的默认属性值:
<Option cardinality="duplicate"
requestor="wt.filter.NavigationFilter2"
selector="NAVIGATIONFILTER"serviceClass="com.ptc.windchill.esi.ov.FilterRenderer"/>
SelectedChoicesInfoRenderer
服务特性名称:com.ptc.windchill.esi.rnd.ESIRenderer
<ESISelectedChoices> 元素的默认属性值:
<Option cardinality="duplicate"
requestor="com.ptc.windchill.option.model.Option"
selector="SELECTEDCHOICESINFO"
serviceClass="com.ptc.windchill.esi.ov.SelectedChoicesInfoRenderer"/>
变更 VariantSpec/Customized 逻辑的类型以呈现附加到部件的 VariantSPec:
如果您拥有自己的逻辑来呈现变型规范对象,则改写 BasicEsiRenderer 中的 renderAssociatedVariantSpec 方法,以写入用于获取关联到部件的 VariantSpec 集合的逻辑。
此 API 内部调用 BasicEsiRenderer 的 renderAssocVariantSpec,动态调用 OptionsVarinatHelper 类的方法 renderAssocVariantSpec。
此方法负责调用 VariantSpecRenderer 的 buildGroup() 方法。
添加新筛选器
更新 ESI ResponseMetaInfo.xml 以呈现其他筛选器对象。
在 Added_Product_Configuration 的组信息中添加筛选器 MapInfo,以使其与变型规范存储桶一起呈现。
创建新 FilterRenderer (例如 CustomizedFilterRenderer),方法是扩展
1. NavigationCriteriaAssociatedObjectRenderer 并为要呈现的所有筛选器添加自己的逻辑,或扩展
2. FilterRendererer 并添加逻辑以通过改写 buildGroup() API 在其中显示新筛选器。
在 xconf 文件中针对 NAVIGATIONFILTER 选择器注册新的 FilterRenderer
添加新配置规范
更新 ESI ResponseMetaInfo.xml 以呈现其他 ConfigSpec 对象。
在 Added_Product_Configuration 组信息中添加新的 configSPec MapInfo,以使其与变型规范存储桶一起呈现。
1. NavigationCriteriaAssociatedObjectRenderer 并为要呈现的所有 configSpec (包括预设配置规范) 添加自己的逻辑,或者扩展
2. ConfigSpecRenderer 并添加逻辑以通过改写 renderConfigSpec () API 在其中显示新 ConfigSpec。
如果新添加的 configSpec 为 WTPartConfigSpec 类型,则用户只能改写 adjustConfigSpecElement() 来添加自己的逻辑以显示添加的 configSpec。
在 xconf 文件中针对 CONFIGSPECRENDERER 选择器注册新的 FilterRenderer