我正在尝试编写避免排序的规则。我的情景是 -
rule "common rule"
when
// check if it is a "xyz" customer
then
insertLogical(new MyCondition("Is a xyz customer", true));
end
在其他规则中,我根据上述条件做出决定 -
rule "rule1"
when
MyCondition("Is a xyz customer", true)
then
System.out.println("This is a xyz customer");
end
我有另一条规则 -
rule "rule2"
when
not MyCondition("Is a xyz customer", true)
then
System.out.println("This is NOT a xyz customer");
end
由于我没有使用任何沉默,在某些情况下,我的rule1和rule2都被解雇了。最初,知识库中没有MyCondition对象,“rule2”被解雇了。之后,插入了MyCondition的对象,并且“rule1”被解雇了。
1。当我没有检查“不”状态的规则时,一切都很完美。当我使用“not”存在条件时,我遇到了问题。有什么办法可以解决这个问题?
答案 0 :(得分:1)
“我正在尝试编写避免订购的规则”
听起来你需要使用显着性来订购你的规则才能获得理想的行为。
我建议您在插入“MyCondition”事实的规则上使用更高的突出性,而不是检查是否存在“MyCondition”事实的规则。
例如:
rule "common rule"
salience 10
when
// check if it is a "xyz" customer
then
insertLogical(new MyCondition("Is a xyz customer", true));
end
rule "rule1"
salience 0
when
MyCondition("Is a xyz customer", true)
then
System.out.println("This is a xyz customer");
end
rule "rule2"
salience 0
when
not MyCondition("Is a xyz customer", true)
then
System.out.println("This is NOT a xyz customer");
end