高度なカスタマイズ > ビジネスロジックのカスタマイズ > MPMLink のカスタマイズ > 製造構造を生成するためのソーステンプレートのカスタマイズ
製造構造を生成するためのソーステンプレートのカスタマイズ
目的
「ソース」リスト内のプロセス計画またはルーティング計画のテンプレートを特定するために、デフォルトのロジックをカスタマイズします。
ソリューション
既成の委任フレームワークを使用すると、テンプレートを使用して下流構造を生成できます。また、「製造構造を初期化」ダイアログボックスの「ソース」リストに追加するカスタムロジックを拡張および適用できます。
前提となる知識
このタスクを実行するには、以下のことを理解している必要があります。
Java の基礎 (継承、コレクション)
Windchill 委任と xconfmanager ユーティリティ
ソリューションエレメント
RelatedSourceDelegate
複製部品のソーステンプレートをフェッチするために Windchill によって呼び出される抽象クラス
DefaultRelatedSourceDelegate
ソーステンプレートをフェッチするための既成の実装
CustomRelatedSourceDelegate
プロジェクトのニーズに基づいてソーステンプレートを特定するように調整されたカスタム実装
手順
テンプレートをフェッチするためのカスタムロジックを実装するには、次の手順を実行します。
1. DefaultRelatedSourceDelegate を拡張して、CustomRelatedSourceDelegate などの新しい委任クラスを作成します。
2. 委任を BaseServer-service.properties.xconf ファイルに登録します。
3. 必要に応じてメソッドをオーバーライドします。
a. getSourceTemplates - ルーティング計画テンプレートをフェッチするためのロジックをカスタマイズします。
b. getSourceProcessPlans - プロセス計画テンプレートをフェッチするためのロジックをカスタマイズします。
4. xconfmanager -p を実行して、変更を適用します。
5. メソッドサーバーを再起動して、変更を有効にします。
既成の実装
以下は、ソースルーティング計画をフェッチするための既成の実装です。
XCONF スニペットのサンプル
カスタム委任を登録する XCONF コンフィギュレーションのサンプルを次に示します。
<Service context="default" name="com.ptc.windchill.baseserver.delegate.RelatedSourceDelegate">
<Option cardinality="singleton"
requestor=”null”
serviceClass="com.ptc.windchill.baseserver.delegate.CustomRelatedSourceDelegate"
selector="default"/>
</Service>
サンプル実装
次の例は、別のヘルパー (たとえば、部品属性に含まれるプロセス計画 OID のリスト) からソースプロセス計画をフェッチする、関連ソース委任のカスタム実装を示しています。
public class CustomRelatedSourceDelegate extends DefaultRelatedSourceDelegate {
@Override
protected Set<String> getSourceProcessPlans(final WTPart selectedPart, NavigationCriteria nc, boolean flag) {
//Fetch the list of process plan oids and related mbom oid from attribute.
Map<String, String> partToProcessPlans = CustomHelper.getMBomToProcessPlanMap(selectedPart, nc);
Set<String> processPlans = new HashSet<>();
for(Entry<String, String> mapEntry : partToProcessPlans.entrySet()) {
String mBomOid = mapEntry.getKey();
String processPlanOid = mapEntry.getValue();
If (flag) {
processPlans.add(mBomOid + “|” + processPlanOid);
} else {
processPlans.add(processPlanOid);
}
}
return processPlans;
}
これは役に立ちましたか?