- 1、本文档共32页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Drools使用手册第三章
第三章.?规则语言
3.1.?概述
Drools 3 自带一种非XML格式的规则语言。这种格式通过使用标点符号,使得标点非常的轻量化,并且通过DSL(域规则语言)支持自然语言的扩展,这使得你可以将该语言演化到与你需要解决的问题域更为相配。这章主要介绍Drools3自带的规则语言。其中所用的图称为线路图,是对语言中术语解释的基本流图表。对该技术非常有兴趣的话,你可以查阅“drl.g”,那是Antlr3为规则语言提供的语法分析。如果你使用规则工作台,那许多规则结构可以通过内容辅助系统完成,例如输入‘ru’然后按下Ctrl+Space,它将为你建立一个规则结构。
3.1.1.?规则文件
规则文件通常是以drl扩展名结尾。在一个drl文件中可以包含多个规则,函数等等。但是你也可以将规则分开到多个规则文件中(在这种情况下建议采用.rule扩展名,但不是必需的),分散规则利于管理巨量规则的情况。DRL是简单的text文件格式。
3.1.2.?What makes a rule
规则具有如下主体结构:
rule?name????ATTRIBUTES????when????????LHS????then????????RHSend
规则的结构是非常简单的,许多符号都是不需要的,甚至“name”两边的引号也是可选的。ATTRIBUTES(通常是可选项)指出规则的行为表现。LHS是规则的条件部分,它遵循下面将提到的语法。RHS是允许Java语义代码(很快将支持其它语言和C#)执行的块。仅有的特别的关键字是为了设置,删除和修改facts所用。任何在LHS中绑定的变量可以在RHS中使用。
特别注意的是,空白是不重要的,除非在DSL中使用,在DSL中每一行会先于下一行处理(空白在这里可能有很重要的作用)。
3.1.3.?领域语言 Domain Specific Languages
DSL是作为对Drools 3自带语言的增强来实现的。使用了“expander(扩展)”机制。这个扩展机制是一个可扩展的API,但是它默认与dsl扩展名的文件工作,dsl文件中包含了如何将域语言或自然语言映射为规则语言以及域对象。你可以认为这些dsl文件也是对你的域模型的映射(它为你提供了一点的隔绝性)。
DSLs扩展机制通过一行行处理规则源文件,就好像进行编译一样,这也是换行机制唯一起到重要作用的时候。它用来增加可读性并避免使用标点符号。DSL扩展机制可以为不同的领域进行预定义,并提供其它自然语言的格式进行分析。相信DSL对你的应用是有用的,它事实上可以让规则看起来非常易懂。但在某些情况下,Drools自带的规则语言是完美的。如何选择是你的自由。
3.1.4.?Reserved words
在规则语言中使用了一些保留字。避免在你的领域对象,属性,方法,函数以及规则的其它部分中使用保留字是明智的。接下来的列表是你应该在规则内容中避免使用的保留字(如果使用了,大多数时候可以正常工作,但有时会引起解析错误)。当然你可以将这也关键字用作方法等定义的一部分,例如notSomething(),这样没有问题。
whenthenruleendcontainsmatchesandormodifyretractassertsaliencefunctionqueryexistsevalagenda-groupno-loopduration-notauto-focus
3.2.?Comments 注释
注释用来标记那些需要被规则引擎忽略的内容。引擎在遇到这些注释时会迅速排除它们。
3.2.1.?单行注释
图?3.1.?单行注释
3.2.2.?多行注释
图3.2.?多行注释
3.3.?Package 包
包是规则以及其它相关结构的一个集合,如import和global。包的成员应该彼此有一定联系,如人力资源的规则包。一个包通过名称空间描绘,这样很好的保持了一组规则的独立性。包名也就是名称空间名,与文件或目录名称无关。
通过使用包,可以将规则从多个规则源组装起来,使用一个顶层包将所有规则包含(当规则被装配的时候)。通常情况下,是将一个包所有的规则放在声明包的同样的文件中,这是完全的自包含。
下面的线路图显示一个包中可能包含的所有组件。注意,包必须有一个名称空间,并且使用标准的java约定进行命名;例如包名不允许空格,不像规则名称可以有空格。除了package和恶性pander标记必须放在文件的顶部,在其它规则之前,其它关键字元素的使用没有任何顺序要求,可以使用在文件的任何地方。分号是可选用的。
The following rail road diagram shows all the components that may make up a
您可能关注的文档
最近下载
- 2024年高空作业考试题库附答案5套(完整版).DOC
- 印刷类原辅料进料检验标准.pdf
- 部编人教版四年级上册《道德与法治》全册教学反思.pdf VIP
- 江苏省南通市2023-2024学年高一上学期语文期中考试试卷(含答案).pdf VIP
- 国家开放大学《中国近现代史纲要》社会实践报告.docx VIP
- 领读经典-现代文学(1)(山东大学)中国大学MOOC慕课 章节测验期末考试答案.docx
- 《幼儿挑食、偏食行为的原因分析及对策》开题报告(含提纲)5800字.doc
- 2022年贵州省高职(专科)分类招生中职生文化综合考试试卷(语数英、含答案).pdf
- 小学语文优秀教学案例.docx VIP
- 冬季血压早达标远离心脑血管疾病-高血压慢性病培训讲座课件PPT.pptx
文档评论(0)