带有布尔变量的Drools规则

带有布尔变量的Drools规则,drools,Drools,我想在我的drl文件中声明一个布尔变量,并想基于该变量的值编写一个规则。我找不到这方面的好例子 我试着说: declare Flag flag: Boolean end 在其中一条规则中,我修改如下: flag = Boolean.TRUE; 我的规则是: rule "<210> Determine flag" when Flag(flag == true) ... end 规则“确定标志” 什么时候 标志(标志==true) ...

我想在我的drl文件中声明一个布尔变量,并想基于该变量的值编写一个规则。我找不到这方面的好例子

我试着说:

declare Flag
    flag: Boolean
end
在其中一条规则中,我修改如下:

  flag = Boolean.TRUE;
我的规则是:

rule "<210> Determine flag"
    when
        Flag(flag == true)
    ...
end
规则“确定标志”
什么时候
标志(标志==true)
...
终止

但它给了我错误,因为无法解析标志。

您不能像(我认为)您尝试的那样以通常的方式声明变量。请阅读Drools文档并区分绑定变量、全局变量、事实及其字段和右侧局部变量(在静态Java方法中)

要查看带有布尔字段的
declare
如何工作,请使用以下DRL代码:

declare Flag
  flag: Boolean
end

rule "hoist a Flag"
when
    not Flag()
then
    insert( new Flag( true ) );
end

rule "a true Flag"
when
    Flag( flag )
then
    System.out.println( "The Flag.flag is true." );
end

你不能像(我认为)你试图做的那样用通常的方式声明变量。请阅读Drools文档并区分绑定变量、全局变量、事实及其字段和右侧局部变量(在静态Java方法中)

要查看带有布尔字段的
declare
如何工作,请使用以下DRL代码:

declare Flag
  flag: Boolean
end

rule "hoist a Flag"
when
    not Flag()
then
    insert( new Flag( true ) );
end

rule "a true Flag"
when
    Flag( flag )
then
    System.out.println( "The Flag.flag is true." );
end

您可以使用以下选项:

rule "Test"
   when
      a: TestClass( getFlag())
   then
      //some action
end

另请参见此答案:

您可以使用以下选项:

rule "Test"
   when
      a: TestClass( getFlag())
   then
      //some action
end
另请参见以下答案: