2013-04-16 8 views
2

Я хочу отправить «факт» в файл JESS в java и вернуть результаты. Я в основном загружаю файл JESS, а затем отправляю свои данные (структура здесь) в движок .add(). Я попытался получить результаты JESS, которые должны быть строкой, в значение «Значение».Выход JESS в Java

Rete engine = new Rete(); 
engine.batch("file.clp"); 
Value = AAAnull; 
try{ 
    engine.add(structure) 
    AAA = engine.eval("(run)"); 
    } catch ... 

System.out.println(AAA); 

Результат - это всегда число, хотя результат должен быть строкой. Я проработал это в простом проекте java, и AAA возвращает строку, но здесь она не работает.

ответ

1

Функция (run) возвращает количество исправленных правил; вот номер, который вы видите здесь.

Реальные результаты запуска вашей программы - это побочные эффекты, которые она вызывает; получение результата на Java зависит от того, какие побочные эффекты вы ожидаете. Это может означать что угодно: от collecting output printed to the screen, finding newly created facts in working memory, или having your Jess program call Java methods that effect the outside world. Не видя содержимого file.clp, я не могу сказать, чего вы ожидаете, но все перечисленные выше перечислены в руководстве Jess; приведенные выше фразы являются ссылками на соответствующие разделы. Я рад ответить на любые последующие вопросы, которые могут возникнуть у вас.

+0

спасибо, я сначала прочитаю руководство и посмотрю, что я могу узнать – POD

+0

Я пришел к другой проблеме. Когда я пытаюсь запустить движок Rete в файле actionlist, он не работает, и я не получаю от него никакой обратной связи. Это потому, что двигатель используется внутри actionlistener? – POD

+0

Нет, это не должно быть проблемой. Вы можете использовать команду '(watch all)', чтобы увидеть больше того, что делает Джесс, и это может помочь. –