连接javaBean和JESS

时间:2013-11-25 21:16:02

标签: java jess

我无法找到解决方案...... 继承人问: 我有一个简单的主类,我改变了jvaBean的属性。然后我想将javaBean的属性作为事实加载到我的JESS程序中。

我说得很简单: // java main

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 main时,javaBean istn`t断言的事实。输出(事实)显示名称仍为nil(null)

有人可以帮助我,非常感谢!!

Danny

1 个答案:

答案 0 :(得分: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)");
 }