快要郁闷死了。简直求助都找不到地方。唉!悔不该涉入这样一个研究的人少资料又不多的领域。可是现在也没有退路了。 :cry:
两个问题:
1、规则文件是一样的。可是以下代码:
[code]
for (;;) {
checkServer(server);
final FactHandle obj = mem.assertObject(server);
mem.fireAllRules();
logger.writeToDisk();
Thread.sleep(1000);
mem.retractObject(obj);
}[/code]
在Drools3.06中完全可以执行,没有任何问题。可是到了3.1M中,第一次到“mem.retractObject(obj);”处就退出,提示"NullPointerException"。晕倒!找了n久也不知道为什么???
2、drl文件中的函数:
[code]
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");
}[/code]
我在rhs中用computeUsage(server,usage)[server和usage都是lhs中绑定的的变量]调用它,它就一直说:[quote]Rule Compilation error The method computeUsage(Server, ComputeUsage) in the type ComputeUsage is not applicable for the arguments (Server, ComputeUsage)[/quote]
这个错误在3.06和3.1M中都存在。function不是这样定义的么?应该怎么用啊?
真是服了这个东东了 :(
两个问题:
1、规则文件是一样的。可是以下代码:
[code]
for (;;) {
checkServer(server);
final FactHandle obj = mem.assertObject(server);
mem.fireAllRules();
logger.writeToDisk();
Thread.sleep(1000);
mem.retractObject(obj);
}[/code]
在Drools3.06中完全可以执行,没有任何问题。可是到了3.1M中,第一次到“mem.retractObject(obj);”处就退出,提示"NullPointerException"。晕倒!找了n久也不知道为什么???
2、drl文件中的函数:
[code]
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");
}[/code]
我在rhs中用computeUsage(server,usage)[server和usage都是lhs中绑定的的变量]调用它,它就一直说:[quote]Rule Compilation error The method computeUsage(Server, ComputeUsage) in the type ComputeUsage is not applicable for the arguments (Server, ComputeUsage)[/quote]
这个错误在3.06和3.1M中都存在。function不是这样定义的么?应该怎么用啊?
真是服了这个东东了 :(