Drools-当我访问我在 KieSession 中使用 setGlobal 设置的全局时无法触发规则

Drools- Unable to get rule to fire when I access a global I set using setGlobal in the KieSession

我有一个非常简单的测试应用程序,它在 KieSession 中插入一个全局变量。我有一个存储虚构类别的 ProductFinder 对象。我在会话中将此对象设置为全局对象。我像这样使用 KieSession 设置它: 实际上,当我创建一个具有相同代码但读取不同数据的 kieSession 时,规则就会触发。为什么同一个 kieContainer 在不同的时间指向相同的文件 运行,在一种情况下触发规则而在另一种情况下不触发规则? kieSession.setGlobal("pf", productFinder);

以下是 ProductFinder 和类别的基本 类:

 class ProductFinder {
    Category produce
    Category cosmetics
 }

 class Category{
  Long  code
 }

然后我继续编写一个简单的规则来尝试访问全局类别,如下所示:

 global ProductFinder pf;

 rule "find category Produce "

  when

   $produce : Category(  ) from  pf.produce

   then
      System.out.println("Found product category with info "+$produce ) ;
   end

不幸的是,规则没有触发。我知道全局 ProductFinder 已在全局中设置,因为如果我注释掉我设置全局的行,Drools 会抛出一个异常,抱怨它可以找到全局。

请帮忙。

糟糕,我没有在会话中调用 fireAllRules()。