浏览 5664 次
锁定老帖子 主题:请教一下Drools中DRL的语法
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-06-04
我的测试中 due="0" flag="N" 脚本一 package calculate; import test.Wrapper; rule "TK_1000000587_TR_7" salience 1 when c:Wrapper( due == "0") c:Wrapper( flag == "N" ) then c.setResult("TT"); end 脚本二 package calculate; import test.Wrapper; rule "TK_1000000587_TR_7" salience 1 when c:(Wrapper( due == "0") || Wrapper( due == "1")) c:Wrapper( flag == "N" ) then c.setResult("TT"); end 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-06-04
测试了一下,确实有这个问题,mailing-list里面也没有找到想关的解决办法。
|
|
返回顶楼 | |
发表时间:2007-06-07
gtivan 写道 我在写DRL时遇到了问题,相同的测试,脚本一可以匹配通过而脚本二却不能。我只是在脚本二中加了一个 OR的关系。
我的测试中 due="0" flag="N" 脚本一 package calculate; import test.Wrapper; rule "TK_1000000587_TR_7" salience 1 when c:Wrapper( due == "0") c:Wrapper( flag == "N" ) then c.setResult("TT"); end 脚本二 package calculate; import test.Wrapper; rule "TK_1000000587_TR_7" salience 1 when c:(Wrapper( due == "0") || Wrapper( due == "1")) c:Wrapper( flag == "N" ) then c.setResult("TT"); end 不行的话就改用eval吧!尽管它效率有点低,不过遇到一些普通方式不能解决的问题,用它总能比较容易地解决。 |
|
返回顶楼 | |
发表时间:2007-06-07
eval是个办法
调试看了下workingmemory,带 or condition 规则生成的是joinNode,两边对于同一个实例的判断是无效的,不知道为什么, 而不带or condition 的规则生成的是alphaNode,没有问题。 期待dada给分析下。 |
|
返回顶楼 | |