情報エレメントのサーチ基準を制限するカスタムフック
フックを使用したサーチ基準を制限するカスタマイズは、Java の専門知識を持つ Windchill 管理者だけが実行できます。
既存の情報エレメントをサービス構造に挿入するには、「既存を挿入」 > 「既存の情報エレメントを挿入」の順にクリックします。「既存の情報エレメントを挿入」ウィンドウが開き、指定したサーチ基準に基づいたすべての情報エレメントがリストされます。カスタムフックを使用してサーチ基準を制限することで、必要な情報エレメントのみを表示できます。サーチ基準はフックで指定されているビジネスロジックに基づきます。
このフックを実装するには、カスタムサービスクラスで com.ptc.arbortext.windchill.corestruct.server.ops.SIMCustomSearchCriteriaService java クラスを拡張します。以下の手順を実行します。
1. Windchill ホームディレクトリで、site.xconf ファイルをテキストエディタで開き、必要なサービスクラスを <Option serviceClass="YourCustomSearchServiceClassFullName" requestor="null" selector="null"/> というフォーマットで追加します。例:
<Service name="com.ptc.arbortext.windchill.corestruct.server.ops.SIMCustomSearchCriteriaService" targetFile="codebase/service.properties">
<Option serviceClass="com.ptc.arbortext.windchill.corestruct.server.ops.CustomASPSSearchService" requestor="null" selector="null"/>
</Service>
2. xconfmanager ユーティリティを使用して変更を適用します。<Windchill>\bin ディレクトリで、以下のコマンドを入力します。
xconfmanager -pF
3. メソッドサーバーを再起動します。
サンプル
以下に示すカスタムコードの例では、リリース済み状態の情報エレメントのサーチ結果だけが表示されるようにサーチ基準を制限しています。
/* bcwti
*
* Copyright (c) 2021 PTC, Inc. All Rights Reserved.
*
* This software is the confidential and proprietary information of PTC
* and is subject to the terms of a software license agreement.
* You shall not disclose such confidential information and shall use it
* only in accordance with the terms of the license agreement.
*
* ecwti
*/

package com.ptc.arbortext.windchill.corestruct.server.ops;

import com.ptc.arbortext.windchill.corestruct.client.ops.ASPSFindOperation.ASPSFindOperationParams;

import wt.fc.ObjectIdentifier;
import wt.fc.ObjectReference;
import wt.fc.Persistable;
import wt.inf.container.WTContained;
import wt.util.WTException;

public class CustomASPSSearchService implements SIMCustomSearchCriteriaService {
private static final long serialVersionUID = 1L;

@Override
public void updateSearchCriteria(ASPSFindOperationParams fop) throws WTException {
Persistable contextObject = ObjectReference.newObjectReference(ObjectIdentifier.newObjectIdentifier(fop.getRootIdentifier().getStringIdentifer())).getObject();
if (contextObject != null && contextObject instanceof WTContained) {
fop.getSearchCriteriaList().get(0).set("state.state", "RELEASED");
}
}
}
これは役に立ちましたか?