2015-08-03 5 views
1

Я создаю таблицу решений с помощью Drools и столкнулся с проблемой с символом больше> ('>'). Я видел на документации drools, что вы могли бы использовать '>' и '<', но я, кажется, что-то не так.Таблица решений Drools, «несоответствующий вход»> «в правиле»

Колонна (не хватает репутации еще добавлять изображения):

  • | УСЛОВИЕ |
  • | | (пустая ячейка)
  • | продолжительность> |
  • | Длительность |
  • | 50 |
  • | 200 |

Дело в том, что архитектура не позволяет мне получить полный объект. У меня могут быть только поля с RemoteObject. Так что я могу сделать, это:

Integer duration = getRemoteObjectDuration(); 
kSession.insert(duration); 
kSession.fireAllRules(); 

Какие результаты в:

[6,2]: [ERR 102] Line 6:2 mismatched input '>' in rule "RuleTable_11" 
[14,2]: [ERR 102] Line 14:2 mismatched input '>' in rule "RuleTable_12" 
[0,0]: Parser returned a null Package 

я мог бы создать фиктивный объект, содержащий поле мое, но должно быть что-то лучше делать. У кого-нибудь есть идея?

+0

У вас не может быть пустой ячейки сразу ниже СОСТОЯНИЯ. Как называется класс, в котором находится поле (!) 'Duration'? Нет ничего похожего на «Integer on java side». Вставка объектов Integer как фактов не является полезной, кроме как в особых ситуациях. – laune

+0

Спасибо, я отредактировал сообщение. Я пытался с помощью фиктивного объекта, содержащего только мое поле, и он работает. Может быть, это единственное решение ... –

ответ

1

Для сопоставления Integer вы можете использовать правило как

rule findInt 
when 
    Integer($iv: intValue > 42) 
then 
    System.out.println("got an Integer > 42: " + $iv); 
end 

и, следовательно, столбец таблицы в соответствии с

CONDITION 
Integer 
intValue > 
- ... - 
42 

Это, конечно, обречены на неудачу, когда у вас есть несколько Целочисленные объекты, плавающие вокруг в рабочей памяти, неспособные определить, что к чему.

Для вашего затруднения я создал теневой объект для хранения всех полей удаленного объекта, а не для обертывания полей отдельно.

0

Спасибо за комментарий laune, я, наконец, сделал его работу, но мне пришлось создать пользовательский объект, содержащий только поле, которое мне нужно, и я написал имя этого нового класса ниже CONDITION.

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