Esper 终止分区上下文

Esper terminating partitioned context

我有一口气ThingEvent

create schema ThingEvent {
  thingID int,
  isLast  boolean
}

我想一起处理具有相同 thingID 的事物,所以我创建了一个上下文。

create context ThingContext
  partition by thingID from ThingEvent

但是,当我得到 isLast 设置为 true 的东西时,这意味着我们再也不会看到 ThingEvent 具有相同 thingID 的东西.但是上下文将永远挂起,导致资源泄漏。

我发现一个overlapping context可以终止

create context ThingContext
  initiated by distinct(thingID) ThingEvent(isLast <> true) as startEvent
  terminated by ThingEvent(thingID = startEvent.thingID, isLast = true);

但是我在使用的时候需要手动过滤事件

context ThingContext
  select *
  from ThingEvent(thingID=context.startEvent.thingID)
  output when terminated;

当我开始使用模式时,这变得太冗长了。有没有办法两全其美?

我认为键控上下文没有终止条款。

有一种终止任何上下文分区的编程方式,link to documentation

有一个预定义的表达式别名 "expression alias {}"。

而不是重复表达式

编辑:

此功能是在 7.0.0 版本中添加的 http://www.espertech.com/esper/esper-changehistory/