2016-02-11 3 views
0

Я пытаюсь переписать мой drl с помощью regex на equalsIgnoreCase, поскольку я думаю, что он быстрее. Однако я не уверен, что он быстрее. Тем не менее, drools не нравится, почему-то, и я получаю неизвестную ошибку.EqualsIgnoreCase on Drools

Один на лучших работах, но один с помощью equalsIgnoreCase не

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 

Можно ли обнаружить ошибку?

ответ

0

В пределах eval, придерживайтесь Java: обратитесь к связанным переменным, используйте getter.

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

Редактировать Не зная определение класса, ошибку и версию, я не рекомендую использовать Eval/Java, чтобы быть на безопасной стороне, независимо от того, какой версии Drools есть. Для 6.3.0 вы можете опустить eval, и он работает.

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

Хмм, почему это? Я использую mvel. Есть ли другой способ сделать это, не используя eval? –

+0

Отредактировал свой ответ. – laune

Смежные вопросы