如何使用Drools Fusion处理延迟事件

时间:2012-03-14 07:34:10

标签: events jboss drools complex-event-processing drools-fusion

活动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 

对于工作正常的实时事件,但在现实生活中,您会有延迟的事件,例如。来自界面。

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

我该如何处理这种要求?

1 个答案:

答案 0 :(得分:1)

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

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

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