《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引入了标准化的错误信息,可以快速的查找和解决问题。本节将介绍如何利用错误信息来进行快速定位问题和解决问题。
错误信息的各式如下图:
第一部分:错误编码;
第二部分:错误出现的行列信息;
第三部分:错误信息描述;
第四部分:上下午的第一行信息,通常表示发生错误的规则,功能,模板或查询。此部分并不强制。
第五部分:标识发生错误的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(
异常信息如下:
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
其他异常信息就不在这里赘述了,实际应用中不断的学习总结即可根据错误信息快速定位问题所在。
后语
此系列课程持续更新中,QQ群:593177274(可扫描左上侧栏目二维码),欢迎大家加入讨论。点击链接关注《Drools博客专栏》。由于Drools资料较少,教程编写不易,每篇博客都亲身实践编写demo。如果对你有帮助也欢迎赞赏(微信)! 也是对原创的最大支持!
《Drools7.0.0.Final规则引擎教程》第4章 注释&错误信息的更多相关文章
- 《Drools7.0.0.Final规则引擎教程》Springboot+规则重新加载
在<Drools7.0.0.Final规则引擎教程>之Springboot集成中介绍了怎样将Drools与Springboot进行集成,本篇博客介绍一下集成之后,如何实现从数据库读取规则并 ...
- 《Drools7.0.0.Final规则引擎教程》第3章 3.1 Hello World 实例
3.1 Hello World 实例 在上一章中介绍了Drools5x版本中规则引擎使用的实例,很明显在Drools7中KnowledgeBase类已经标注为"@Deprecated&quo ...
- 《Drools7.0.0.Final规则引擎教程》第2章 追溯Drools5的使用
2.1 Drools5简述 上面已经提到Drools是通过规则编译.规则收集和规则的执行来实现具体功能的.Drools5提供了以下主要实现API: KnowledgeBuilder Knowledge ...
- 【java规则引擎】《Drools7.0.0.Final规则引擎教程》第3章 3.2 KIE API解析
转载至:https://blog.csdn.net/wo541075754/article/details/75004575 3.2.4 KieServices 该接口提供了很多方法,可以通过这些方法 ...
- 【java规则引擎】《Drools7.0.0.Final规则引擎教程》第3章 3.2 KIE概念&FACT对象
转载:https://blog.csdn.net/wo541075754/article/details/74943236 3.2.1 什么是KIE KIE(Knowledge Is Everythi ...
- 《Drools7.0.0.Final规则引擎教程》第3章 3.2 KIE API解析
3.2.4 KieServices 该接口提供了很多方法,可以通过这些方法访问KIE关于构建和运行的相关对象,比如说可以获取KieContainer,利用KieContainer来访问KBase和KS ...
- 《Drools7.0.0.Final规则引擎教程》第3章 3.2 KIE概念&FACT对象
3.2.1 什么是KIE KIE(Knowledge Is Everything),知识就是一切的简称.JBoss一系列项目的总称,在<Drools使用概述>章节已经介绍了KIE包含的大部 ...
- 【java规则引擎】《Drools7.0.0.Final规则引擎教程》第4章 4.1 规则文件
转载至:https://blog.csdn.net/wo541075754/article/details/75150267 一个标准的规则文件的格式为已“.drl”结尾的文本文件,因此可以通过记事本 ...
- 《Drools7.0.0.Final规则引擎教程》第4章 4.4 约束(Pattern的一部分)
4.4.3 约束(Pattern的一部分) 前面我们已经介绍了条件约束在Pattern中位置了,那么什么是条件约束呢?简单来说就是一个返回true或者false的表达式,比如下面的5小于6,就是一个约 ...
随机推荐
- 20145302张薇《Java程序设计》第九周学习总结
20145302 <Java程序设计>第九周学习总结 教材学习内容总结 第十六周 JDBC简介 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC目的:让Jav ...
- 20145313张雪纯 《Java程序设计》第1周学习总结
20145313 <Java程序设计>第1周学习总结 教材学习内容总结 java有三大平台,分别为Java SE(J2SE).Java EE(J2EE).Java ME(J2 ME). J ...
- 20145322《Java程序设计》第2次实验报告
20145322<Java程序设计>第2次实验报告 实验步骤与内容 一.实验内容 1.初步掌握单元测试和TDD 2.理解并掌握面向对象三要素:封装.继承.多态 3.初步掌握UML建模 4. ...
- 《面向对象的JavaScript》读书笔记
发现了2004年出版的一本好书,用两天快速刷了一遍,草草整理了一下笔记,在此备忘. 类:对象的设计蓝图或制作配方. 对象 === 实例 :老鹰是鸟类的一个实例 基于相同的类创建出许多不同的对象,类更多 ...
- CSS控制滚动条的样式
到今天(2018年10月25日)为止, 这还是chrome上的一个实验性特性: ::-webkit-scrollbar{width:4px;height:4px;} ::-webkit-scrollb ...
- linux下安装sphinx
1.下载sphinx源码包 上面截图的这个网址 复制链接地址 在putty终端使用:wget http://sphinxsearch.com/files/sphinx-2.3.1-beta.t ...
- rsync | scp文件同步命令使用
现在有一台服务器A,目录/data2/abc下存在若干文件夹和文件,需要复制到服务器B中.这时,可以在服务器A上执行rsync或者scp命令,将文件夹或文件复制到服务器B中. SCP: scp /da ...
- SpringBoot项目结构介绍
一项目结构介绍 springboot框架本身对项目结构并没有特别的要求,但是按照最佳的项目结构可以帮助我们减少可能遇到的错误问题.结构如下: (1)应用主类SpringbootApplication应 ...
- 使用size_t注意边界
C++中的 size_t 表示数组的下标,一般为: typedef unsigned size_t; 在学习中我们一般使用int表示下标,这样在循环中可以判断边界x>=0 或x<=0,比如 ...
- 一个带展示的jsp上传控件模型
带展示上传控件的基本模型,无样式 jsp部分: <td> <form id="form1" enctype="multipart/form-data&q ...