EqualsIgnoreCase on Drools

狂风中的少年 提交于 2020-06-18 11:16:08

问题


I am trying to rewrite my drl from using regex to equalsIgnoreCase as I think its faster. I am not sure its faster though. However, drools doesn't like it for some reason and I get unknown error.

The one on top works, but the one using equalsIgnoreCase doesn't

rule "name"
salience 0
activation-group "flow"
dialect "mvel"
no-loop true
when
    $vurderinger: Vurderinger(vurdering1909 != null &&
                              vurdering1909.verdi matches "(?i)^FOO$")
then
    modify( $vurderinger ) { setVurdering1913(new DroolsType("SHOW")) }
end


rule "name"
salience 0
activation-group "flow"
dialect "mvel"
no-loop true
when
    $vurderinger: Vurderinger(vurdering1909 != null &&
                 eval("FOO".equalsIgnoreCase(vurdering1909.verdi)))
then
    modify( $vurderinger ) { setVurdering1913(new DroolsType("SHOW")) }
end

Can anyone spot the mistake?


回答1:


Within eval, stick to Java: refer to bound variables, use getter.

when
$vurderinger: Vurderinger($v: vurdering1909 != null &&
             eval("FOO".equalsIgnoreCase($v.getVerdi())))
then

Edit Not knowing the class definition, the error and the version, I advise using eval/Java, to be on the safe side, no matter what the Drools version is. For 6.3.0, you can omit eval, and it works.

when
$vurderinger: Vurderinger(vurdering1909 != null &&
              "FOO".equalsIgnoreCase(vurdering1909.verdi))
then



回答2:


I have given solution for decision table i.e:

javaObject.getRisk().equalsIgnoreCase("$param")

for drools rules

rule "Rule To Check String Contains"
when
Pojo(name.contains("Loans"))
then
System.out.println(drools.getRule().getName());
end

rule "Rule To Check String Equals"
when
Pojo(name.equals("Personal Loans, Insuarnce"))
then
System.out.println(drools.getRule().getName());
end

rule "Rule To Check String EqualsIgnoreCase"
when
Pojo(name.equalsIgnoreCase("Personal loans, insuarnce"))
then
System.out.println(drools.getRule().getName());
end```




来源:https://stackoverflow.com/questions/35335233/equalsignorecase-on-drools

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!