如何找到JESS中可能存在冲突的规则?

时间:2015-01-22 13:27:40

标签: rule-engine jess

如果我在jess中定义了设置规则,是否可以根据规则中LHS上定义的模式找到可能导致冲突的规则集。

(defrule rule1   (模式?x)
  =>   (打印输出t"规则1解雇"))

(defrule rule2   (模式?x)
  =>   (打印输出t"规则2解雇"))

无论如何找到上面定义的两个规则将来会发生冲突,如果不是在断言所有被激活的规则的事实列表时?

1 个答案:

答案 0 :(得分:0)

我不知道你的意思是什么"冲突"。如果有两个规则在相同或几乎相同的情况下触发,那么这就是程序员想要的并且它将起作用;它不是一个冲突"在常识中。虽然,如果结果不符合规格,那只是一个Bug。

查找任何两个非平凡的身份(您的示例 是微不足道的)是一个任务,需要回答问题是否任何一组事实对象实例触发两个规则。这相当于回答了规则A是否定义了一个集合,该集合是规则B定义的集合(反之亦然)。

如果约束很简单,对对应值的巧妙分析可能会提供答案 - 但总的来说,并不是那么简单。约束可以利用任意复杂的函数。