目前,我有一个包含大量条件/操作的大型决策表。在我最近添加新操作之前,决策表一直有效。它似乎没有执行。
由于我无法显示整个文件,因此这是最重要的列的摘录(请注意,有更多条件):
以下字段通过setter更新:
但是,PRM_LIB18未更新。即使我切换PRM_LIB10和PRM_LIB18的操作,它也只是更新的PRM_LIB10列。
当我通过代码调试时,我看到RuleBuildContext包含第一个规则的所有setter:
基于此,我希望它能够执行setPRM_LIB18(" GC"),但这不会发生。
然后,我试图看到Drools实际生成的类文件,看看是否一切都很好,但是我无法正确查看生成的字节码。
我真的不知道为什么它不起作用。有没有人有线索或如何调试行动的实际调用,也许可以看出为什么它没有被执行?
答案 0 :(得分:0)
这是不太可能的。你如何确定这个行动没有被执行?还有其他规则可能还会修改PRM_LIB18吗?
要进行快速调试,请添加另一个包含已修改对象的打印输出的操作列 - 至少是已修改的字段。
如果您仍然没有线索,请尝试使用此代码并使用完整/截断到必需输出进行报告。
private void testSpreadsheet(){
File dtf = new File( dtPath );
InputStream is;
try {
is = new FileInputStream( dtf );
SpreadsheetCompiler ssComp = new SpreadsheetCompiler();
String s = ssComp.compile( is, InputType.XLS );
System.out.println( "=== Begin generated DRL ===" );
System.out.println( s );
System.out.println( "=== End generated DRL ===" );
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}