0

需要一个规则,如果在特定时间范围内(此处为 10 秒)发生一定数量的 BootNotification(此处为 2),则发出警报。

我想出了以下规则:

rule "MonitorNumberOfReboots"
dialect "mvel"
when
    $s : BootNotification()
    Number( intValue >= 2 ) from accumulate ( BootNotification() over window:time (10s), count(1)) 
    not (Command(this before [0s, 1h] $s )) 
then
    Command $c = new Command();
    insertLogical( $c );
    end

进一步说明:

  • Kie-Engine 以“有状态”、“流”、“实时”和“平等”模式运行

测试:

  • 我通过添加间隔 > 10 秒的 BootNotification 来测试规则 => 规则不会触发 => 检查
  • 我通过添加间隔为 2 秒的 BootNotification 来测试规则 => 规则触发多次 => 失败

问题/问题:

我不希望规则多次触发。当规则触发时,我插入一个命令。在 when 子句中,我添加了一个检查 Command 是否存在。我希望该规则在 1 小时内不会触发超过一次。它不起作用。即使在 10 秒后,它也只是继续插入 Command 实例。

我认为问题可能是我在 when 子句的第三行中的“this before [0s, 1h] $s”,所以我将其替换为

not (Command() over window:time (1h)) 

但是当每 2 秒添加一次 BootNotifications 时,它会更频繁地触发。

4

0 回答 0