2014-10-02 1 views
1

У меня есть проблема, когда я сравниваю объект Java как атрибут внутри класса JavaКак сравнить объект Java в Jess

Это мой ПСЯ файл

(import Model.*) 

(deftemplate PizzaBase  
    (declare (from-class PizzaBase) 
      (include-variables TRUE))) 

(deftemplate PizzaTopping 
    (declare (from-class PizzaTopping) 
      (include-variables TRUE))) 

(deftemplate Pizza 
    (declare (from-class Pizza) 
      (include-variables TRUE))) 

(defrule make-pizza 
     ?pizzaBase1 <-(PizzaBase{size == 9}) 
     (Pizza(pizzaBase ?pizzaBase1)) 
     => 
     (add (new PizzaBase "New DeepPan" 10)) 
     ) 

Согласно от моего правления, я хочу создать новый pizzaBase.Когда объект pizzaBase в Pizza равен pizzaBase1 (размер = 9), но JESS не создает для меня новый факт. Из моего мышления я думаю, что JESS не может сравнивать объект Java, который создается из класса. Поэтому не существует никакого факта для JESS.

Итак, «Как решить эту проблему?», Потому что я смотрю руководство по сайту JESS, но нет никаких названий, которые соответствуют моей проблеме.

Thank!

ответ

2

Возможно, вы заметили раздел 5.3.2., Добавление объектов Java в рабочую память.

Объект Java не совпадает с фактом, даже когда вы получаете теневой (!) Факт из POJO, используя переменные from-class и include-variables. Факт содержит ссылку на объект Java, который вы вставляете, вызывая (add ?aNewObject) в зарезервированном слоте с именем OBJECT.

Изменение правила так:

(defrule make-pizza 
    (PizzaBase{size == 9}(OBJECT ?pizzaBase1)) 
    (Pizza(pizzaBase ?pizzaBase1)) 
    => 
    (add (new PizzaBase "New DeepPan" 10)) 
    ) 
+0

Спасибо большое !!! Он работает прямо сейчас. Могу ли я задать вам вопрос? Это решение может работать со списком java-объекта или нет? – newnok6

+0

Вы должны показать код, в котором люди могут видеть, какой «список» вы имеете в виду, в каком классе Java он встречается и что должно соответствовать чему. - Вероятно, лучше всего отметить этот вопрос как «ответил» и задать новый вопрос, разместив все подробности. – laune

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

  • Нет связанных вопросов^_^