drools —-stateful session(有状态会话)的使用

什么是有状态

有状态会话长期存在,并允许随着时间的推移进行迭代更改。 有状态会话的一些常见用例包括但不限于:

  1. 监测

半自动买入股票市场监控与分析。

  1. 诊断

故障查找,医疗诊断

  1. 物流

包裹跟踪和送货配置

  1. 合规

验证市场交易的合法性。

与无状态会话相反,必须先调用 dispose() 方法,以确保没有内存泄漏,因为 KieBase 包含创建状态知识会话时的引用。 由于状态知识会话是最常用的会话类型,所以它只是在 KIE API 中命名为 KieSession。 KieSession 还支持 BatchExecutor 接口,如 StatelessKieSession,唯一的区别是 FireAllRules 命令在有状态会话结束时不被自动调用。

我们举例说明了用于提高火灾报警器的监控用例。 只使用四个类,我们假设 Room 代表房子里的房间,每个 Room 都有一个喷头 Sprinkler。 如果在房间里发生火灾,我们用一个 Fire 实例来表示, 用 Alarm 代表警报 。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
\] names = new String\[{“kitchen”, “bedroom”, “office”, “livingroom”};<br />Map<String,Room> name2room = new HashMap<String,Room>();<br />for(String name: names){<br />Room room = new Room(name);<br />name2room.put(name, room);<br />ksession.insert(room);<br />Sprinkler sprinkler = new Sprinkler(room);<br />ksession.insert(sprinkler);<br />}</p> <p>ksession.fireAllRules();</th> </tr> </thead> <tbody> <tr> <td></td> <td></td> </tr> </tbody> </table> <blockquote> <p>Everything is ok</p> </blockquote> <p>我们现在创造两个 Fire 并插入它们, 随着内部的火灾,一旦调用了 fireAllRules(),报警器就会升高,并且相应的喷水灭火器打开。</p> <table> <thead> <tr> <th>1<br />2<br />3<br />4<br />5<br />6</th> <th>Fire kitchenFire = new Fire(name2room.get( “kitchen”) );<br />Fire officeFire = new Fire(name2room.get( “office”) );<br />FactHandle kitchenFireHandle = ksession.insert(kitchenFire);<br />FactHandle officeFireHandle = ksession.insert(officeFire);</p> <p>ksession.fireAllRules();</th> </tr> </thead> <tbody> <tr> <td></td> <td></td> </tr> </tbody> </table> <blockquote> <p>Raise the alarm</p> <p>Turn on the sprinkler for room kitchen</p> <p>Turn on the sprinkler for room office</p> </blockquote> <p>一段时间之后,火灾将熄灭,并且 Fire 实例被撤回。 这导致喷头关闭,报警被取消,最后再次打印 Everything is ok。</p> <table> <thead> <tr> <th>1<br />2<br />3<br />4</th> <th>ksession.delete(kitchenFireHandle);<br />ksession.delete(officeFireHandle);</p> <p>ksession.fireAllRules();</th> </tr> </thead> <tbody> <tr> <td></td> <td></td> </tr> </tbody> </table> <blockquote> <p>Cancel the alarm</p> <p>Turn off the sprinkler for room office</p> <p>Turn off the sprinkler for room kitchen</p> <p>Everything is ok</p> </blockquote> </body></html>">
大T笔记所有文章均为本人原创,转载请您注明来源,并留下原文链接地址,是对我的尊重,也是对知识的尊重,谢谢!
大T笔记 » drools —-stateful session(有状态会话)的使用

大T笔记-我的个人互联网创业和自由职业之路

关于我 我的百宝箱
大T笔记-专注个人互联网创业和自由职业