《Drools7.0.0.Final规则引擎教程》第4章 注释&错误信息

简介: 《Drools7.0.0.Final规则引擎教程》第4章 注释&错误信息

注释

像Java开发语言一样,Drools文件中也可以添加注释。注释部分Drools引擎是会将其忽略调的。单行注释使用“//”,示例如下:

rule "Testing Comments"
when
    // this is a single line comment
    eval( true ) // this is a comment in the same line of a pattern
then
    // this is a comment inside a semantic code block
end

注意,使用“#”进行注释已经被移除。

多行注释与Java相同,采用“/注释内容/”,来进行注释,示例如下:

rule "Test Multi-line Comments"
when
    /* this is a multi-line comment
       in the left hand side of a rule */
    eval( true )
then
    /* and this is a multi-line comment
       in the right hand side of a rule */
end

错误信息

Drools 5引入了标准化的错误信息,可以快速的查找和解决问题。本节将介绍如何利用错误信息来进行快速定位问题和解决问题。

错误信息的各式如下图:image.png第一部分:错误编码;

第二部分:错误出现的行列信息;

第三部分:错误信息描述;

第四部分:上下午的第一行信息,通常表示发生错误的规则,功能,模板或查询。此部分并不强制。

第五部分:标识发生错误的pattern(模式)。此部分并不强制。


下面以一组错误实例来分析常见的异常情况,首先用官网提供的例子来执行:


rule one
  when
    exists Foo()
    exits Bar()  // "exits"
  then
end

由于exits是错误的语法,因此会抛出异常,但此处需要注意的事在Drools 7中抛出的异常并非官网提供的异常。异常信息如下:

java.lang.RuntimeException: Error while creating KieBase[Message [id=1, kieBase=rules, level=ERROR, path=conditional1.drl, line=27, column=0
   text=[ERR 102] Line 27:6 mismatched input 'Bar' in rule "one" in pattern], Message [id=2, kieBase=rules, level=ERROR, path=conditional1.drl, line=0, column=0
   text=Parser returned a null Package]]

再看一个没有规则名称导致的错误:

rule
   when
    Object()
   then
     System.out.println("A RHS");
end

执行之后异常信息如下:

java.lang.RuntimeException: Error while creating KieBase[Message [id=1, kieBase=rules, level=ERROR, path=conditional1.drl, line=25, column=0
   text=[ERR 102] Line 25:3 mismatched input 'when' in rule], Message [id=2, kieBase=rules, level=ERROR, path=conditional1.drl, line=0, column=0
   text=Parser returned a null Package]]

很显然上面的异常是因为规则没有指定名称,而关键字when无法作为名称,因此在此处抛出异常。

格式不正确导致的异常:

rule test
   when
    foo3:Object(
• 1
• 2
• 3
• 4

异常信息如下:

java.lang.RuntimeException: Error while creating KieBase[Message [id=1, kieBase=rules, level=ERROR, path=conditional1.drl, line=0, column=0
   text=Line 26:16 unexpected exception at input '<eof>'. Exception: java.lang.NullPointerException. Stack trace:
 java.lang.NullPointerException
目录
相关文章
|
Java 测试技术 API
《Drools7.0.0.Final规则引擎教程》第3章 3.1 Hello World 实例
《Drools7.0.0.Final规则引擎教程》第3章 3.1 Hello World 实例
239 0
《Drools7.0.0.Final规则引擎教程》第3章 3.1 Hello World 实例
|
存储 Java API
《Drools7.0.0.Final规则引擎教程》Springboot+规则重新加载
《Drools7.0.0.Final规则引擎教程》Springboot+规则重新加载
467 0
《Drools7.0.0.Final规则引擎教程》Springboot+规则重新加载
|
缓存 Java 测试技术
《Drools7.0.0.Final规则引擎教程》第3章 3.2 KIE API解析
《Drools7.0.0.Final规则引擎教程》第3章 3.2 KIE API解析
463 0
《Drools7.0.0.Final规则引擎教程》第3章 3.2 KIE API解析
|
Java 编译器 API
《Drools7.0.0.Final规则引擎教程》第4章 4.5RHS语法
《Drools7.0.0.Final规则引擎教程》第4章 4.5RHS语法
237 0
《Drools7.0.0.Final规则引擎教程》第4章 4.5RHS语法
|
Java
《Drools7.0.0.Final规则引擎教程》第4章 4.1 规则文件
《Drools7.0.0.Final规则引擎教程》第4章 4.1 规则文件
206 0
|
数据库
《Drools7.0.0.Final规则引擎教程》番外实例篇——获取规则名称和包名
《Drools7.0.0.Final规则引擎教程》番外实例篇——获取规则名称和包名
225 0
|
API
《Drools7.0.0.Final规则引擎教程》第5章 session使用说明
《Drools7.0.0.Final规则引擎教程》第5章 session使用说明
429 0
《Drools7.0.0.Final规则引擎教程》番外实例篇——默认条件的陷阱
《Drools7.0.0.Final规则引擎教程》番外实例篇——默认条件的陷阱
154 0
《Drools7.0.0.Final规则引擎教程》番外实例篇——FactHandler使用案例
《Drools7.0.0.Final规则引擎教程》番外实例篇——FactHandler使用案例
155 0
|
安全 Java 数据库
《Drools7.0.0.Final规则引擎教程》第4章 4.4 约束(Pattern的一部分)
《Drools7.0.0.Final规则引擎教程》第4章 4.4 约束(Pattern的一部分)
281 0