高级自定义 > 业务逻辑自定义 > 自定义更改管理 > 为更改关系表格中的链接添加属性 > 定义属性约束 > 自定义多个库存处置 > 自定义点
  
自定义点
引入在处置类型中使用的新值
预设 (OOTB) 库存处置属性值为固定值列表。如果要通过添加新条目来自定义可用的预设处置类型,则必须在 InventoryDispositionRB.rbinfo 文件中定义一个条目。
InventoryDispositionRB.rbinfo 文件包含一组固定的库存处置值主列表。要在 InventoryDispositionRB.rbinfo 文件中添加条目,请使用 enumCustomize 工具来编辑文件。有关详细信息,请参阅枚举类型自定义实用程序
自定义处置类型后,可使用“类型和属性管理”实用程序。在受影响的活动数据类型上,选择处置属性,然后在“约束”选项卡中编辑“枚举值列表”
指定用于处置的默认值
使用 enumCustomize 工具选择默认处置值。有关详细信息,请参阅枚举类型自定义实用程序
如果未将默认处置值添加到库存处置类型的约束集,则在库存处置 UI 下拉列表中会显示一个空白作为预选值。
添加新处置类型
库存处置类型是添加到 AffectedActivityData 链接的枚举列。存在系统预设添加的库存处置类型;自定义者可通过使用类型管理器将更多的库存处置类型添加为 AffectedActivityData 链接上的全局属性,以满足其业务需要。以下是要遵循的步骤
1. 扩展 AffectedItemsTableBuilder 并覆盖 getDispositionComponentIds API 以考虑新的库存处置类型。此外,如果您决定扩展 ChangeTaskAffectedItemsTableViews,而不是仅对其进行更改,则需要覆盖 buildConfigurationTable 以返回您的新表格视图。
@ComponentBuilder("changeTask.affectedItemsTable")
public class YourNewTableBuilder extends AffectedItemsTableBuilder {
/**
* Returns the list of supported disposition types.
*/@Override
public List <String> getDispositionComponentIds() {
}
/**
* Returns the configurable table.
*/@Override
public ConfigurableTable buildConfigurableTable(String id) throws WTException {
}
}
2. 注册构建器。
构建器将由 MVC 框架动态发现。为使得框架能够找到您的构建器,您需要在 src_web 变型中 mvc 包下的 xml 配置文件中注册构建器的基础包位置或构建器类。以下是在 ChangeManagement-configs.xml 中注册的 AffectedItemsTableBuilder 的示例。
注册基础构建器包。将其添加到 xml 配置文件:
<mvc:builder-scan base-package="com.ptc.windchill.enterprise.change2.mvc.builders"/>
或注册构建器类。将其添加到 xml 配置文件:
<bean class=" com.ptc.windchill.enterprise.change2.mvc.builders.tables.AffectedItemsTableBuilder "/>
3. @ComponentBuilder 注释会将构建器与系统中的其他元件 (如 JSP) 连接起来。放置在构建器的 @ComponentBuilder(“changeTask.affectedItemsTable “) 注释中的字符串必须与 JSP 中所包含的构建器 ID 相同。例如,affectedItemsTable.jsp 包含以下用于请求更改任务受影响的项组件。
<jsp:include
page="${mvc:getComponentURL('changeTask.affectedItemsTable')}"/>
4. 扩展 ChangeTaskAffectedItemsTableViews 以将您的新库存处置类型添加到链接
public class YourTableViews extends ChangeTaskAffectedItemsTableViews
{
/**
* Get the disposition columns
*/
@Override
public List <?> getSpecialTableColumnsAttrDefinition(Locale locale) {
}
}
5. 扩展 DefaultDispositionHandler 以获取/设置新的库存处置类型的值。您至少需要覆盖以下给定 API:
public class YourNewDispositionHandler extends DefaultDispositionHandler {
/**
* Get disposition value for a given disposition type.
*/
@Override
public InventoryDisposition getDispositionValue(String componentId, BinaryLink link) {

}

/**
* Set the disposition value for a given disposition type. */
@Override
public boolean setDispositionValue(String componentId, BinaryLink link, InventoryDisposition disposition) throws WTException {

}

/**
* Get the default disposition value for a given disposition type
*/
@Override
public InventoryDisposition getDefaultInventoryDisposition( ChangeLinkAttributeBean linkBean, String component_id) {

}

/**
* Get the disposition value set of a given disposition type
*/
@Override
public ArrayList <InventoryDisposition> getInventoryDispositionSet (ChangeLinkAttributeBean linkBean, String component_id) {

}
}
6. 在服务特性文件 (ChangeManagement-service.properties.xconf) 中注册新的处置处理程序。选择器属性是新库存处置类型,而 serviceClass 是新处置处理程序。
<! -- Handler for processing the disposition types -->
<Service context="default" name="com.ptc.windchill.enterprise.change2. handler.DispositionHandler"><Option serviceClass="com.ptc. windchill.enterprise. change2.handler.YourNewDispositionHandler"
selector="YourNewDispositionType"
requestor="null"
cardinality="duplicate"/>
</Service>
7. 针对 DispositionDataUtility 注册处置类型。您还可以选择扩展 DispositionDataUtility 以满足您的业务需要。用于注册处置的服务特性文件是 ChangeManagement-components.dataUtilities.properties.xconf
例如:
<Option serviceClass="com.ptc.windchill.enterprise.change2. dataUtilities.DispositionDataUtility"
requestor="java.lang.Object"
selector="YourNewDisposition"
cardinality="duplicate"/>
通过 UI 自定义
1. 站点管理员可转至“类型管理器”并为 AffectedActivityData 链接创建一个新的全局属性,即库存处置类型
2. 将属性约束为您在“引入在处置类型中使用的新值”一节创建的新处置值。
3. 在配置多个处置类型和值后,可在 AffectedActivityData 链接上创建多个处置实例。
通过转至“选择受影响的/产生的对象”步骤来创建更改通告并更新默认更改任务
新处置类型在受影响对象表格中应显示为列
新处置类型 (列) 下的下拉列表应显示约束到该类型的新处置值
要更改处置类型的处置值,请单击操作下拉列表,然后选择“设置处置”。