2013-07-17 3 views
0

У меня есть следующее требование, которое должно быть реализовано в Drools. Не знаю, как это сделать. Если кто-нибудь знает, дайте мне направление.Drools Как получить объект, который выполнил правило?

В моем проекте правила слюни связаны с классом java. Правила определяются как список строк, указанный в классе. У меня есть список этих объектов класса, и мне нужно выполнить правила этих классов. Я использовал следующий код для добавления правил. Представьте, что у класса «Тест» есть правила.

for (Test test : testList) { 
       List<String> rules = test.getRules(); 
       if (rules != null) { 
        for (String rule : rules) { 
         System.out.println("Added Rule..."); 
         knowledgeBuilder.add(ResourceFactory.newByteArrayResource(rule.getBytes()), ResourceType.DRL); 
        } 
       } 
      } 

как факты Добавлен список объектов «Тест» и другие обязательные объекты. Правила выполняются без проблем. Теперь мне нужно получить конкретный объект «Test», который правило преуспевает. У кого-нибудь есть идея, как это сделать? Я думаю, что должен быть механизм для объединения объекта Test с правилом, но не знаю, как это сделать. Может ли кто-нибудь помочь?

Заранее спасибо.

ответ

1

В RHS правила есть волшебная переменная, называемая kcontext (экземпляр RuleContext), которая поддерживает kcontext.getMatch().getObjects().

Или, может быть, вы ищете методы итератора, доступные на интерфейсе сеанса, которые перебирают все факты в рабочей памяти?

Смежные вопросы