2013-11-25 27 views
0

我只是不能找到解決方案... 繼承人的概率: 我有一個簡單的主類,在那裏我改變一個jvaBean的屬性。然後我想將javaBean的屬性作爲事實加載到我的JESS程序中。連接javaBean和JESS

我讓簡單: // java的主

public static void main(String[] args) { 
Bean testbean = new Bean(); 
testbean.setName("test"); 
Rete engine = new Rete(); 
engine.batch("simple"); 
engine.run(); 
} 

// Bean類

public String name; 
public String getName(){return name;} 
public void setName(String name){this.name = name;} 

// JESS的simple.clp

(defclass bean Bean) 
(bind ?b (new Bean)) 
(definstance bean ?b) 
(facts) 

當我啓動java主要的javaBean istn`t斷言的事實。輸出(事實)顯示名稱仍然爲零(空)

有人可以幫助我,請多謝!

丹尼

回答

0

創建這裏有兩個Bean對象;一個來自Java代碼,一個來自Jess代碼。您設置了從Java創建的屬性的name屬性,但是它是由Jess創建的實際添加到工作內存的屬性。您可以在Jess或Java中或兩者的組合中執行此操作,但如果只需要一個對象,則只需創建一個。例如,你可能會這樣做,所有這些都來自Java:

public static void main(String[] args) { 
    Bean testbean = new Bean(); 
    testbean.setName("test"); 
    Rete engine = new Rete(); 
    engine.defclass("bean", "Bean", null, false); 
    engine.definstance("bean", testbean, false); 
    engine.eval("(facts)"); 
}