高级自定义 > 业务逻辑自定义 > Windchill ProjectLink 自定义 > 编写自定义 Windchill ProjectLink 算法 > 自定义健康状况图标显示
  
自定义健康状况图标显示
创建处理程序类
接口 HealthStatusIconHandler.java 旨在扩展为健康状况图标显示提供自定义类这一功能。此接口的定义如下:
public HashMap<Object, Object> getHealthStatusImageIcon(List objects);
public Object getIcon(HealthStatusType healthStatusType, boolean isComplete, boolean isCancelled,
AbstractPlanActivity activity) throws WTException, WTPropertyVetoException;
public String getIconForCompletedLate();
public String getIconForCompletedPlannables();
public String getIconForCancelledPlannables();
提供了一个名为 PlannableHealthStatusIconHandler 的“预置”图标处理程序。对于任何自定义,应创建一个自定义类,以实现上述接口并扩展此预设处理程序,并根据具体用途覆盖相应的方法。
下表介绍了自定义以及需要覆盖的方法:
自定义
需要覆盖的方法
在最后期限之后完成的活动或子计划
getIconForCompletedLate()
在最后期限之前或之后完成的活动或子计划
getIconForCompletedPlannables()
已取消的活动或已取消的子计划
getIconForCancelledPlannables()
健康状况红色
getIcon()
健康状况黄色
getIcon()
健康状况绿色
getIcon()
健康状况不可用
getIcon()
这些被覆盖的方法应返回包含如下所示图像路径的字符串:netmarkets\images\xxxxx.png
例如,下面的代码可能是一种可行的自定义算法,该算法为健康状况为 'RED' 的活动配置健康状况图标:
package com.ptc.projectmanagement.plan;
public class CustomHealthStatusCalculation extends PlannableHealthStatusIconHandler {
@Override
public Object getIcon(HealthStatusType healthStatusType, boolean isComplete, boolean isCancelled, AbstractPlanActivity activity) throws WTException, WTPropertyVetoException {
Object statusIcon = "";
Locale locale = SessionHelper.getLocale();
if(healthStatusType != null){
if(HealthStatusType.RED.equals(healthStatusType)){
statusIcon = getStatusIcon("netmarkets/images/red.gif", healthStatusType.getDisplay(locale));
}
else{
super.getIcon(healthStatusType, isComplete, isCancelled, activity);
}
}
}
}
配置处理程序类
编写用于配置图形健康状况图标的自定义算法后,即会在 xconf 文件中配置以下各项。
“类型和属性管理”实用程序复制“内部名称”,并将以下条目插入到 projectmanagement.service.properties.xconf 文件中。位置是 ${WT_HOME}\Windchill\codebase\com\ptc\projectmanagement\projectmanagement.service.properties.xconf,并在 Windchill shell 中运行 xconfmanager -p
<Service context="default"
name="com.ptc.projectmanagement.plan.HealthStatusIconHandler">
<Option cardinality="singleton" requestor= "null"
selector = "<internal type name>"
serviceClass="<fully qualified handler class name>"/>
</Service>
示例代码条目可以是:
<Service context="default"
name="com.ptc.projectmanagement.plan.HealthStatusIconHandler">
<Option cardinality="singleton" requestor= "null"
selector = " org.rnd.VW_AutoHealthAutoDeadline " serviceClass= "com.ptc.projectmanagement.plan.HealthStatusIconForRed"/>
</Service>
对于类型 'PlanActivity',按如下方式定义了预置处理程序:
<Service context="default" name="com.ptc.projectmanagement.plan. HealthStatusIconHandler ">
<Option cardinality="singleton" requestor= "null"
selector = "com.ptc.projectmanagement.plan.Plannable" serviceClass="com.ptc.projectmanagement.plan.PlannableHealthStatusIconHandler"/>
</Service>