JBoss Drools вставляет факты из DRL

Мне нужно, чтобы моя рабочая память знала о фактах, которые создаются в DRL следующим образом:

rule "Your First Rule"
when
    $testRule : TestRule(count >= 100)
then 
    System.out.println("100 PACKETS");
end

Есть ли способ заставить рабочую память узнать о факте TestRule, а затем иметь возможность обновляться? Моя цель состоит в том, чтобы заставить правило знать, когда 100 пакетов были получены.


person cwrwatson    schedule 15.02.2011    source источник


Ответы (1)


обычно я создаю что-то как часть правила и использую как флаг. Если ничего создавать не нужно, то можно создать флаг, например

rule "Your First Rule"
when
    $testRule : TestRule(count >= 100)
    not         Flag(id="packets")
then 
    System.out.println("100 PACKETS");
    insert( new Flag("packets") )
    update( $testRule )
end

Я не думаю, что этот код правильный, но я думаю, что вы можете понять идею... И вам нужно будет создать класс с именем Flag. Обновление необходимо, чтобы сообщить drools, что необходимо обновить дерево сети.

person Augusto    schedule 15.02.2011
comment
Это не дает рабочей памяти знать о каких-либо фактах, и мне также нужно будет вставить класс «Флаг», который по-прежнему требует, чтобы я каким-то образом заставил DRL вставлять факты. - person cwrwatson; 15.02.2011
comment
Я не понимаю вашу точку зрения, insert() сообщает об этом WM. И не нужно вставлять класс Flag в рабочую память из java, достаточно просто импортировать его в DRL, и правило вставит факт. - person Augusto; 15.02.2011
comment
Тогда, возможно, у меня где-то плохой код. На данный момент моя рабочая память не получает никаких фактов из ДХО... - person cwrwatson; 15.02.2011
comment
Я добавил дополнительный бит (update( $testrule)), который может помочь. Очень странно, что можно вставить факт из правил. В приложении, над которым я работаю, мы вставляем только один объект из java, а затем у нас есть около 60 правил, которые разбивают этот объект на множество фактов. - person Augusto; 15.02.2011
comment
Я считаю, что это как-то связано с тем, где я создаю Packages, RuleBase и WorkingMemory. - person cwrwatson; 15.02.2011