FlinkCEP:我可以引用一个较早的事件来定义一个后续的匹配吗?

时间:2019-03-23 00:09:55

标签: scala flink-cep

这是一个简单的示例:

val pattern = 
   Pattern.begin[Event]("start").where(_.getId == 42).
   next("middle").subtype(classOf[SubEvent]).where(x => x.getVolume == **first event matched**.getVolume) ...

基本上,第二个事件(“中间”)需要访问第一个事件的状态(“开始”)。是否可以在FlinkCEP中执行此操作而无需外部状态?

1 个答案:

答案 0 :(得分:1)

好的。您可以借助Context获取特定模式的事件。

new IterativeCondition<Event>() {
            private static final long serialVersionUID = 8061969839441121955L;

            @Override
            public boolean filter(Event value, IterativeCondition.Context<Event> ctx) throws Exception {
                double sum = 0.0;
                for (Event e : ctx.getEventsForPattern("middle")) {
                    sum += e.getPrice();
                }
                return sum > 5.0;
            }
        }