有关使用Drools的Decision Tables(决策表)注意事项

1.使用EXCEL作为决策表时,如果单元格中有设置“12,23”形式的参数值,请注意一定将所有这些单元格的格式设置为文本格式,如果是数字格式,表面看似完全正确的表格,却无法正常运行,耽误你很多的时间去发现这个小错误。比如我就在使用Rule Templates时,用EXCEL作为数据来源,在测试过程中,始终报告“ org.drools.runtime.rule.ConsequenceException: java.lang.RuntimeException: java.lang.NullPointerException”的错误,到最后,查看错误栈的源时,无意看到 “Caused by: java.lang.NullPointerException
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作块内的单独注释!

你可能感兴趣的:(java,Excel,单元测试)