高度なカスタマイズ > ビジネスロジックのカスタマイズ > 変更管理のカスタマイズ > 変更管理の多重度
  
変更管理の多重度
変更リクエストの変更オーダーまたは問題提起の変更リクエストにおける多重度またはワークフロー終了規則を修正できます。
バックグラウンド
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
リンククラス
WTChangeRequest2 の ChangeOrder2 多重度への 1-N、N-1、または N-M (プリファレンス駆動) のサポート
wt.change2.FormalizedByDelegate
リンククラス
WTChangeRequest2 の ChangeIssue2 多重度への 1-N、N-1、または N-M (プリファレンス駆動) のサポート
ChangeMgmt-service.properties.xconf
デフォルトの変更サービスプロパティ
上記の多重度規則がデフォルトで登録されたプロパティファイル。
カスタマイズポイント
1. AddressedBy2 リンクの多重度をカスタマイズする場合、目的の動作に最も近い既存の機能に応じて DefaultAddressedByDelegate または AddressedByDelegate を拡張する、新しい 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 リンクの多重度をカスタマイズする場合、目的の動作に最も近い既存の機能に応じて DefaultFormalizedByDelegate または FormalizedByDelegate を拡張する、新しい 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 タイプの多重度修正
たとえば、WTVariance および WTChangeRequest2 間の 1-1 多重度を適用する場合、次のプロパティを xconf 構成に追加します。
<Service context="default" name="wt.change2.ChangeCardinalityDelegate">
<Option requestor="wt.change2.WTChangeRequest2" cardinality="singleton"
serviceClass="wt.change2.DefaultFormalizedByDelegate"
selector="wt.change2.WTVariance"/>
</Service>