Правило Drools не активируется без ссылки на переменную использования - PullRequest
0 голосов
/ 26 ноября 2018

У меня есть 3 правила для установки и проверки поля "skfdfs".«rule1» используется для установки значения по умолчанию, если оно пустое, «rule2» используется для преобразования строкового ключа в значение, а «rule3» используется для проверки результата «rule2».Проблема в том, что (см. «Rule3»), хотя поле «skfdfs» имеет значение null, а LHS - true, RHS никогда не активируется.Если заменить «bgb: GsdkdjBgb (skfdfs == null)» на «GsdkdjBgb (skfdfs == null)», «rule3» работает нормально.Может кто-нибудь объяснить, почему ...?

rule "rule1"
    lock-on-active
    ruleflow-group "pre-calculation"
    activation-group "set_skfdfs"
    salience 2
    when
        bgb : GsdkdjBgb(null == skfdfs || skfdfs.empty)
    then
        modify(bgb){
            setSkfdfs("0")
        }
end

rule "rule2"
    lock-on-active
    ruleflow-group "pre-calculation"
    activation-group "set_skfdfs"
    salience 2
    when
       bgb : GsdkdjBgb(null != skfdfs && !skfdfs.empty && "0" != skfdfs && 
          "1" != skfdfs, $skfdfs : skfdfs)
    then
        modify(bgb){
            setSkfdfs(Constants.SKFDFS.get($skfdfs))
        }
end

rule "rule3"
    ruleflow-group "pre-calculation"
    salience 1
    no-loop
    when
        bgb : GsdkdjBgb(skfdfs == null)
        message : Message()
    then
        message.getMessages().add("Invalid tax-burden type");
        message.setIsFlowEnded(true);
        update(message);
end
...