2015-05-01 3 views
0

Прилагается таблица решений, в которой я использую sv2.SV202_CompMedProcedId.get («SV202-02») несколько раз в моем состоянии.

Есть ли способ создать псевдоним для sv2.SV202_CompMedProcedId.get («SV202-02») (например, S) и использовать этот псевдоним в моем состоянии, а не использовать всю строку каждый раз? enter image description hereСоздать псевдоним для условий в Drools Таблица принятия решений

УСЛОВИЕ
sv2.SV202_CompMedProcedId.get ("" SV202-02 ""). Значение> = '70010' & & sv2.SV202_CompMedProcedId.get ("" SV202-02 ""). Значение < = ' 76499 '|| sv2.SV202_CompMedProcedId.get ("" SV202-02 ""). Значение> = '76506' & & sv2.SV202_CompMedProcedId.get ("" SV202-02 ""). Значение < = '76999' || sv2.SV202_CompMedProcedId.get ("" SV202-02 ""). Значение> = '77001' & & sv2.SV202_CompMedProcedId.get ("" SV202-02 ""). Значение < = '77032' || sv2.SV202_CompMedProcedId.get ("" SV202-02 ""). Значение> = '77051' & & sv2.SV202_CompMedProcedId.get ("" SV202-02 ""). Значение < = '77059' || sv2.SV202_CompMedProcedId.get ("" SV202-02 ""). Значение> = '77071' & & sv2.SV202_CompMedProcedId.get ("" SV202-02 ""). Значение < = '77084' || sv2.SV202_CompMedProcedId.get ("" SV202-02 ""). Значение> = '77261' & & sv2.SV202_CompMedProcedId.get ("" SV202-02 ""). Значение < = '77999' || sv2.SV202_CompMedProcedId.get ("" SV202-02 ""). Значение> = '78000' & & sv2.SV202_CompMedProcedId.get ("" SV202-02 ""). Значение < = '79999'

, где SV2 является объектом и SV2 класс

+0

Основная проблема, как представляется, что вы расширяете относительно простых данных в коде. Я не знаю такой аббревиатуры. – laune

+0

Я попытался немного уменьшить код, как показано ниже: sv2.SV202_CompMedProcedId.get ("" SV202-02 ""). Значение> = '70010' && <= '76499' || sv2.SV202_CompMedProcedId.get ("" SV202-02 ""). Значение> = '76506' && <= '76999', и это сработало. Но я хотел знать, есть ли что-то еще, что мы можем уменьшить здесь. – Drools123

ответ

0

Да, вы можете использовать псевдоним. Измени условие:

$s : sv2.SV202_CompMedProcedId.get("SV202-02").Value >= '70010' && $s <= '76499' || $s >= '76506' && $s <= '76999' || $s >= '77001' && $s <= '77032' || $s >= '77051' && $s <= '77059' || $s >= '77071' && $s <= '77084' || $s >= '77261' && $s <= '77999' || $s >= '78000' && $s <= '79999'

+0

Я становлюсь ниже ошибки: text = Переменные не могут использоваться внутри привязок. text = Поле Reader не существует для объявления '$ s' в 'предикате' sv2.SV202_CompMedProcedId.get ("SV202-02"). Значение> = 70010 && ^ – Drools123

+0

Является ли sv2 свойством того факта, что вы пытаетесь соответствовать? Кроме того, можете ли вы отправить полное состояние, как вы его используете сейчас? –

+0

Я отредактировал свой вопрос с подробной информацией. Пожалуйста, дайте мне знать, как решить эту проблему. – Drools123

0

Если это достаточно часто, вы можете писать и импортировать статическую функцию Java (!):

public boolean isInRanges(Comparable value, Comparable... bounds){ 
    for(int i = 0; i < bounds.length; i += 2){ 
     if(bounds[i].compareTo(value) <= 0 && 
      value.compareTo(bounds[i+1]) <= 0) return true; 
    } 
    return false; 
} 

простой вызов очевиден.

Вы не можете использовать функцию DRL: AFAIK, нотация vararg не реализована (но проверьте).

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