我要遵循以下条件:
我尝试使用显着性,但问题是,我的第一条规则的输出将被视为第二条规则条件的输入。据我所知,正在发生的事情是,首先执行同一DRL文件中提到的所有规则的条件部分。因此,对于第二条规则,在条件中,变量为空。
示例:
rule "1st rule"
salience 50
when
$bean : Bean(a == 1)
then
$bean.setB(10);
end
rule "2nd rule"
salience 40
when
$bean : Bean(b == 10)
then
System.out.println("2nd rule success");
end
我想说的是,第二条规则只有在执行第一条规则时才会执行。但是,据我所知,规则的“IF”部分在“THEN”部分之前执行,因此,第二条规则失败。
答案 0 :(得分:1)
如果我理解正确,则不执行示例中的第二条规则。这是因为您不会让引擎知道某些内容已发生变化。请使用update
或modify
。
例如
// update
when
$bean : Bean(a == 1)
then
$bean.setB(10);
update($bean);
end
// or with modify
when
$bean : Bean(a == 1)
then
modify($bean) {
setB(10)
};
end