我正在尝试使用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路由到订户的引擎中答案 0 :(得分:0)
我看到三种方式。你可以在类中添加一个标志(没有作为const的开销,例如" getType(){return" P"}",这提供了一个属性" type& #34)。 您可以制作EPL UDF进行自定义检查。您可以使用" instanceof / typeof"。