高级自定义 > 业务逻辑自定义 > 自定义更改管理 > 更改管理基数
  
更改管理基数
您可以修改更改单中的更改请求或更改请求中的变更问题的基数或工作流关闭规则。
背景
AddressedBy 链接和 FormalizedBy 链接的基数由委派基础结构驱动。Windchill 10.0 M20 或更高版本中提供的预设更改对象类型的默认实现是支持 1-N、N-1 或 N-M 基数的委派。后者仅在已启用更改对象基数首选项的情况下适用。还可以使用支持 1-1 基数的新委派。
范围/适用性/假设
假定您已掌握 Java 类和概念 (例如类扩展) 的一般知识
假定您已掌握用于创建特性的 xconf 机制的一般知识
预期结果
阅读此内容后,您将了解如何为更改请求和更改单或者更改请求和更改事项创建自定义基数规则。
解决方案
解决方案:创建用于扩展默认委派的自定义类,并创建用于注册自定义委派的 xconf 条目。
必备知识
要应用此最佳做法,需要了解以下内容:
Java 类扩展
Xconfmanager
解决方案元素
元素
类型
说明
wt.change2.ChangeCardinalityDelegate
接口
基数规则的可泛化接口
wt.change2.DefaultAddressedByDelegate
链接类
支持 1-1 ChangeRequest2 至 ChangeOrder2 基数
wt.change2.DefaultFormalizedByDelegate
链接类
支持 1-1 ChangeRequest2 至 ChangeIssue2 基数
wt.change2.AddressedByDelegate
链接类
支持 1-N、N-1 或 N-M (由首选项驱动) WTChangeRequest2 至 ChangeOrder2 基数
wt.change2.FormalizedByDelegate
链接类
支持 1-N、N-1 或 N-M (由首选项驱动) WTChangeRequest2 至 ChangeIssue2 基数
ChangeMgmt-service.properties.xconf
默认更改服务特性
用于注册上述基数规则的预设特性文件。
自定义点
1. 如果要自定义 AddressedBy2 链接的基数,则应扩展 DefaultAddressedByDelegateAddressedByDelegate (具体取决于哪一特性的现有功能最接近所需行为) 以创建新 java 类 (您的委派)
public class YourCustomAddresssedByDelegate
extends DefaultAddressedByDelegate
{
/**
* Determines if the change request is 'properly addressed'.
Default implementation of
* addressed by means that one change request can be addressed
* by only one change notice and vice-versa.
* @param ChangeIssue
* @param ChangeRequest2
* @return void
* @throws WTException - If the cardinality is
* invalid, a ChangeException2
* should be thrown along with the reason why the
* cardinality is not valid.
*/
@Override
public void validateCardinalityConstraints(ChangeRequest2 cr,
ChangeOrder2 co) {
//YOUR RULES IMPLEMENTED HERE
}
/**
* Overriding this method will handle the closure of the ChangeRequest2
* object based on a delegate implementation.
* Ultimately, the closure of the ChangeRequest2 will require the closure of all
* associated ChangeOrder2 objects
* which are registered against the same delegate.
*
* @param changeObjects
* @param changeObjects
* @return
*/
@Override
public boolean isReadyForResolution(ChangeRequest2 cr,
Set<ChangeOrder2> objs) {
//YOUR RULES IMPLEMENTED HERE
return true; // if the change request is ready
}
}
2. 如果要自定义 FormalizedBy 链接的基数,则应扩展 DefaultFormalizedByDelegateFormalizedByDelegate (具体取决于哪一特性的现有功能最接近所需行为) 以创建新 java 类 (您的委派)
public class YourCustomFormalizedByDelegate extends
DefaultFormalizedByDelegate
{
/**
* Determines if the change request is 'properly addressed'.
Default implementation of
* addressed by means that one change request can be addressed
* by only one change notice and vice-versa.
* @param ChangeIssue
* @param ChangeRequest2
* @return void
* @throws WTException- If the cardinality is invalid, a
* ChangeException2 should be thrown along with the
* reason why the cardinality is not valid.
*/ @Override
public void validateCardinalityConstraints(ChangeRequest2 cr,
ChangeOrder2 co) {
//YOUR RULES IMPLEMENTED HERE
}
/**
* Overriding this method will handle the closure of the ChangeRequest2
* object based on a delegate implementation.
* Ultimately, the closure of the ChangeRequest2 will require the closure of all
* associated ChangeOrder2 objects
* which are registered against the same delegate.
*
* @param changeObjects
* @return
*/
@Override
public boolean isReadyForResolution(ChangeIssue ci,
Set<ChangeRequest2> set) {
//YOUR RULES IMPLEMENTED HERE
}
}
* 
定义此 xconf 配置时,重要的是请求者 (本例中为 ext.change2.YourChangeRequest2) 不是抽象类型,这是因为框架根据具体类名称执行查找 (且不支持类型的分层查找)。但是,选择器类可以是抽象类型。如果您未注册委派,则将使用默认 Windchill 实现而非您的委派。此默认实现支持 1-N、N-1、N-N (如果已启用更改对象基数首选项)。
修改预设 Windchill 类型的基数:
例如,如果要在 WTVarianceWTChangeRequest2 之间应用 1-1 基数,则必须将以下
<Service context="default" name="wt.change2.ChangeCardinalityDelegate">
<Option requestor="wt.change2.WTChangeRequest2" cardinality="singleton"
serviceClass="wt.change2.DefaultFormalizedByDelegate"
selector="wt.change2.WTVariance"/>
</Service>
特性添加到 xconf 配置: