首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >drools-fusion不会在应该的时候从工作内存中提取事件

drools-fusion不会在应该的时候从工作内存中提取事件
EN

Stack Overflow用户
提问于 2010-12-30 18:01:45
回答 2查看 1.3K关注 0票数 2

我有以下两条规则:

代码语言:javascript
复制
    rule "Backup Not Succeeded For At Least 3 Days"
    @ruleId(1)
    when
        Node($id : id)
        not ( Backup(clientId == $id, $state: state == BackupStateEnum.FINISHED) over window:time( 3d ) from entry-point "Backup Stream" )
    then
        //nothing for now
    end

    rule "Prune Previous Successful Backups"
    @ruleId(2)
    when
        $prevBackup  : Backup($id : clientId,  state == BackupStateEnum.FINISHED) over window:time( 3d ) from entry-point "Backup Stream"
        $newerBackup : Backup(clientId == $id, state == BackupStateEnum.FINISHED, this after $prevBackup) over window:time( 3d ) from entry-point "Backup Stream"
    then
        drools.retract($prevBackup);
    end

还有一个“压力测试”,每天生成10K个这样的备份,并模拟50天。如果以上所有规则都是指3天的窗口,并且系统中没有其他规则,那么50天后内存中应该有最多30K的事件(更少,因为成功的事件应该被修剪)。然而,当我检查流入口点(一个WorkingMemoryEntryPoint)的内容时,我的内存中有大约380K个事件-这意味着我有一些非常旧的事件没有像它们应该的那样被自动清除。

KB配置为流处理模式,事件定义如下:

代码语言:javascript
复制
declare Backup
    @role( event )
    @duration ( duration )
    @timestamp( finished )
end

所以没有明确的生命周期管理。我做错了什么?我知道这与规则#2有关,因为如果我删除它,我会在内存中恰好获得30K个事件(每天10K*3天窗口)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-12-20 13:14:39

原来是drools中的一个bug,后来修复了。

票数 0
EN

Stack Overflow用户

发布于 2011-01-29 00:05:33

根据您的描述,在您的示例中,"after“运算符和时间窗口之间可能存在不需要的交互。

在你的第二个规则中,你可以尝试使用滑动窗口并参数化"after“操作符,这样就可以达到你想要的效果。示例:

代码语言:javascript
复制
 rule "Prune Previous Successful Backups"
    @ruleId(2)
    when
        $prevBackup  : Backup($id : clientId,  state == BackupStateEnum.FINISHED) from entry-point "Backup Stream"
        $newerBackup : Backup(clientId == $id, state == BackupStateEnum.FINISHED, this after[0,3d] $prevBackup) from entry-point "Backup Stream"
    then
        drools.retract($prevBackup);
    end

在任何情况下,您都可以为Drools团队打开一个JIRA,以调查滑动窗口与您所描述的无参数"after“操作符之间的交互。别忘了提到你正在使用的Drools版本。

埃德森

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4561685

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档