浏览 2528 次
锁定老帖子 主题:Drools 3.1M是不是有bug啊?
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-04-19
两个问题: 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不是这样定义的么?应该怎么用啊? 真是服了这个东东了 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-04-19
Audion 写道 快要郁闷死了。简直求助都找不到地方。唉!悔不该涉入这样一个研究的人少资料又不多的领域。可是现在也没有退路了。
两个问题: 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不是这样定义的么?应该怎么用啊? 真是服了这个东东了 把函数放在规则外,以结果指导调用,不要嵌入在一起,Drools不能调试,这样看不出问题出在哪里 |
|
返回顶楼 | |