2015-11-03 2 views
0

Я пытаюсь распечатать информацию, сохраненную в рекомендации (слот-пакет) (определение слота) deftemplate, из java после того, как некоторые правила были запущены в JESS. часть кода, связанные с распечатки результатов нижеследовал:Распечатка информации deftemplate в java

Rete r = new Rete(); 
Iterator itt = r.listDeftemplates(); 
while(itt.hasNext()){ 
Deftemplate dt = (Deftemplate)itt.next(); 
String bn = dt.getBaseName(); 
dt.getSlotNames(); 
if(bn.equals("recommendation")){ 
System.out.println(dt.getSlotName(0)); 
System.out.println(dt.getSlotName(1)); 
System.out.println(bn); 

Любая помощь будет высоко оценен.

+0

, так что вы не видите выход? – AbtPst

+0

Я могу распечатать имя слота, но не содержимое, которое было указано в каждом слоте после запуска правил. –

+0

Вы уверены, что dt.getSlotName (0) является правильным вызовом метода для этого. похоже, этот метод предназначен для того, чтобы дать вам имя слота, а не контент – AbtPst

ответ

0

Класс Rete поставляется с API, который позволяет исследовать все объекты Rete. Итерации объектов Fact, фильтровать те, которые вы хотите, напечатать значения слотов:

Iterator itf = rete.listFacts(); 
while(itf.hasNext()){ 
    Fact fact = (Fact)itf.next(); 
    if(fact.getName().equals("MAIN::recommendation")){ 
    System.out.println("package: " + 
         fact.getSlotValue("package")); 
    System.out.println("explanation: " + 
         fact.getSlotValue("explanation")); 
    } 
} 
+0

Большое спасибо Laune, Ты такой потрясающий –