欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Drools规则执行顺序(二)

程序员文章站 2022-05-28 11:17:05
...
当规则空间中的事实(fact)有多个时,规则会匹配多个组合.

Rule rule = new Rule();
rule.setRuleName("test");
rule.setSalience(100);
ksession.insert(rule);
ksession.fireAllRules();

import test.Rule;

rule "test second"
salience 20
activation-group "test"
no-loop true
when
$test: Rule(ruleName matches "test", salience >= 110)
then
System.out.println($test + " the 1st");

end

rule "test first"
salience 10
no-loop true
when
$test: Rule( )
$show : String( )
then
System.out.println($test + " the 2nd");
System.out.println($show + " the 2nd");
end

rule "test three"
salience -10
activation-group "test"
no-loop true
when
$test: Rule( )
then
System.out.println($test + " the 3rd");
$test.setNo_loop(true);
Rule temp = new Rule();
temp.setRuleName("test");
temp.setSalience(110);

insert("show");
insert("test");
insert(temp);
end

测试结果
[email protected] the 3rd
[email protected] the 1st
[email protected] the 2nd
test the 2nd
[email protected] the 2nd
show the 2nd
[email protected] the 2nd
test the 2nd
[email protected] the 2nd
show the 2nd