高度なカスタマイズ > ビジネスロジックのカスタマイズ > オプションとバリエーション > オプションと選択肢の自動補完結果の設定
  
オプションと選択肢の自動補完結果の設定
このセクションでは、割り当てられた定義式、条件付き規則、エイリアスを作成する際に選択肢候補に使用されるサーチ結果と基準の表示をカスタマイズする方法について説明します。以下をカスタマイズできます。
サーチ結果 (候補) の表示
サーチ基準
サーチ結果に表示される列
* 
自動補完機能を有効にするには、「選択肢の自動補完を許可」プリファレンスを「はい」に設定します。
次の基準を使用してサーチできます。
選択肢名
選択肢の番号
オプション名
エイリアス名
xconf ファイルで定義されているプロパティを使用して、サーチを追加し、選択肢とオプションのクラスで定義されているフィールドの属性を表示できます。オプションと選択肢のソフトタイプとモデル化されたタイプをサーチまたは表示するには、このセクションで説明するカスタマイズを使用します。
前提となる知識
この目的を達成するには、次のことを理解している必要があります。
JSP、JavaScript、カスタム taglibs などの基本的な開発
Windchill xconfmanager の概念
ソリューションエレメント
エレメント
タイプ
説明
ATOOptionSuggestable
Java クラス
サーチ用語に基づいて候補を表示します。このクラスはデータベースからサーチ結果を取得する際のロジックを決定します。
*.wt.properties.xconf
プロパティの xconf ファイル
データベースから取得する追加の列 (属性) とサーチの基準となる列をそれぞれ指定するときに使用可能なプロパティ ato.suggest.displayColumns および ato.suggest.searchColumns が含まれています。
*. typedservices.properties.xconf
プロパティの xconf ファイル
手順
ケース 1: UI に表示される候補結果の表示テキストの順序の変更
候補結果の表示テキストのフォーマットを変更するには、次のステップに従います。
1. 候補のクラスを作成します。カスタマイズした候補のクラスによって ATOOptionSuggestable クラスが拡張されます。このクラスには getFormatedSuggestions(Collection<ChoiceSuggestionBean> suggestBean) メソッドがあり、これは提供されている ChoiceSuggestionBean から候補結果の displayText、追加テキスト、値テキストを作成するときに使用されます。このメソッドは内部で addSuggestions(String displayText, String additionalText, String valueText) を呼び出し、これを使用して displayTextadditionalTextValueText をエンコードし、ユーザーインタフェースに渡される suggestResult のコレクションにこれらを設定します。
候補がユーザーインタフェースに表示されるためには、addSuggestions メソッドを必ず getFormatedSuggestions から呼び出す必要があります。
* 
SuggetsResult には valueOf (String display_text, String additional_text, String value_text) が含まれており、これはユーザーインタフェースに表示される表示テキストを設定するときに使用されます。1 つ目の引数は、ドロップダウンメニューに表示されるテキストです。2 つ目の引数は、候補のドロップダウンメニューに別個の列として表示される任意の追加テキストです。3 つ目の引数は、テキストボックスに関連付けられている非表示フォームフィールドにコピーしてテキストに表示される任意の文字列です。
2. 候補のクラスを登録します。候補のクラスを登録するには、typedServices.properties 内のサービスのリストにそのクラスを追加します。さらに、カスタムの候補のクラスを xconf ファイルで登録し、xconfmanager を使用してこれを /codebase/service.properties ファイルに適用する必要があります。
<Service context="default" name="com.ptc.core.components.suggest.Suggestable">
<option cardinality="duplicate" selector="optionPicker" requestor="null"
serviceClass="<your_Suggestable>" />
</Service>
ケース 2: サーチ基準の変更
既成の属性 (選択肢名、選択肢番号、オプション名、エイリアス名) 以外の選択肢またはオプションの追加属性でサーチするには、xconf ファイルを介して追加属性を追加し、xconfmanager を使用してこれを codebase/wt.properties に適用します。
たとえば、「選択肢の説明」属性に基づいて選択肢またはオプションをサーチするには、カスタム xconf ファイルに次のプロパティを追加します。
<Property name="ato.suggest.searchColumns" multivalued=","
default="Choice.description" overridable="true" />
追加する属性の前にその属性が属するクラス名を付ける必要があります。この例では、選択肢の説明でサーチするため、属性 Choice.description を追加します。同様に、オプションの説明に基づいてサーチするには、属性 Option.description を追加します。
ケース 3: ユーザーインタフェースへの追加属性の表示
既成の属性 (選択肢名、選択肢番号、オプション名) 以外の選択肢またはオプションの追加属性をユーザーインタフェースに表示するには、次のステップに従います。
1. ATOOptionSuggestable クラスを拡張する候補のクラスを作成することで getFormatedSuggestions(Collection<ChoiceSuggestionBean>suggestBean) をオーバーライドします。
2. 候補のクラスを作成します。このカスタマイズした候補のクラスによって ATOOptionSuggestable クラスが拡張されます。このクラスには getFormatedSuggestions(Collection<ChoiceSuggestionBean> suggestBean) メソッドがあります。ChoiceSuggestionBean には選択肢、オプション、エイリアスオブジェクトが含まれ、ここからユーザーインタフェースに表示する追加属性を取得できます。
追加属性の説明をユーザーインタフェースに表示するコードの例を以下に示します。
@Override
public void getFormatedSuggestions(Collection<ChoiceSuggestionBean>suggestBeans) {
String number = "";
String name = "";
String description = "";
String displayText = "";
String valueText = "";
String additionalText = "";

for (ChoiceSuggestionBean bean : suggestBeans) {
if (bean.getChoice() != null) {
number = bean.getChoice().getNumber();
name = bean.getChoice().getName();
description = bean.getChoice().getDescription();
}
if (bean.getAlias() != null) {
number = bean.getAlias().getNumber();
name = bean.getAlias().getName();
description = bean.getAlias().getDescription();
}
if (bean.getOption() != null) {
additionalText = bean.getOption().getName();
}
displayText = name + "," + number + "," + description;
try {
if (OptionsClientHelper.isNumberBasedDisplayEnabled()) {
valueText = number + name;
} else {
valueText = name + number;
}
} catch (WTException e) {
logger.error(e);
}
addSuggestions(displayText, additionalText, valueText);
}
}
* 
addSuggestions メソッドを getFormatedSuggestions メソッドから呼び出していることを確認します。
3. typedServices.properties 内のサービスのリストに候補のクラスを追加することによってそのクラスを登録します。カスタムの候補のクラスを xconf ファイルで登録し、xconfmanager を使用してこれを /codebase/service.properties ファイルに適用する必要があります。
<Service context="default" name="com.ptc.core.components.suggest.Suggestable">
<Option cardinality="duplicate" selector="optionalPicker" requestor="null"
serviceClass="<your_Suggestable> " />
</Service>
その他のカスタマイズ
サーチをトリガする情報を変更したり (「option.c」と入力して c という文字で始まる名前付きオプションおよび選択肢の結果を表示するなど)、ソフトタイプまたはソフト属性をサーチまたは表示したりするなどのその他のカスタマイズを行うには、前述のセクションで説明したように独自の候補クラスを作成し、constructSuggestions (SuggestParms suggestParms) メソッドをオーバーライドして、searchTerm を変更したり、ソフトタイプまたはソフト属性を取得および表示したりする独自のロジックを実装できます。