两个问题:
1、规则文件是一样的。可是以下代码:
for (;;) { checkServer(server); final FactHandle obj = mem.assertObject(server); mem.fireAllRules(); logger.writeToDisk(); Thread.sleep(1000); mem.retractObject(obj); }
在Drools3.06中完全可以执行,没有任何问题。可是到了3.1M中,第一次到“mem.retractObject(obj);”处就退出,提示"NullPointerException"。晕倒!找了n久也不知道为什么???
2、drl文件中的函数:
function void computeUsage(Server server, ComputeUsage usage) { //double use; //usage = (avail/sum)*100; //use = avail*100; System.out.println("The usage rate of the server ["+server.getHost()+"] is {1"+(usage.getAvail()/usage.getSum())+"}\n"); }
我在rhs中用computeUsage(server,usage)[server和usage都是lhs中绑定的的变量]调用它,它就一直说:
引用
Rule Compilation error The method computeUsage(Server, ComputeUsage) in the type ComputeUsage is not applicable for the arguments (Server, ComputeUsage)
这个错误在3.06和3.1M中都存在。function不是这样定义的么?应该怎么用啊?
真是服了这个东东了