高度なカスタマイズ > ビジネスロジックのカスタマイズ > Windchill Workgroup Manager のカスタマイズ > PDM 操作用前処理カスタマイズフック
  
PDM 操作用前処理カスタマイズフック
現在のところ、前処理フックはチェックイン、チェックアウト、名前の変更、改訂、複製操作でのみサポートされています。後処理フックはサポートされていません。前処理フックは本質的に拒否だけが可能であり、永続可能オブジェクトを修正しないワークフローのみを追加します。拒否による例外を受け取ってトランザクションを中断するチェックだけが行われます。これにより、永続可能オブジェクトからプロパティを抽出して別の検証メカニズムを追加するワークフローを容易に追加できます。
カスタム前処理フックを実装するには、次のステップを実行する必要があります。
1. UWGMEventListener インタフェースを実装します。
2. 実装したイベントリスナーを <Windchill>/codebase/com/ptc/windchill/uwgm/common/delegate/application.service.xconf で登録します。
UWGMEventListener
カスタム EventHandler コードが実装する必要がある UWGMEventListener API を以下に示します。
public interface UwgmEventListener
{
/**
* API to process UwgmEvent
* Custom UwgmEventService delegate should implement this API.
*
* @param iteration : Collection of request Iterations
* @param workspace : EPMWorkspace
* @return WTCollection : Response
* @throws WTException
*/

public WTCollection processUwgmEvent(C11nRequestContext
requestContext,WTCollection iteration,EPMWorkspace workspace)
throws WTException;

}
UWGMEventListener の実装例が Windchill インストール環境下の <Windchill>codebase/com/ptc/windchill/uwgm/proesrv/c11n/UwgmC11nEventListenerTest.java に参照用として提供されています。このクラスを再利用することは想定されていません。必要に応じて独自のサーバー側カスタマイズを実装してください。
カスタムイベントリスナーの登録
ファイル <Windchill>/codebase/com/ptc/windchill/uwgm/common/delegate/application.service.xconf でカスタムリスナー (UwgmEventListener) ハンドラを登録する必要があります。
一般的なフォーマットの例を以下に示します。
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE Configuration SYSTEM "xconf.dtd">
<Configuration targetFile="codebase/service.properties">
<!-- UWGM Custom Services Implementation for Unit Test -->
<Service context="default"
name="com.ptc.windchill.uwgm.proesrv.c11n.UwgmEventListener">
<Option cardinality="duplicate"
requestor="java.lang.Object" selector="PRE_CHECKIN"
serviceClass="com.ptc.windchill.uwgm.proesrv.c11n.UwgmC11nEventListenerTest"/>
</Service>
</Configuration>
カスタムイベントリスナーの登録用に、現在のところ次のセレクタがサポートされています。
PRE_CHECKIN
PRE_CHECKOUT
PRE_RENAME
PRE_SAVEAS
PRE_REVISE
xconfmanager ユーティリティを使用して、application.service.xconf ファイル内の変更を service.properties ファイルに反映する必要があります。