JRuleはJavaで実装されたビジネスルールエンジンです。 XMLの定義ファイルでビジネスルールを設定します。利用者は特定のクラスに適用されるビジネスルールをルールエンジンに照会することができ、VM内で動的なビジネスルールの組換え、削除、追加をすることができます。
以下のライブラリをクラスパスに追加する必要があります。
jakarta-commons-beanutils
jakarta-commons-collections
jakarta-commons-lang
jakarta-commons-logging
jakarta-oro
またDOM2.0に対応したXMLパーサが必要です。
設定ファイルのサンプル
<?xml version="1.0" encoding="Windows-31J"?>
<repository>
<class name="jp.sourceforge.jrule.User">
<property name="id">
<maxLength value="10" message="ユーザーIDは10文字以下でなくてはなりません。" />
</property>
<property name="name">
<maxLength value="10" />
</property>
<property name="password">
<notNull />
<betweenLength from="0" to="255" />
<pattern value="[0-9|a-z|A-Z]*" message="パスワードは英数字で構築されなくてはなりません。" />
</property>
</class>
</repository>
sample code
RuleParser parser = new RuleParser();
RuleRepository repository =
parser.parse(new FileInputStream("src/conf/rule.xml"));
User user = new User();
user.setId("01234567");
user.setPassword("01234567");
//full class test
repository.test(user);
//property test
repository.test(user, "password");
標準で利用できるタグの一覧
| タグ | 適用クラス | タグ属性 | 説明 |
| notNull | Object | nullで無いかどうかをテストします。 | |
| notEmpty | Object/String | nullで無いかどうかをテストします。String型であるときはさらに長さが1に満たないかどうかテストします。 | |
| betweenLength | String | from to |
文字列の長さが{from}以上{to}以下であるかどうかテストします。 |
| equalsLength | String | value | 文字列の長さが{value}であるかどうかテストします。 |
| maxLength | String | value | 文字列の長さが{maxLength}以下であるかどうかテストします。 |
| minLength | String | value | 文字列の長さが{maxLength}以上であるかどうかテストします。 |
| pattern | String | value | 文字列が{value}で与えられた正規表現にマッチするかどうかテストします。 利用可能な正規表現はjakarta-oroのドキュメントを参照してください。 |
| betweenNumber | Number | from to |
数値の長さが{from}以上{to}以下であるかどうかテストします。 |
| equalsNumber | Number | value | 数値が{value}であるかどうかテストします。 |
| maxNumber | Number | value | 数値が{maxLength}以下であるかどうかテストします。 |
| minNumber | Number | value | 数値が{maxLength}以上であるかどうかテストします。 |
| cardinality | 配列/Map/ Collection |
from to |
配列/Map/Collectionの大きさが{from}以上{to}以下であるかどうかテストします。 |