drools Guvnor サンプル

Govnorでルールの作成とテストシナリオの設定を行ってみました。

  • ルールの設定
    • ルールは20歳以上だったらファクト内のresultに「飲めます」という日本語を登録するものです。ファクトが更新されるとルールが再評価されてしまうのでno-loop属性も追加しています。

    • できるソースはこんな感じ
package test


declare Profile
	age: Integer
	result: String
end



rule "Drink"
	no-loop true
	dialect "mvel"
	when
		p : Profile( a : age >= "20" )
	then
		System.out.println("Fact:" + a + "歳");
		p.setResult( "飲めます" );
		update( p );
end

  • テストシナリオの作成
    • 19歳、20歳という境界値を登録して期待通りの動きになるかを調査しました。画面はテストシナリオを動作させた結果です。内部ではJUnitが動いているっぽいですね。

  • 感想
    • Govnorでのルール設定はかなり面倒くさいです。慣れてもかなり難しいと思います。ただこちらはデシジョンテーブルでのルール設定が可能なのでこちらで代用することでお客様も作業可能だと思います。
    • テストシナリオについてもかなりシンドイことがわかりました。こちらはルールに比べると設定は簡単ですのでそのまま使えるといえば使える・・・・。という感じでしょうか。ユーザ企業の情報システム部が触ることはできますが大量のルール・・となると大変です。一括で登録できるツールなんてものを作れないものでしょうか。。