我无法找到解决方案...... 继承人问: 我有一个简单的主类,我改变了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
答案 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)");
}