为避免运行时候错误,drools 7 可以使用DrlParser预先检测 drl文件是否正常。
- parser 过程通常不会返回异常
- ruleDescr = parser.parse(resource); 为空代表有异常
具体测试代码如下:
public class DrlParserTest {
public static void main(String[] args) {
// 定义规则文件内容
Resource resource =
new ClassPathResource("org/drools/learn/Error.drl");
// 使用 DrlParser 解析规则
DrlParser parser = new DrlParser();
// RuleDescrBuilder ruleDescrBuilder = new RuleDescrBuilder("ExampleRule");
// RuleDescr ruleDescr = null;
PackageDescr ruleDescr=null;
try {
ruleDescr = parser.parse(resource);
} catch (DroolsParserException e) {
System.err.println("DroolsParserException "+e.getMessage());
} catch (IOException e) {
System.err.println("IOException "+e.getMessage());
}
// parser失败 ruleDescr为空
if (ruleDescr==null ){
List<DroolsError> errs = parser.getErrors();
errs.forEach( e->{
System.err.println("error: "+e.getMessage());
});
}
// 输出解析后的规则描述
System.out.println("Parsed Rule: " + ruleDescr);
}
}