Возможно, вам лучше задать этот вопрос в списке рассылки пользователей drools (используйте программу чтения групп новостей, чтобы подключиться к news.gmane.org, если вы не хотите мусорить в своем почтовом ящике).
Что касается вашего вопроса: это действительно странно. Я вижу только одно невероятное объяснение:
Сначала вы должны знать, что resource == $leftRes)
в DRL на самом деле вызовет getResource().equals($leftRes)
, так что это не проверка того же самого / указателя, а проверка равенства.
С другой стороны, eval(resource == $leftRes)
будет использовать такую же проверку / проверку указателя.
Таким образом, эта невероятная теория состоит в том, что ваш класс Resource перезаписывает метод Object.equals
и даже не возвращает true, когда это тот же экземпляр ...
PS: Продолжите обсуждение в списке рассылки, если у вас есть дополнительные вопросы, и вы хотите, чтобы на них тоже отвечали.