정보 요소에 대한 검색 조건을 제한하는 사용자 정의 후크
후크를 사용하여 검색 조건을 제한하는 사용자 정의는 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");
}
}
}