2015-11-03 92 views
0

我試圖在JESS中啓動一些規則後,從java中打印出存儲在建議(插槽包)(插槽說明)deftemplate中的信息。 的代碼涉及到打印出來的結果的一部分如下:打印輸出java中的deftemplate信息

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

Class Rete帶有一個API,可讓您調查Rete對象中的所有內容。重複事實對象,過濾你想要的,打印插槽值:

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,你真棒 –