使用stateless session時,通常我們插入一個fact,對應(yīng)規(guī)則集合A被觸發(fā)页徐,如果fact內(nèi)容的變化,我們可以在fireAllRules之后银萍,看到fact內(nèi)容的修改变勇。但如果需要進(jìn)行邏輯推理,在fact的內(nèi)容變化時砖顷,我們想讓規(guī)則引擎感知變化的話贰锁,就需要用到stateful session赃梧。
使用stateless session時滤蝠,直接調(diào)用對象的方法:sprinkler.setOn(true);即可,如果使用stateful session需要使用“with”語句:modify(sprinkler ) { setOn( true ) };
參考鏈接的例子中授嘀,當(dāng)我們插入或刪除fire時物咳,會觸發(fā)規(guī)則,使Sprinkler的狀態(tài)發(fā)生變化
FactHandle kitchenFireHandle = ksession.insert( kitchenFire ); FactHandle officeFireHandle = ksession.insert( officeFire );
ksession.fireAllRules();
ksession.delete( kitchenFireHandle ); ksession.delete( officeFireHandle ); ksession.fireAllRules();
參考: