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()。
我有一个非常简单的测试应用程序,它在 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()。