Github user dawidwys commented on a diff in the pull request: https://github.com/apache/flink/pull/6104#discussion_r192737030 --- Diff: docs/dev/libs/cep.md --- @@ -1524,7 +1524,48 @@ In `CEP` the order in which elements are processed matters. To guarantee that el To guarantee that elements across watermarks are processed in event-time order, Flink's CEP library assumes *correctness of the watermark*, and considers as *late* elements whose timestamp is smaller than that of the last -seen watermark. Late elements are not further processed. +seen watermark. Late elements are not further processed. Also, you can specify a sideOutput tag to collect the late elements come after the last seen watermark, you can use it like this. + +<div class="codetabs" markdown="1"> +<div data-lang="java" markdown="1"> + +{% highlight java %} +PatternStream<Event> patternStream = CEP.pattern(input, pattern); + +OutputTag<String> lateDataOutputTag = new OutputTag<String>("late-data""){}; + +SingleOutputStreamOperator<ComplexEvent> result = patternStream + .sideOutputLateData(lateDataOutputTag) + .select( + new PatternSelectFunction<Event, ComplexEvent>() {...} + ); + +DataStream<String> lateData = result.getSideOutput(lateDataOutputTag); + + +{% endhighlight %} + +</div> + +<div data-lang="scala" markdown="1"> + +{% highlight scala %} + +val patternStream: PatternStream[Event] = CEP.pattern(input, pattern) + +val lateDataOutputTag = OutputTag[String]("late-data") + +val result: SingleOutputStreamOperator[ComplexEvent] = patternStream + .sideOutputLateData(lateDataOutputTag) + .select( + {pattern: Map[String, Iterable[ComplexEvent]] => ComplexEvent() + }) + +val lateData: DataStream<String> = result.getSideOutput(lateDataOutputTag) + +{% endhighlight %} + +</div> --- End diff -- You missed closing `</div>`
---