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>`
---