1

事件 A然后是事件B。如果A 的 5 分钟后没有事件 B,则触发规则。

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

对于运行良好的实时事件,但在现实生活中,您会遇到延迟的事件,例如。从一个界面。

示例:事件 A 时间:01:00 (mm:ss) 但在 02:00 收到 上述规则将在 07:00 触发,但业务逻辑要求它在 06:00 触发

我该如何处理这种要求?

4

1 回答 1

1

这个问题没有单一的答案,因为有不同的情况。您在此处介绍的用例很容易修复,但只需使用外部标记的时间戳即可。假设您的事件包含一个属性(例如日期时间),其中包含在源发生时的时间戳,您可以告诉引擎将其用作事件的时间戳。例如:

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

在这种情况下,引擎将使用 01:00 作为事件时间戳,并且规则将在 06:00 触发(假设没有其他事件发生),即使 event1 在 02:00 到达。

于 2012-03-14T14:02:52.627 回答