Drools не может разрешить регистратор

У меня есть правило, подобное приведенному ниже. Когда я использую logger.debug в разделах THEN правила, он работает, а не тогда, когда я использую его в разделах WHEN.

Есть идеи, почему?

package com.util;
import com.rulemodel.*;
global org.slf4j.Logger logger;


rule "My rule"
dialect "mvel"
when
    $t : TransxnFact()
    $obj : BizObj((acType.equalsIgnoreCase("Check") && $t.getSubType().equalsIgnoreCase("TWO")) )   

then
  insert( new XXFact($t.getId() ) )
  logger.debug($t.getId()+ "fact inserted")
     logger.debug($x.getAcType())

end

Я получаю следующую ошибку: невозможно разрешить ObjectType 'logger.debug'


person Spear A1    schedule 22.10.2018    source источник


Ответы (1)


В блоке «когда» вы можете указать только условие. Если вы хотите зафиксировать факты, вставленные в kiession, вы можете использовать RuleRuntimeEventListener.

person Abhijit Humbe    schedule 23.10.2018
comment
Спасибо за разъяснение Абхиджит. Погуглив API RuleRuntimeEventListener, он не кажется таким простым, как logger.debug($t.getId()) . Я хотел бы просто выполнить SOP для значений, даже до того, как механизм правил начнет оценивать RHS. - person Spear A1; 24.10.2018