基本的なカスタマイズ > ユーザーインタフェースのカスタマイズ > UI の情報の表示 > UI の検証 > ソリューション > 手順 - 事前検証 > ソリューションベースの事前検証の実装 > ソリューショングループの実装
  
ソリューショングループの実装
ソリューショングループクラスの実装は非常に簡単です。UIComponentSolutionGroup インタフェースを実装するクラスを作成し、クラス内に getInvalidInstallKeys() メソッドを実装するだけです。そのメソッドで、どのソリューションがインストールされているかを確認し、インストールされているソリューションに基づいて、使用を許可しない操作または UI コンポーネントを表す検証キーリストを返します。
以下のページのクラスは、ソリューショングループの簡単な例です。getInvalidInstallKeys() メソッドで Pro/INTRALINK がインストールされているかどうかを確認します。Pro/I がインストールされていれば、使用を禁止する操作またはコンポーネントを表す検証キーリストを返します。
package com.ptc.windchill.enterprise.myPackage;
import java.util.ArrayList;
import java.util.List;
import org.apache.log4j.Logger;
import wt.log4j.LogR;
import wt.util.InstalledProperties;
public class MySolutionGroup implements UIComponentSolutionGroup
{
private static UIValidationKey listKey =
UIValidationKey.newInstance("list", "change");
private static UIValidationKey crKey =
UIValidationKey.newInstance("listChangeRequests", "change");
private static UIValidationKey cnKey =
UIValidationKey.newInstance("listChangeNotices", "change");
private static UIValidationKey viewKey =
UIValidationKey.newInstance("view", "change");
/*
* DEFINE ADDITIONAL ACTIONS AND UI COMPONENTS AS NEEDED
*/
private static Logger logger =
LogR.getLogger(MySolutionGroup.class.getName());
public List getInvalidInstallKeys()
{
if (logger.isDebugEnabled()){
logger.debug("ENTERING MySolutionGroup.getInvalidKeys");
}
ArrayList invalidList = new ArrayList();
// if PRO-I is installed, the following UI components are
not valid.
if
(InstalledProperties.isInstalled(InstalledProperties.PRO_I)){
invalidList.add(listKey);
invalidList.add(listKey);
invalidList.add(cnKey);
invalidList.add(viewKey);
}
/*
* ADD ADDITIONAL SOLUTION-BASED CHECKS AS NEEDED
*/
if (logger.isTraceEnabled()){
logger.trace("RETURNING " + (List)invalidList);
}
(logger.(trace("RETURNING " + (List)invalidList))){
logger.debug("EXITING MySolutionGroup.getInvalidKeys");
}
return invalidList;
}
}
検証キーのファクトリメソッドにどの値を含めるかは、作成する検証キーが操作用か属性用かによって異なります。操作の検証キーを作成する場合は、最初の引数が操作名 (*actions.xml から取得)、2 番目の引数がオブジェクトタイプ (*actions.xml から取得) を表します。たとえば、次の product 操作を表す検証キーを作成するには、UIValidationKey.newInstance ("product"、"navigation") を呼び出します。
<objecttype name="navigation" class=""
resourceBundle="com.ptc.core.ui.navigationRB">
<action name="product" renderType="GENERAL">
<command class="netmarkets"
method="servlet/Navigation?tab=product" windowType="page"/>
</action>
...
検証キーの作成
検証キーのファクトリメソッドにどの値を含めるかは、作成する検証キーが操作用か操作モデル用か属性用かによって異なります。
操作の検証キーを作成する場合は、最初の引数が操作名 (*actions.xml から取得)、2 番目の引数がオブジェクトタイプ (*actions.xml から取得) を表します。たとえば、下の product 操作を表す検証キーを作成するには、UIValidationKey.newInstance("product"、"navigation") を呼び出します。
<objecttype name="navigation" class=""
resourceBundle="com.ptc.core.ui.navigationRB">
<action name="product"
renderType="GENERAL">
<command class="netmarkets"
method="servlet/Navigation?tab=product"
windowType="page"/>
</action>
...
操作モデルの検証キーを作成する場合は、最初の引数が操作モデル名 (*actionModels.xml から取得)、2 番目の引数がオブジェクトタイプ (常に "object") を表します。たとえば、下の carambola_sub_model を表す検証キーを作成するには、UIValidationKey.newInstance("carambola_sub_model"、"object") を呼び出します。
<model name="carambola_sub_model">
<action name="ripe" type="carambola" />
<action name="grow" type="carambola" />
</model>
属性の検証キーを作成する場合は、Windchill クライアントアーキテクチャでその属性に使用された descriptor ID を使用します。たとえば、descriptor ID が "iteration" の属性の検証キーを作成するには、UIValidationKey.newInstance("iteration") を呼び出します。