2017-01-20 4 views
0

Я пытаюсь выполнить ниже правила в Drools через TalendDrools - Null проверка неудачу

rule "rule1" 
    dialect "mvel" 
    no-loop true 
    when 
     trans : row(BUS_AREA_CD == null) 
    then 

       trans.ACTUAL_PRODUCT_LINE_CODE="06" 

end 
rule "rule2" 
    dialect "mvel" 
    no-loop true 
    when 
     trans : row(BUS_AREA_CD != null) 
    then 

       trans.ACTUAL_PRODUCT_LINE_CODE="96" 

end 

Ниже объект данных (строка), который я создал.

enter image description here

Ниже тестовый сценарий, который я выполнил

enter image description here

когда выполнить тестовый сценарий с BUS_AREA_CD = NULL, то возвращается пустое значение вместо "96".

Может кто-нибудь помочь мне решить эту проблему?

+0

Где «пустое значение» возвращаются и как сделать ты видишь это? Как определяется класс 'row'? Какие факты вы вложили? - Как есть, ответ «нет». – laune

+0

@laune Я обновил требуемую информацию. –

+0

Знаете ли вы, что правило «rule1» действительно уволено? Каковы «4 правила, выпущенные за 1 мс»? Любой шанс, что они могут отменить изменения? - Добавьте выражение «бросок» к следствию правила1, чтобы продемонстрировать его стрельбу, если нет другого пути. - Используйте инструкцию модификации для обновления WM для Drools. – laune

ответ

0

проблема, связанная с тестовым сценарием, заключается в том, что он принимает null как значение строки. Если вы хотите клеть экземпляр строки с атрибутом BUS_AREA_CD равного нулевой тогда вашей ДАННОЙ части должны выглядеть следующим образом:

Insert 'row' [test] 
+0

@Srinu Katta Я полагаю, что это без записи для BUS_AREA_CD ниже означает, что не задано ни одно поле, ни «null» (строка длиной 4), ни «» (строка длины 0). Таким образом, поле останется нулевым (вообще нет String). Документация для инструмента должна подробно описывать ваши варианты. – laune

+0

@laune Я буду внедрять нуль в виде строки нулевой длины (BUS_AREA_CD.length() == 0). Для пустой проверки я планирую использовать (BUS_AREA_CD == '') –

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