Drools规则用于处理在特定时间内插入的两个不同事实

Drools规则用于处理在特定时间内插入的两个不同事实,drools,complex-event-processing,drools-fusion,Drools,Complex Event Processing,Drools Fusion,我需要处理这样一种情况:当我的工作记忆在30秒内收到两个不同的事实时,我会收到通知。然后,我希望系统在处理这些事实之后,将它们从工作记忆中删除 例如,假设我希望在系统看到Bob登录时收到通知,然后他在30秒内检查他的电子邮件 我知道这听起来很陈腐,但是,这是一个概念验证用例,它用于非常高级的演示 我试过这个: rule "Bob Login Rule" dialect "java" when Login( username == "bob" ) over window:time(30s)

我需要处理这样一种情况:当我的工作记忆在30秒内收到两个不同的事实时,我会收到通知。然后,我希望系统在处理这些事实之后,将它们从工作记忆中删除

例如,假设我希望在系统看到Bob登录时收到通知,然后他在30秒内检查他的电子邮件

我知道这听起来很陈腐,但是,这是一个概念验证用例,它用于非常高级的演示

我试过这个:

rule "Bob Login Rule" dialect "java"
when
    Login( username == "bob" ) over window:time(30s);
        UserAction (action == UserAction.CHECK_EMAIL) over window:time(30s)
then
    System.out.println("Bob logged in and checked his email");
end

提前谢谢

在这种情况下,您知道登录<检查电子邮件,但情况可能并非总是如此

$login: Login( $uid: uid ) // a user logs in
$check: UserAction( uid == $uid, action == UserAction.CHECK_EMAIL, this after[0s,30s] $login)
可以使用不需要a