2012-03-14 5 views
1

이벤트 A 다음 이벤트 B. 이있는 경우 A의 5 분 후 이벤트 B가 발생하지 않으면 규칙이 트리거됩니다.Drools Fusion으로 지연된 이벤트를 처리하는 방법

when 
    time1:Event() from entry-point xx 
    not (Event(this after[ 0,5m ] time1) from entry-point xx) 
then 
... 
end 

실시간으로 정상적으로 작동하지만 실제 상황에서는 지연되는 이벤트가 있습니다. 인터페이스에서.

예 : 이벤트는 시간 : 1시 (MM : SS)하지만 규칙 위 02:00 접수 07:00에 트리거하지만 비즈니스 로직이 6시

에서 트리거 될 필요

이런 종류의 요구 사항을 어떻게 처리합니까?

답변

1

다른 상황이 있기 때문에 문제에 대한 답은 하나도 없습니다. 여기에 제시 한 유스 케이스는 쉽게 고정되지만 단순히 외부 스탬프 스탬프를 사용합니다. 이벤트에 소스에서 발생한 타임 스탬프가 포함 된 속성 (예 : datetime)이 포함되어 있다고 가정하면 이벤트의 타임 스탬프로 사용하도록 엔진에 알릴 수 있습니다. 예컨대 :이 경우

declare Event 
    @role(event) 
    @timestamp(datetime) 
end 

, 다음 엔진은 이벤트 타임 스탬프 1시를 사용하여 규칙합니다 Event1은 02:00 도착하더라도 (다른 이벤트가 일어나지 가정) 06:00 발사됩니다.

+0

나는 믿고 (시도했지만) 작동하지 않는다. 이 작업에 대한 힌트를 찾을 수 없습니다. 설명서에는 이벤트와 같은 것이 불변하며 '과거를 바꿀 수 없습니다'라고 쓰여 있습니다. – javadude