独自のXMLバリデータBeanを作成してJDeveloperに追加できます。これにより、他の開発者が同じ検証を宣言して再利用できます。カスタム検証規則の作成は、次のように2ステップのプロセスです。
スケルトン・クラスを生成する手順は、次のとおりです。
次に、生成したスケルトン・クラスにコードを追加して検証クラスを実装します。
検証クラスを実装する手順は、次のとおりです。
検証クラスにより、2つのキー・メソッドvetoableChange
およびvalidateValue
を提供するJbiValidator
インタフェースが実装されます。ビジネス・コンポーネント・フレームワークは、vetoableChange
をコールし、属性値が設定されている場合はPropertyChangeEvent
を渡します。通常は、validateValue
をコールするためにvetoableChange
を実装します。validateValue
がfalseを戻すと、vetoableChange
は失敗内容に関する情報を使用して例外を作成します。validateValue
の実装により、独自の例外をスローすることもできます(ValidationException
を拡張する必要があります)。
たとえば、次のコードによりDemoCardValidator
という検証クラスが実装されます。validateValue
で、ビルトインの規則では定義できない、複雑なビジネス・ロジックが実装されます。コンパイル後、このクラスを使用してValidatorタイプを作成し、次にエンティティ・オブジェクト(たとえば、Customer
エンティティのCreditCardNumber
属性)に適用できます。
package d2e; import oracle.jbo.server.rules.JbiValidator; import oracle.jbo.server.util.VetoableChangeListener; import oracle.jbo.server.util.PropertyChangeEvent; import oracle.jbo.server.ValidationException; public class DemoCardValidator implements JbiValidator { private String description = " Verifies a credit card number. "; private final int mMinValue = 100; // Arbitrary value for demo. /** * Return true if value is valid */ public boolean validateValue(Object value) { // Validates a credit card number by comparing the // sum of the digits to mMinValue, defined above. int checkSum = 0; // Assume the following card number format: // "1234567890123456" String cardNo = value.toString(); for (int i = 0; i < cardNo.length(); i++) { checkSum += Integer.parseInt(cardNo.substring(i, i + 1)); } return (checkSum > mMinValue) ? true : false; } /** * Invoked by framework for validation */ public void vetoableChange(PropertyChangeEvent pce) throws ValidationException { Object newValue = (pce.getNewValue()); if (!validateValue(newValue)) { Object objs[] = new Object[2]; objs[0] = pce.getPropertyName() + this.getDescription(); objs[1] = newValue; String errCode = "001"; ValidationException ve = new ValidationException(errCode, objs); throw ve; } } /** * Description of what this class validates */ public String getDescription() { return description; } /** * Description of what this class validates */ public void setDescription(String str) { description = str; } }
また、プロジェクト・プロパティ・エディタを使用すると、プロジェクトに既存の検証規則を追加したり、定義済の検証規則を削除することもできます。他のプロジェクトから検証規則を追加すると、可能な場合にはその検証規則が再利用されます。
検証規則を追加または削除する手順は、次のとおりです。
これで検証BeanにJDeveloperでアクセスできるようになりました。カスタム・バリデータの使用方法については、「ADFモデルにおけるカスタム検証規則の使用」を参照してください。
Copyright © 1997, 2007, Oracle. All rights reserved.