高度なカスタマイズ > ビジネスロジックのカスタマイズ > コンフィギュレーション仕様とフィルタのカスタマイズ > カスタムフィルタの作成
  
カスタムフィルタの作成
カスタムフィルタを作成するには、次の手順に従います。
属性の定義
カスタムフィルタの属性を定義するには、次の手順を実行します。
1. タイプおよび属性マネージャのユーザーインタフェースから「タイプを管理」タブに移動し、wt.filter.custom.CustomFilter タイプをサーチします。
2. Windchill シェルから次のコマンドを実行して、タイプおよび属性マネージャのユーザーインタフェースでカスタムフィルタを表す wt.filter.custom.CustomFilter タイプをロードします。
windchill wt.load.LoadFromFile -d %WT_HOME%\loadFiles\type\CustomFilter.xml
3. 「タイプおよび属性の管理」のユーザーインタフェースで wt.filter.custom.CustomFilter タイプをサーチし、そのサブタイプを作成します。例: org.rnd.TestFilter「インスタンス化」チェックボックスを「はい」に設定します。
4. 「属性」タブで、新しく作成したタイプ org.rnd.TestFilter に必要な属性を追加します。
5. 「レイアウト」タブで org.rndTestFilter のデフォルトのレイアウトを作成し、その「画面タイプ」「すべて」に設定します。
6. 新規レイアウトを追加し、それに「フィルタ - 編集」画面タイプを割り当てます。
7. 前のステップで作成したレイアウトに必要な属性を追加します。標準属性の場合、Windchill シェルから AddColumns ツールを実行して、属性タイプのデータベースにスペースを割り当てます。
8. (オプション) ローカライズされたグループの表示名を追加します。
ロジックの実装
ロジックを実装するには、次の手順を実行します。
1. NavigationCriteriaTabValidator を実装する新規クラスを作成し、doValidation メソッドをオーバーライドして、「Custom Filter」タブの検証に使用するカスタムロジックを指定します。例: ExampleCustomFilterTabValidator
2. TypeDefinitionPanelConfigBuilder を拡張する新規クラスを作成します。例: ExampleCustomFilterPanelConfigBuilderタイプマネージャとフィルタおよびそのサブタイプのメタデータからパネルコンフィギュレーションビルダを生成する getAdditionalTypesToMetaDatagetId をオーバーライドします。
3. AbstractNavigationCriteriaRenderer を拡張する新規クラスを作成します。例: ExampleCustomFilterRenderergetTabItem メソッドをオーバーライドして、コンフィギュレーションパネルを構築する方法を定義します。getMiniInfoiFromJSON をオーバーライドして、「現在のフィルタ」パネルにフィルタ情報を表示する方法を定義します。
4. FilterPopulator を実装する新規クラスを作成します。例: ExampleCustomFilterPopulatorgetFilterBean をオーバーライドして、翻訳済みのフィルタ名を含むフィルタビーンを定義します。
5. AbstractNavigationFilterDelegate2 を拡張する新規クラスを作成します。例: ExampleCustomFilterDelegate
a. JSON 文字列として渡された属性からフィルタインスタンスを作成するために使用される getFilterFromJSON をオーバーライドします。
b. 指定された JSON 文字列と NavigationFilter2 インスタンス (または CustomFilter) に基づいてフィルタ値を更新するために使用される updateFilterFromJSON をオーバーライドします。
c. 保存済みフィルタから JSON を作成し、保存済みフィルタが使用されるときに値をフォームに渡すために使用される getJSONFromFilter をオーバーライドします。
d. 保存済みフィルタに保存されているソフト (IBA) または標準属性を再表示するために使用できる deepCopy をオーバーライドします。
e. フィルタで定義されている属性に基づいて構造を除外する特定のロジックが含まれているフィルタメソッドをオーバーライドします。
ロジックのプラグイン
1. ModuleName-service.properties.xconf ファイルにエントリを追加し、wt.filter.custom.CustomFilter のサブタイプの名前を、上記の「属性の定義」セクションのステップ 2 で定義したもの (org.rnd.TestFilter) に変更します。例のファイル名を、カスタマイズに適した名前に置き換えます。
a. 委任を定義します。
<Service context="default" name="wt.filter.NavigationFilterDelegate2">
<Option cardinality="singleton" requestor="null" serviceClass="com.example.ExampleCustomFilterDelegate" selector="WCTYPE|wt.filter.custom.CustomFilter|org.rnd.TestFilter"/>
</Service>
b. レンダラーを定義します。
<Service context="default" name="NavigationCriteria.renderer">
<Option requestor="null" cardinality="singleton" serviceClass="com.example.ExampleCustomFilterRenderer" selector="WCTYPE|wt.filter.custom.CustomFilter|org.rnd.TestFilter" />
</Service>
c. バリデータを定義します。
<Service context="default" name="NavigationCriteria.validator">
<Option requestor="null" cardinality="singleton" serviceClass="com.example.ExampleCustomFilterTabValidator" selector="WCTYPE|wt.filter.custom.CustomFilter|org.rnd.TestFilter" />
</Serviec>
d. ポピュレータを定義します。
<Service context="default" name="NavigationCriteria.populator">
<Option requestor="null" cardinality="singleton" serviceClass="com.example.ExampleCustomFilterPopulator" selector="WCTYPE|wt.filter.custom.CustomFilter|org.rnd.TestFilter" />
</Service>
2. ModuleName-wt.properties.xconf ファイルに以下のエントリを追加します。
<Property name="NavigationCriteria.filters.order.XX" default="WCTYPE|wt.filter.custom.CustomFilter|org.rnd.TestFilter"/>
プロパティ名の XX を有効なフィルタ順序に変更します (例とフィルタ順序については、ExpansionCriteriaCore-wt.properties.xconf ファイルを参照してください)。
3. Windchill シェルから次のコマンドを実行して、変更を適用します。
xconfmanager -Fp
この例は、カスタムフィルタを機能させる方法を示します。
属性の定義
1. 最初に、カスタムフィルタがデフォルトで Windchill にロードされていなければなりません。「タイプおよび属性の管理」のユーザーインタフェースの「タイプを管理」タブで wt.filter.custom.CustomFilter をサーチします。タイプがロードされていない場合は、Windchill シェルに移動し、次のコマンドを実行することによって、Windchill にデフォルトのカスタムフィルタタイプをロードできます。
windchill wt.load.LoadFromFile -d %WT_HOME%\loadFiles\type\CustomFilter.xml -u wcadmin -p wcadmin
2. メソッドサーバーを再起動します。
3. 標準属性を追加できるようにデータベース CustomFilter で追加の列を定義するには、Windchill シェルで AddColumns ツールを実行します。
AddColumns.sh wt.filter.custom.CustomFilter String=5 Double=3 Timestamp=2 Long=3 Boolean=2
4. メソッドサーバーを再起動します。
5. $WT_HOME/prog_examples/CustomFilter/loadFiles に移動します。次のコマンドを実行して、すべてのファイルをロードします。
windchill wt.load.LoadFromFile -d CustomFilter_TestFilter_LoadSet.xml -u wcadmin -p wcadmin
オプションで、各ファイルを個別にロードできます。
windchill wt.load.LoadFromFile -d <File Location> \CustomFilter_TestFilter_0.xml -u wcadmin -p wcadmin
windchill wt.load.LoadFromFile -d <File Location> \CustomFilter_TestFilter_1.xml -u wcadmin -p wcadmin
windchill wt.load.LoadFromFile -d <File Location> \CustomFilter_TestFilter_2.xml -u wcadmin -p wcadmin
windchill wt.load.LoadFromFile -d <File Location> \CustomFilter_TestFilter_3.xml -u wcadmin -p wcadmin
これらのステップにより、Test Filter サブタイプを持つ Custom Filter タイプが作成されます。いくつかの制約が定義されている追加の属性を TestFilter に追加しなければなりません。デフォルトおよび「フィルタ - 編集」レイアウトがすでに定義されていることを確認してください。
CustomFilter のロード
User Custom Filter ソフトタイプのロード
User Custom Filter ソフトタイプの「フィルタ - 編集」として定義されたレイアウト
ロジックの実装
1. Windchill シェルを起動し、$WT_HOME/prog_examples/CustomFilter/src フォルダに移動します。
2. ant コマンドを起動して、例の展開に使用できる jar ファイルをコンパイルし、作成します。
3. 以下のコマンドを実行して、$WT_HOME/prog_examples/CustomFilter/codebase 内のファイルを $WT_HOME/codebase フォルダにコピーし、$WT_HOME/prog_examples/CustomFilter/bin 内の jar ファイルを $WT_HOME/srclib/wnc にコピーします。
cp -r $WT_HOME/prog_examples/CustomFilter/codebase/* $WT_HOME/codebase/
cp -r $WT_HOME/prog_examples/CustomFilter/bin/* $WT_HOME/srclib/wnc/
4. Windchill シェルで $WT_HOME/bin に移動し、次のコマンドを実行して、例とともに展開された GWT コードをコンパイルします。
Ant -f gwt.xml
5. メソッドサーバーを再起動します。
ロジックのプラグイン
1. $WT_HOMEModuleName-service.properties.xconf ファイルを作成するか既存のファイルを使用し、以下のサービスオプションを追加します。
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE Configuration SYSTEM "xconf.dtd">
<Configuration targetFile="codebase/service.properties"?
<Service context="default" name="wt.filter.NavigationFilterDelegate2">
<Option cardinality="singleton" requestor="null" serviceClass="wt.filter.custom.ExampleCustomFilterDelegate"
selector="WCTYPE|wt.filter.custom.CustomFilter|org.rnd.TestFilter"/>
</Service>
<Service context="default" name="NavigationCriteria.renderer">
<Option requestor="null" cardinality="singleton" selector="WCTYPE|wt.filter.custom.CustomFilter|org.rnd.TestFilter"
serviceClass="com.ptc.expansionui.client.ui.renderer.ExampleCustomFilterRenderer" />
</Service>
<Service context="default" name="NavigationCriteria.validator">
<Option requestor="null" cardinality="singleton" selector="WCTYPE|wt.filter.custom.CustomFilter|org.rnd.TestFilter"
serviceClass="com.ptc.expansionui.server.validator.ExampleCustomFilterTabValidator"/>
</Service
<Service context="default" name="NavigationCriteria.populator">
<Option requestor="null" cardinality="singleton" selector="WCTYPE|wt.filter.custom.CustomFilter|org.rnd.TestFilter"
serviceClass="com.ptc.expansionui.server.populator.ExampleCustomFilterPopulator" />
</Service>
</Configuration>
2. $WT_HOME/codebase/com/ptc/expansionui/ExpansionCriteriaCore-wt.properties.xconf ファイルで、次の行をコメント解除します。
<Property name="NavigationCriteria.filters.order.xx" default="WCTYPE|wt.filter.custom.CustomFilter|org.rnd.TestFilter"/>
3. Windchill シェルから次のコマンドを実行して、xconf の変更を適用します。
xconfmanager -fp
結果
「フィルタを編集」のユーザーインタフェースを起動した後、「User Custom Filter」タブを表示および選択できます。