浏览 3472 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-09-14
最后修改:2009-09-14
org.drools.runtime.rule.ConsequenceException: java.lang.RuntimeException: java.lang.NullPointerException”的错误,到最后,查看错误栈的源时,无意看到“Caused by: java.lang.NullPointerException
1.使用EXCEL作为决策表时,如果单元格中有设置“12,23”形式的参数值,请注意一定将所有这些单元格的格式设置为文本格式,如果是数字格式,表面看似完全正确的表格,却无法正常运行,耽误你很多的时间去发现这个小错误。比如我就在使用Rule Templates时,用EXCEL作为数据来源,在测试过程中,始终报告“at org.drools.template.parser.ArrayCell.addValue(ArrayCell.java:44)”中的ArrayCell时才猜测到这个可能,实在是冤哪。 2.关于drl或drt的规则文件注释问题:千万不要被它的类似java的单行或多行注释假象迷惑,如果你像这样写块注释则一定会错的: /*规则1: rule "discount intervalDays refundsRate1_@{row.rowNumber}" when ... then ...; end */ 你必须这样进行多行注释: rule "discount intervalDays refundsRate1_@{row.rowNumber}" when /*规则1: ... */ then /* ... */ end 必须在块when或then作块内的单独注释! 对单行注释你也很容易犯下这样的错误: //xxx rule "discount intervalDays refundsRate2_@{row.rowNumber}" when ... then ... end 你必须像这样来注释: rule "discount intervalDays refundsRate2_@{row.rowNumber}" when //xxx: ... then //xxx ... end 得出结论,不管是单行注释还是多行注释,你必须在块when或then作块内的单独注释! 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-09-14
貌似不是这个原因。好像是因为.drt文件中的
template header discount[] intervalDays refundsRate[] deduct package xx.entity; template "discount intervalDays refundsRate" discount intervalDays refundsRate deduct 必须要加上这段 template "discount intervalDays refundsRate" discount intervalDays refundsRate deduct 并且必须加上package,否则会报告 value rule "discount intervalDays refundsRate_@{row.rowNumber}" is not a valid column definition 不知道何原因,刚开始接触这玩意,以后弄明白了再说吧。 |
|
返回顶楼 | |