流口水:计时器与持续时间属性

标签 drools

流口水documentation表示现在优先使用timer属性而不是duration:

Rules now support both interval and cron based timers, which replace the now deprecated duration attribute.

但我发现这样的规则不起作用:

rule "Expired auth"
    timer(int: 5s)

    when
        $auth   : Authorized()
        $noauth : NotAuthorized()
    then
        retract($auth);
        retract($noauth);
end

因为当第一次评估时,所有事实都将被删除,并且规则不会按预期安排。 但我发现具有 duration 属性的规则可以正常工作:

rule "Expired auth"
    duration(5s)

    ...
end

那么有没有办法通过定时器来做到这一点?

最佳答案

持续时间映射到间隔计时器,因此它们的工作原理相同。您的问题可能出在其他地方。

参见第 176 行 https://github.com/droolsjbpm/drools/blob/master/drools-compiler/src/main/java/org/drools/compiler/rule/builder/RuleBuilder.java#L176

关于流口水:计时器与持续时间属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20428747/

相关文章:

java - 在 drools 中使用相当于 'not exists' 的值

java - Drools 规则在 Spring Boot Controller 中不起作用,但在 Junit Test 中起作用

java - 在 Spring MVC 、 Hibernate 、 Oracle 项目中实现规则引擎所需的设计指南

java - DROOLS 如果条件之一不匹配则停止评估

spring - 如何在 Drools 规则中使用 Spring 服务?

drools - 无法加载 drools 规则,出现错误 : unable to resolve object type

java - 如何在StatelessKieSession中设置AgendaGroup 流口水

java - 流口水规则不触发

java - 在 Drools 和 Optaplanner 中做数学题

java - Kie Workbench 从 session 中删除现有事实