пускает слюни эксперт/решатель - 5.0.1 совпадений

Я довольно новичок в слюнях, и я сталкиваюсь с некоторыми проблемами, которые я не могу понять. Я пытаюсь решить проблему распределения, и один из моих LHS работает так:

$leftAlloc: SlotAllocation($leftRes: resource )
$rightAlloc: SlotAllocation(this != $leftAlloc, resource == $leftRes)

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

$leftAlloc: SlotAllocation($leftRes: resource )
$rightAlloc: SlotAllocation(this != $leftAlloc, eval(resource == $leftRes))

Кто-нибудь может мне это объяснить?

Спасибо!


person mericano1    schedule 07.08.2009    source источник
comment
Можете ли вы опубликовать, как выглядит ваш bean-компонент SlotAllocation?   -  person Nick    schedule 11.11.2009


Ответы (1)


Вероятно, вам лучше задать этот вопрос в списке рассылки пользователей drools (используйте программу для чтения групп новостей, чтобы подключиться к news.gmane.org, если вы не хотите захламлять свой почтовый ящик).

Что касается вашего вопроса: это действительно странно. Я вижу только одно невероятное объяснение:

Во-первых, вы должны знать, что resource == $leftRes) в DRL на самом деле вызовет getResource().equals($leftRes), так что это не проверка того же/указателя, а проверка равенства.

С другой стороны, eval(resource == $leftRes) будет использовать ту же проверку/проверку указателя. Так что эта невероятная теория заключается в том, что ваш класс Resource перезаписывает метод Object.equals и даже не возвращает true, когда это тот же экземпляр...

PS: Продолжите это обсуждение в списке рассылки пользователей, если у вас есть дополнительные вопросы, и вы хотите получить ответы на них.

person Geoffrey De Smet    schedule 13.09.2009
comment
Спасибо за ваш ответ, Джеффри, я пытался получить доступ к списку рассылки пользователей drools на nabble, но я думаю, что они переходят с nabble 1.0 на 2.0, и меня так и не приняли? Во всяком случае, о проблеме я связался с jboss, и они изучают это. Я знаю разницу между eval и ==, и я просматривал код, а метод equals вообще не вызывается! Кстати, я использую ваш решатель, и мне это очень нравится. Возможно, нам придется немного расширить его (ветвь и привязка?). Если это произойдет, я обязательно постараюсь связаться с вами, если вы хотите включить его в основной ствол. - person mericano1; 21.10.2009
comment
Эксперимент с ветвями и привязками приветствуется, просто разветвите нас на github и отправьте мне запрос на вытягивание :) Я тоже хочу реализовать ветвь и привязку, но для этого планировщик (=решатель) должен знать больше о домене (возможно, с помощью аннотации или что-то еще), так что это должно быть сделано правильно. - person Geoffrey De Smet; 24.12.2010
comment
Однако, по моему опыту, метод ветвления и привязки недостаточно хорошо масштабируется, чтобы его можно было использовать в производственной среде. - person Geoffrey De Smet; 24.12.2010