Drools快速入门(第二版)讲述.ppt

  1. 1、本文档共48页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Drools快速入门(第二版)讲述

* * * * * * * * * * * * * * * * * * * * 结果部分(RHS) 只有在 LHS 的所有条件都满足时 RHS 部分才会执行. 在 RHS 当中可以使用 LHS 定义的绑定变量名, 设置的全局变量、或者是直接编写 Java 代码。 RHS 虽然可以直接编写 Java 代码,但不建议在代码当中有条件判断,如果需要条件判断,请重新考虑将其放在 LHS 当中,否则就违背了使用规则的初衷。 在 RHS 里面,提供了一些对当前 Working Memory 实现快速操作的宏宏函数或对象 比如 insert/insertLogical、 update 和 retract 就可以实现对当前 Working Memory中的 Fact 对象进行新增、删除或者是修改。 Drools 还提供了一个名为 kcontext 的宏对象。 Kcontext的宏对象直接访问当前 Working Memory 的 KnowledgeRuntime Insert宏函数 Java 类中 StatefulKnowledgeSession 对象的 insert 方法的作用相同。 都是用来将一个 Fact 对象插入到当前的 Working Memory 当中 基本格式: 注意: 一旦调用 insert 宏函数,那么 Drools 会重新与所有的规则再重新匹配一次,对于没有设置 no-loop=true 的规则,如果条件满足,不管其之前是否执行过都会再执行一次。 update、retract 宏函数同样具有该特性。 可以这么理解,在调用insert 、update、retract宏函数时,会自动的用 fireAllRules()方法触发所有的规则执行 。 使用实例如右图: Update 宏函数 用来实现对当前 Working Memory 当中的 Fact 进行更新。 有两种用法形式 (1) 直接更新一个 Fact 对象,格式: (2) 通过指定 FactHandle 来更新对应的 Fact 对象。 Update 宏函数 FactHandle 来更新对应的 Fact 对象实例: retract宏函数 用来将 Working Memory 当中某个 Fact 对象从 Working Memory 当中删除。 使用格式: restact(new Object() ) drools宏对象 Drools宏对象可以用来实现对当前的Working Memory 控制。 Modify表达式 Modify表达式可以快速实现对 Fact 对象多个属性进行修改,修改完成后会自动更新到当前的 Working Memory 当中。 格式: 实例如: 注意: 一旦调用 modify表达式 ,那么 Drools 会重新与所有的规则再重新匹配一次,对于没有设置 no-loop=true 的规则,如果条件满足,不管其之前是否执行过都会再执行一次。 insert、update、retract、modify需要注意的地方 (1)它们都能使Working Memery里的fact对象发生变化。 (2)都会自动调用fireAllRules()方法,自动触发规则的执行。 (3)触发规则时,若no-loop=true,新改变的fact对象,会对非自身的其它的所有规则重新匹配一次。 (4)触发规则时,若no-loop=false,新改变的fact对象,会对所有规则(包括自身)重新匹配一次。 (5)触发规则时,匹配的原则是:新改变的fact对象 只去匹配 条件包涵有fact对象的规则表达式 。 (6)no-loop属性,只是针对 自身触发的规则有用。 注意用好此属性,避免死循环 属性部分 Drools5中,规则的属性共有 13 个,它们分别是:activation-group、agenda-group、auto-focus、date-effective、date-expires、dialect、duration、enabled、lock-on-active、no-loop、ruleflow-group、salience、when 下面介绍几个常用的比较重要的 属性 salience,它的作用是用来设置规则执行的优先级,默认是0,数字越大执行优先级越高,值也可以是负数。 no-loop,它的作用是用来控制已经执行过的规则在条件再次满足时是否再次执行。 enabled,表示规则是否可用,默认为true,值为false,表示该条规则不可用。 dialect,用来定义规则当中要使用的语言类型, Drool

文档评论(0)

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

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

1亿VIP精品文档

相关文档