高度なカスタマイズ > ビジネスロジックのカスタマイズ > セキュリティラベルのカスタマイズ > セキュリティラベルのカスタマイズ > カスタムセキュリティラベルの設定 > カスタムセキュリティラベルの有効化 > カスタム Java エバリュエータクラスの作成
  
カスタム Java エバリュエータクラスの作成
* 
参加者がセキュリティラベル値によって制限されているかどうかを判別する際や参加者がセキュリティラベル値を修正可能かどうかを判別する際にカスタムエバリュエーションが必要な場合、カスタム Java エバリュエータクラスを使用する必要があります。
カスタム Java エバリュエータクラスを使用して、指定されているセキュリティラベル値によって参加者が制限されているかどうかや、参加者がセキュリティラベル値を修正可能であるかどうかを判別できます。このためには、このクラスによって wt.access.UnrestrictedPrincipalEvaluator クラスを拡張する必要があります。
wt.access.UnrestrictedPrincipalEvaluator クラスには 4 つのメソッドが含まれています。デフォルトの動作が十分でない場合は、これらのメソッドはどれもオーバーライドできます。
boolean isRestrictedBySecurityLabelValue(WTPrincipal principal, String label_name, String label_value) - 参加者、セキュリティラベル、セキュリティラベル値を評価することによって、参加者がそのセキュリティラベル値によって制限されているかどうかを判別します。
このメソッドがオーバーライドされていない場合、そのデフォルトの動作として、セキュリティラベルのコンフィギュレーションファイル内の UFID が評価され、その参加者が UFID によって指定されているユーザーまたは UFID によって指定されているグループまたは組織のメンバーであるかどうかが判別されます。オーバーライドされたメソッドでデフォルトの結果を得るには、super.isRestrictedBySecurityLabelValue(principal, label_name, label_value) の呼び出しをクラスに追加します。
boolean isRestrictedBySecurityLabelValue(WTPrincipal principal, SecurityLabeled object, String label_name, String label_value) - 参加者、オブジェクト、セキュリティラベル、セキュリティラベル値を評価することによって、参加者がそのセキュリティラベル値によって制限されているかどうかを判別します。このオブジェクトは AccessControlSurrogate の場合があります。AccessControlSurrogate は永続可能オブジェクトの代理として機能し、Windchill が完全な永続可能オブジェクトなしでアクセス権を判別する際に必要なすべての属性を含んでいます。AccessControlSurrogate の詳細については、AccessControlSurrogate の処理を参照してください。
このメソッドがオーバーライドされていない場合、そのデフォルトの動作によって、ブールメソッド isRestrictedBySecurityLabelValue(WTPrincipal principal, String label_name, String label_value) が呼び出されます。
boolean isAllowedToModifySecurityLabelValue(WTPrincipal principal, SecurityLabeled object, String label_name, String label_value) - 参加者、セキュリティラベル、セキュリティラベル値、オブジェクトを評価することによって、参加者がそのセキュリティラベル値を修正可能かどうかを判別します。
このメソッドがオーバーライドされていない場合、そのデフォルトの動作として、セキュリティラベルのコンフィギュレーションファイル内の UFID が評価され、その参加者が UFID によって指定されているユーザーまたは UFID によって指定されているグループまたは組織のメンバーであるかどうかが判別されます。オーバーライドされたメソッドでデフォルトの結果を得るには、super.isAllowedToModifySecurityLabelValue(principal, object, label_name, label_value) の呼び出しをクラスに追加します。
WTKeyedHashMap isAllowedToModifySecurityLabelValues(WTPrincipal principal, WTKeyedMap objects_to_security_labels_map) - 参加者が、オブジェクトのコレクション上の指定されたセキュリティラベルと値のペアを修正可能かどうかを判別します。指定されたラベル、値、オブジェクトの組み合わせごとに、別個のブール値の結果が返されます。
このメソッドがオーバーライドされていない場合、デフォルトの動作として、ラベル/値のペアごと、オブジェクトごとに、単一値のエバリュエータ isAllowedToModifySecurityLabelValue が呼び出されます。たとえば、評価のたびに外部システムを個別に照会する必要があるような場合、このデフォルトの動作ではパフォーマンス問題が発生する可能性があります。そこで、カスタムエバリュエータによってこのメソッドをより効率的な実装にオーバーライドできます。たとえば、コールを外部システムと結合したり、結果をキャッシュすることで、繰り返し評価が実行されることを避けます。
カスタム Java エバリュエータクラスの例が <Windchill>/prog_examples/access ディレクトリにあります。使用事例およびこの例を使用するための Windchill の設定については、実装されている各メソッドのカスタム Java エバリュエータクラスの Javadoc を参照してください。
クラスファイルの操作の詳細については、カスタマイズの管理を参照してください。