- 1、本文档共42页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Drools门手册
Drools入门手册;高尔夫球员的位置?;引出话题--drools;基于规则的专家系统构成;基于规则的专家系统构成;规则引擎相关构件 ;处理过程分为四个阶段进行 ;规则引擎工作机制 ;Java规则引擎工作机制 ;Java规则引擎API——JSR-94;Java规则引擎API——JSR-94;Java规则引擎API——JSR-94;规则语言 ;规则语言;规则语言;规则语言;规则语言;;Import
标记就像java中的含义一样。对于任何要用在规则中的对象,你需要指定完整的路径和类型名。Drools从同名的java包中自动导入类。
expander
Expander标记是可选的,用来指定DSL配置(通常保存在独立文件中)。这为解析器提供了如何理解你自定义的规则语言。
API允许用编程方式附加DSL模板,如果expander没有声明在源文件中。;
Global不会插入到Working Memory中,因此当全局变量发生改变时,引擎不会得知;因为这个原因,全局变量不能用在条件约束上,除非这个值不会发生改变。在条件约束中错误使用全局变量会导致意想不到的结果。引擎不会通知和跟踪全局变量的值变更。不正确的在约束中使用全局变量会带来让人惊讶的结果——糟糕的惊讶,就像医生对你的X光片说“那里有些有趣的东西”一样。
如果多个Package声明了同样的全局变量,那么它们必须有相同的类型,并指向同一个全局变量。;规则语言;;规则语言;N/A是指表格中空出的地方要填的一栏,与你的情况不合。例如:有的表格问你有几个孩子,你连结婚都没有结,自然填N/A。 ;规则语言;;
;
字段约束分为单值约束,复合值约束和多重约束 ;规则语言;‘memberof’ 用来检查字段是否是集合或数组的成员;集合必须是绑定的变量。
CheeseCounter( cheese memberof $matureCheeses )
not memberof用来检查字段是否不是集合或数组的成员;集合必须是绑定的变量。
CheeseCounter( cheese not memberof $matureCheeses )
字符串约束
字符串约束是最简单的约束格式,将字段与指定的字符串求值:数值,日期,string或者boolean。
Cheese( quantity == 5 )//数值
Cheese( bestBefore 27-Oct-2007 )//日期
Cheese( type == stilton )//字符串
Cheese( smelly == true )// boolean ,注 不允许 Cheese(smelly)
Cheese( smelly == SomeClass.TRUE )// boolean
绑定变量约束
$,这通常用来显示变量与字段的区别
Person( likes : favouriteCheese )//任何匹配的Person实例的favouriteCheese字段
Cheese( type == likes )
$stilton : Cheese( type == stilton )
Cheesery( cheeses contains $stilton );返回值约束
Person( girlAge : age, sex == F )
Person( age == ( girlAge + 2) ), sex == M )
复合值约束
复合值约束用在可能有多个允许值的时候,当前只支持‘in’ 和‘not in’两个操作。
in 和not in运算式实际上被语法分析器重写成多个!= and ==组成的多重约束。
Person( $cheese : favouriteCheese )
Cheese( type in ( stilton, cheddar, $cheese )
多重约束
Person( age 30 40 )
Person( age ( ( 30 40) || ( 20 25) ) )
Person( age 30 40 || location == london )
内联的Eval约束
Inline-eval约束可以使用任何有效的语言表达式,只要它最终能被求值为boolean
元数据类型——避免使用任何Drools关键字作为声明。自动代入
(autovivification)机制用来自动建立字段绑定变量.当构建器发现标识不是当前
定义的变量名是,它将尝试将它作为对象的字段来问,这种情况下,构建器自动在
inline-eval中建立该字段的同名变量
Person( girlAge : age, sex = F )
Person( eval( girlAg
文档评论(0)