Я новичок в Drools и пытаюсь заставить пример программы работать. Этот пример приведен в документации по слюням http://docs.jboss.org/drools/release/5.5.0.Final/drools-expert-docs/html_single/index.html#d0e9542. Ожидается, что это правило слюни будет сортировать целые числа. Я просто изменил числа из приведенных в образце, и они не сортируются должным образом. Пытался использовать слюни версий 5.5.0, 5.5.1 и master 6.0.0, но получил те же неверные результаты.
Ниже приведен основной код:
package com.sample; public class Example2 { 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); } private static Integer wrap(int i) { return new Integer(i); } }
Класс RuleRunner такой же, как приведенный в примере, и я не думаю, что должен приводить его здесь, поскольку это загромождает вопрос. Он просто создает базу знаний, сеанс с отслеживанием состояния, вставляет факты, указанные в приведенном выше массиве «числа», а затем вызывает метод fireAllRules в сеансе.
Файл правил (Example3.drl):
правило "Правило 04"
диалект "mvel"
когда
$ number: Number ()
не Number (intValue ‹$ number.intValue)
затем
System.out.println ("Число найдено со значением:" + $ number.intValue ());
retract ($ number);
конец
Я получаю следующий результат:
Loading file: Example3.drl Inserting fact: 5 Inserting fact: 6 Inserting fact: 4 Inserting fact: 1 Inserting fact: 2 Number found with value: 1 Number found with value: 4 Number found with value: 2 Number found with value: 5 Number found with value: 6
Неправильный ожидаемый порядок сортировки по возрастанию.
Что я делаю не так? Я не могу себе представить, что на этом базовом уровне механизм правил слюни сломается.