Drools推理的例子1-房间救火

来源:互联网 发布:小型网吧网络拓扑图 编辑:程序博客网 时间:2024/04/29 23:34

 1.必须使用有状态的session


2.基本类

  • Room类
  • Sprinkler灭火器
  • Alarm报警器
  • Fire火灭


3.规则写法

注意

a.modify语句,是对对象的修改,与直接调用对象的set方法的不同是,调用modify后,被修改的对象会在规则引擎中重新检查是否匹配某条规则,从而产生推理。因此,推理必须使用有状态的session

b."not"语句,可以检查一个对象是否不存在

只要有任意一个房间发生火灭,就打开报警器

注意这里是用的exists语句,检查对象是否存在

当所有房间都不存在火灭时,关闭报警器

当不存在火灭以及报警时,报告一切安好!


4.规则执行过程

a. 准备4个房间,并先触发一次执行

系统报“Everything is ok!”

b.两个房间发生火灭

系统报“Raise the alarm”  “Turn on the sprinkler for room kitchen”  “Turn on the sprinkler for room office”

c.把Fire对象移除掉

系统报“Cancel the alarm”  “Everything is ok”

原创粉丝点击