我问过一个类似的问题,但问题没有得到妥善解决 . 我会再次尝试解释它 .

以下是我的用例以非常抽象的方式 .

(i). If there is at least one objA of type A, create another obj2A of type A.
(ii) If there are two or more object of type A, create an object objB of type B.

我的.drl文件中有两个规则,用于检查两个用例的工作内存中的“if”条件 . 假设规则被命名为rule1和rule2 . 在这些规则中我使用Drools查询 . 我在java端创建对象(类型A和类型B)并触发规则 . 所以基本上,在规则的'then'部分,我没有做任何对象创建,所以规则可能会再次开始触发 .

首先,我创建一个类型为A的objA并将其放入工作内存中 .

现在我正在解雇规则 .

fire1)只有rule1匹配,我将创建另一个A类对象并放入工作内存 . 再次射击 .

fire2)现在情况到达rule1和rule2都匹配的地方 .

这是我的两个问题 .

  • 在fire1和fire2两者中,rule1匹配类型A的对象 . 有没有办法从Drools获取这些模式匹配相似或不同的信息?

  • 有没有办法告诉Drools第二次开火时不评估rule1(fire2)?

如果我应该提供更多细节,请告诉我 .