Как получить объекты фактов из таблиц решений в Drools 4.x

Наша команда использует поток правил Drools для оценки. Теперь мы планируем перейти на таблицы решений.

В версии с потоком правил Drools у нас были файлы DRL с компонентом запроса для извлечения объектов, созданных в контексте файлов DRL, из рабочей памяти.

Я застрял в том же в Таблице решений? Мы используем StatefulSession для правил стрельбы. Также эти факты внесены в правую часть правил; у нас нет FactHandles на момент их запуска.

Код, используемый для начальной загрузки механизма правил Drools, выглядит следующим образом:

RuleBase ruleBase = RuleBaseFactory.newRuleBase();
StatefulSession session = ruleBase.newStatefulSession(); 
MyFacts nmrs = new MyFacts();
session.insert(nmrs);
session.fireAllRules();

Файл drools, использованный для получения запроса, выглядел следующим образом:

query "resultQuery"
    response :  Outcome()
end

Спасибо


person Maddy    schedule 17.02.2010    source источник


Ответы (1)


В настоящее время нет прямой поддержки запросов в таблицах решений XLS. Однако таблицы решений компилируются до самого drl - поэтому можно программно добавлять запросы после факта в drl (возможно, в отдельном файле DRL).

Вы также можете получить коллекцию всех дескрипторов фактов и (уродливо) перебирать, ища instanceof Outcome и т. Д.

person Michael Neale    schedule 18.02.2010
comment
Когда я пытаюсь добавить запрос как addPackageFromDRL в построителе пакетов с помощью StringReader (queryString), по какой-то причине он не работает. Мне нужно сделать уродливый хак, чтобы добавить к последнему файлу правил - person Maddy; 19.02.2010