Drools规则语言中各种宏函数用法简介

来源:互联网 发布:地下城堡兑换码数据 编辑:程序博客网 时间:2024/04/28 22:58
Drools规则语言中各种宏函数用法简介 
 
在 Drools 当中,在RHS 里面,提供了一些对当前Working Memory 实现快速操作的宏函数或对象,比如insert/insertLogical、update 和retract 就可以实现对当前Working Memory中的Fact 对象进行新增、删除或者是修改;如果您觉得还要使用Drools 当中提供的其它方法,那么您还可以使用另一外宏对象drools,通过该对象可以使用更多的操作当前WorkingMemory 的方法;同时Drools 还提供了一个名为kcontext 的宏对象,使我们可以通过该对象直接访问当前Working Memory 的KnowledgeRuntime。 
insert 
函数insert 的作用与我们在Java 类当中调用StatefulKnowledgeSession 对象的insert 方法的作用相同,都是用来将一个Fact 对象插入到当前的Working Memory 当中。它的基本用法格式如下: 
insert(new Object()); 
一旦调用insert 宏函数,那么Drools 会重新与所有的规则再重新匹配一次,对于没有设置no-loop 属性为true 的规则,如果条件满足,不管其之前是否执行过都会再执行一次,这个特性不仅存在于insert 宏函数上,后面介绍的update、retract 宏函数同样具有该特性,所以在某些情况下因考虑不周调用insert、update 或retract 容易发生死循环。 
insertLogical 
insertLogical 作用与insert 类似,它的作用也是将一个Fact 对象插入到当前的WorkingMemroy 当中。 
update 
update 函数意义与其名称一样,用来实现对当前Working Memory 当中的Fact 进行更新,update 宏函数的作用与StatefulSession 对象的update 方法的作用基本相同,都是用来告诉当前的Working Memory 该Fact 对象已经发生了变化。它的用法有两种形式,一种是直接更新一个Fact 对象,另一种为通过指定FactHandle 来更新与指定FactHandle 对应的Fact 对象。 




   新市场营销法则 助推企业成长  电子商务营销  食品餐饮营销  建筑房产营销  消费品营销    
 




retract 
和StatefulSession 的retract 方法一样,宏函数retract 也是用来将Working Memory 当中某个Fact 对象从Working Memory 当中删除。 
drools 
如果您希望在规则文件里更多的实现对当前的Working Memory 控制,那么可以使用drools 宏对象实现,通过使用drools 宏对象可以实现在规则文件里直接访问WorkingMemory。在前面介绍update 宏函数的时候我们就使用drools 宏对象来访问当前的WorkingMemory,得到一个指定的Fact 对象的FactHandle。同时前面介绍的insert、insertLogical、update 和retract 宏函数的功能皆可以通过使用drools 宏对象来实现。 
kcontext 
kcontext 也是Drools 提供的一个宏对象, 它的作用主要是用来得到当前KnowledgeRuntime 对象,KnowledgeRuntime 对象可以实现与引擎的各种交互。 
modify 
modify 是一个表达式块,它可以快速实现对Fact 对象多个属性进行修改,修改完成后会自动更新到当前的Working Memory 当中。它的基本语法格式如下: 
modify(fact-expression){ 
<修改Fact 属性的表达式>[,<修改Fact 属性的表达式>*] 
}
0 0
原创粉丝点击