私は Drools を初めて使用し、サンプル プログラムを動作させようとしています。このサンプルは、drools のドキュメントhttp://docs.jboss.org/drools/release/5.5.0.Final/drools-expert-docs/html_single/index.html#d0e9542に記載されています。このよだれルールは、整数をソートすることが期待されています。サンプルで指定されている数値を変更しただけで、期待どおりに並べ替えられません。drools バージョン 5.5.0、5.5.1、およびマスター 6.0.0 を使用してみましたが、同じ間違った結果が得られました。
主なコードは次のとおりです。
パッケージcom.sample; パブリック クラスの例 2 { public static void main(String[] args) throws Exception { Number[] numbers = new Number[] { wrap(5), wrap(6), wrap(4), wrap(1), wrap(2) }; new RuleRunner().runRules(new String[] { "Example3.drl" }, numbers); } プライベート静的整数ラップ(int i){ 新しい整数 (i) を返します。 } }
RuleRunner クラスは例で示したものと同じですが、質問が煩雑になるため、ここで指定する必要はないと思います。KnowledgeBase のステートフル セッションを作成し、上記の「numbers」配列に指定されたファクトを挿入し、セッションで fireAllRules メソッドを呼び出すだけです。
ルール ファイル (Example3.drl) は次のとおりです。
rule "Rule 04"
dialect "mvel"
when
$number : Number()
not Number(intValue < $number.intValue)
then
System.out.println("Number found with value: " + $number.intValue());
撤回($数);
終わり
私が得る出力は次のとおりです。
ファイルのロード: Example3.drl 挿入事実: 5 挿入事実: 6 挿入事実: 4 事実の挿入: 1 挿入事実: 2 値が見つかった数: 1 値が見つかった数: 4 値が見つかった数: 2 値が見つかった数: 5 値が見つかった数: 6
予期される正しい昇順ソートではありません。
私は何を間違っているのでしょうか?drools ルール エンジンがこの基本レベルで壊れるとは想像できません。