高度なカスタマイズ > ビジネスロジックのカスタマイズ > セキュリティラベルのカスタマイズ > セキュリティラベルのカスタマイズ > カスタムセキュリティラベルの設定 > カスタムセキュリティラベルの有効化 > カスタム Java トランスレータクラスの作成
  
カスタム Java トランスレータクラスの作成
カスタムセキュリティラベルに対してカスタム Java トランスレータクラスを使用することで、内部形式のセキュリティラベル値と外部形式のセキュリティラベル値との間で変換を行うことができます。このためには、このクラスによって wt.access.CustomSecurityLabelValueTranslator クラスを拡張する必要があります。内部形式はアクセス評価時に Windchill によって使用され、データベースに保管されています。外部形式は Windchill インタフェースに表示され、セキュリティラベル値を指定する際にこれをユーザーが入力します。トランスレータクラスが定義されていない場合、外部形式は内部形式と同じであり、データベースに保管されています。
内部形式に追加できるものには一定の制限があります。等号 (=) とコンマ (,) はデータベースに保管できません。ユーザーが入力したセキュリティラベル値でこのいずれかの文字が使用される場合、トランスレータクラスを使用して、これらの文字を内部名から除去する必要があります。同様に、NULL 文字列もデータベースに保管できません。カスタム Java トランスレータクラスを使用して、長いセキュリティラベル値名を使用することもできます。セキュリティラベル属性はデータベース内で 4000 文字に制限されているため、長いセキュリティラベル値を使用すると保存の問題が生じることがあります。カスタムトランスレータクラスを指定することで、Windchill ユーザーインタフェースには外部形式を使用して説明的なラベル値を表示し、データベースには内部形式を使用してユーザーにわかりにくい値を保管できます。ユーザーが指定したラベル値を検証するためのユーザーインタフェースがない場合には特に、カスタムトランスレータクラスを使用して、カスタムセキュリティラベル値を検証することもできます。
wt.access.CustomSecurityLabelValueTranslator クラスには 2 つのメソッドが含まれています。
getExternalValue - 指定された内部値に関連付けられている外部値を返します。
getInternalValue - 指定された外部値に関連付けられている内部値を返します。
次の簡単な例では、規制されているコンマ (,) が除去され、規制されていないプラス記号 (+) に置き換えられています。この例は、外部値にプラス記号 (+) が含まれていないことを前提としています。
public class CustomTranslator implements CustomSecurityLabelValueTranslator {
public String getExternalValue(String label_name, String internal_value)
throws WTException {
return internal_value.replace("+", ",");
}
public String getInternalValue(String label_name, String external_value)
throws WTException {
return external_value.replace(",", "+");
}
}
各メソッドは同じ入力に対して必ず同じ結果を返す必要があります。時間とともに変化する内部値が必要な場合、文字列にバージョン番号を追加してください。たとえば、カスタムセキュリティラベルが取引先のサードパーティの会社を表している場合、各サードパーティが将来事業所を設置する国を追加する必要があります。最初は、1 つの外部値 "Company A" と内部値 "1:A" を使用します。将来、Company A の事業所の場所を表す必要が生じたときに、外部値を "Company A (US)" と "Company A (UK)" に変更できます。これに対応する内部値を "2:A-US" と "2:A-UK" に変更できます。データベースには両方のバージョンが保管されていることがあるため、バージョン番号を使用して、カスタムトランスレータクラスに各バージョンの変換方法を知らせることができます。
クラスファイルの操作の詳細については、カスタマイズの管理を参照してください。