Esper - 事件类型之间的多态性

时间:2015-02-03 10:51:21

标签: java esper epl

我正在尝试使用Esper。

我的问题是关于事件之间的多态性。

示例(伪代码):

我使用两个类GPSEvent和PositionEvent作为事件类型。他们可能看起来像:

class GPSEvent{
    double longitude
    double latitude
}

class PositionEvent extends GPSEvent{
    Date timeOfOccurence
}

如果我使用规则:

select * from GPSEvent.win:length_batch(5)

以下事件将被发送到引擎:GPSEvent g1 ,GPSEvent g2 ,GPSEvent g3 ,GPSEvent g4 ,PositionEvent p1

规则将触发

我的问题是如何在发送子类型事件时阻止触发

如果eventtype是没有任何子类型的超类型,如何触发?

是否有任何最佳做法,而不会增加规则的复杂性或使用"开销"在eventtype类中?


其他信息:

我想在检测到5个GPSEvents

之后将PositionEvent路由到订户的引擎中

1 个答案:

答案 0 :(得分:0)

我看到三种方式。你可以在类中添加一个标志(没有作为const的开销,例如" getType(){return" P"}",这提供了一个属性" type& #34)。 您可以制作EPL UDF进行自定义检查。您可以使用" instanceof / typeof"。