Drools门手册.ppt

  1. 1、本文档共42页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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)

aww4466 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档