在Drools Expert中结合规则逻辑

时间:2014-02-19 08:25:18

标签: drools

在Drools中,是否可以在定义DRL文件时以某种方式组合规则。例如,如果我有两个这样的规则:

rule A
 // definition
end

rule B
 // definition
end

是否可以使用另一个实现逻辑的规则:A或B?

2 个答案:

答案 0 :(得分:0)

两个规则A和B 是A或B(不是xor)的逻辑等价物。

您不能引用其他规则,但可以在同一LHS条件下定义查询并调用两个(或更多)查询。

但是,逻辑的整体模式可能会使一种完全不同的方法变得更加可取,其中不同规则的匹配通过作为派生事实插入而变得有形,称为真值维护。

rule A when ... then
  insertLogical( new Fired( "A" ) );
end
rule B when ... then
  insertLogical( new Fired( "B" ) );
end
rule AorB when
  Fired( rule == "A" || rule == "B" ) // other patterns for other combinations, e.g. &&
then
   ...
end

有必要提供更多细节以获得精确的建议。

答案 1 :(得分:0)

您还可以查看激活组,它将触发一条规则并取消其他规则。