У меня есть 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