A SAMOA topology on Apache Flink
A Samoa-Flink Streaming Topology is DAG of ProcessingItems encapsulated within custom operators.
Streams are tagged and filtered in each operator's output so they can be routed to the right
operator respectively. Building a Flink topology from a Samoa task involves invoking all these
stream transformations and finally, marking and initiating loops in the graph. We have to do that
since Flink only allows explicit loops in the topology started with 'iterate()' and closed with
'closeWith()'. Thus, when we build a flink topology we have to do it incrementally from the
sources, mark loops and initialize them with explicit iterations.