2014-02-16 6 views
0

30 초 이내에 서로 다른 사실을 2 개의 다른 사실이 수신 될 때 통지해야하는 상황을 처리해야합니다. 그런 다음 시스템이 처리 된 후 작업 메모리에서 사실을 제거하기를 원합니다.Drools 특정 시간 내에 삽입 된 2 개의 다른 사실을 처리하는 규칙

예를 들어 시스템에서 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 

감사합니다.

답변

1

이 경우 로그인 <은 전자 메일임을 알고 있지만 항상 그렇지는 않습니다.

$login: Login($uid: uid) // a user logs in 
$check: UserAction(uid == $uid, action == UserAction.CHECK_EMAIL, this after[0s,30s] $login) 

< b를 필요로하지 않는 다른 연산자를 사용할 수 있습니다. b.

+0

다시 한번 ... 당신은 지배합니다! 감사! –