高度なカスタマイズ > ビジネスロジックのカスタマイズ > Windchill Workgroup Manager のカスタマイズ > Windchill サーバー側カスタマイズの作成
  
Windchill サーバー側カスタマイズの作成
Windchill サーバーは、カスタム Windchill Workgroup Manager リクエストを検証し、カスタムサービスを呼び出すためのインフラストラクチャを提供します。通常は、次のステップを実行する必要があります。
1. UwgmC11nService インタフェースを実装する。
2. <Windchill>/codebase/com/ptc/windchill/uwgm/common/delegate/application.service.xconf でカスタムサービスを登録する。
カスタムリクエストのタイプによって異なるメソッドが呼び出されます。
ワークスペースベースでないカスタムリクエスト (C11nRequest) では UwgmC11nService.execute() メソッドが呼び出されます。
ワークスペースベースのカスタムリクエスト (WorkspaceC11nRequest) では UwgmC11nService.executeInWS() メソッドが呼び出されます。
ただし、このどちらのメソッドでも、次の属性のゲッターを提供する、カスタマイズされたリクエストコンテキスト (C11nRequestContext) が使用されます。
WTPrincipal
ロケール
クライアント名
バージョン
セッション ID
(execute()executeInWS() のどちらのメソッドも中間 UwgmC11nResponse を返し、これは C11nMessage としてシリアライズされてクライアントに戻されます。
UwgmC11nService
public interface UwgmC11nService
{
/**
* The Cutsom service delegate is expected to implement execute
* @param c11nCtx
: com.ptc.windchill.uwgm.proesrv.c11n.C11nRequestContext
* @param c11nInstructions
: Map<String, String>
* @param c11nIterationInstructions
: Map<Persistable, Map <String, String>>
* @return UwgmC11nResponse
: com.ptc.windchill.uwgm.proesrv.c11n.UwgmC11nResponse
* @throws WTException
: Exception
* @throws ConflictException
: Conflict
*/
public UwgmC11nResponse execute(C11nRequestContext c11nCtx,
Map<String, String> c11nInstructions,
Map<Persistable, Map<String, String>>
c11nIterationInstructions)
throws WTException, ConflictException;

/**
* The Cutsom service delegate is expected to implement execute
* @param c11nCtx
: com.ptc.windchill.uwgm.proesrv.c11n.C11nRequestContext
* @param c11nInstructions
: Map<String, String>
* @param c11nIterationInstructions
: Map<Persistable, Map <String, String>>
* @param ws
: EPMWorksapce
* @return UwgmC11nResponse
: com.ptc.windchill.uwgm.proesrv.c11n.UwgmC11nResponse
* @throws WTException
: Exception
* @throws ConflictException
: Conflict
*/
public UwgmC11nResponse executeInWS(C11nRequestContext c11nCtx,
EPMWorkspace ws,
Map<String, String> c11nInstructions,
Map<Persistable, Map<String, String>>
c11nIterationInstructions) throws WTException,
ConflictException;
}
C11nRequestContext
public interface C11nRequestContext
{
/**
* returns current user (principal)
* @return WTPrincipal
*/
public WTPrincipal getPrincipal();

/**
* returns current client's locale
* @return Locale
*/
public Locale getLocale();

/**
* returns client canonic name
* @return String
*/
public String getClientName();

/**
* returns client canonic version
* @return int
*/
public String getClientVersion();

/**
* returns the session information of the Client
* @return String
*/
public String getClientSessionID();

/**
* retruns the name of the PDM request
* @return String
*/
public String getRequestName ();
}
UwgmC11nResponse
public UwgmC11nResponse(Map<String, String> stringData,
Map<Persistable, Map<String, String>> iterationData)
{
responseData = stringData;
iterationResponseData = iterationData;
}

/**
* It is expected that the client recieving the response
* understands the semantics
* of the keys; and accordingly interprets the
* value of the response.
* @return Map <String, String>
*/
public Map<String, String> getResponseData()
{
return responseData;
}

/**
* Response elements associated to the Persistable.
* It is expected that the client recieving the response s
* understand the semantics of the key; and accordingly
* interprets the value of the entries in the String Map
* associated with each Persistable in the Map.
*
* @return Map<Persistable, Map<String, String>>
*/
public Map<Persistable, Map<String, String>> getIterationResponseData()
{
return iterationResponseData;
}

/**
* logging
*/
private static Log log = LogFactory.getLog(UwgmC11nResponse.class);
}
UwgmC11nService の実装例が Windchill インストール環境下の <Windchill>/codebase/com/ptc/windchill/uwgm/proesrv/c11n/UwgmC11nServiceTest.java に参照用として提供されています。このクラスを再利用することは想定されていません。必要に応じて独自のサーバー側カスタマイズを実装してください。