package org.calrissian.flowbox.example; import org.calrissian.flowbox.example.support.ExampleRunner; import org.calrissian.flowbox.example.support.FlowProvider; import org.calrissian.flowbox.model.Event; import org.calrissian.flowbox.model.Flow; import org.calrissian.flowbox.model.Policy; import org.calrissian.flowbox.model.builder.FlowBuilder; import org.calrissian.flowbox.support.Criteria; import org.calrissian.flowbox.support.Function; import java.util.Arrays; import java.util.List; import static java.util.Collections.singletonList; public class StreamBridgeExample implements FlowProvider { @Override public List<Flow> getFlows() { Flow flow = new FlowBuilder() .id("myFlowId") .flowDefs() .stream("stream1") .filter().criteria(new Criteria() { @Override public boolean matches(Event event) { return true; } }).end() .select().field("key3").end() .partition().field("key3").end() .stopGate().activate(Policy.TIME_DELTA_LT, 1000).evict(Policy.COUNT, 5).open(Policy.TIME, 5).end() .endStream() .endDefs() .createFlow(); Flow flow2 = new FlowBuilder() .id("myFlowId2") .flowDefs() .stream("stream1") .filter().criteria(new Criteria() { @Override public boolean matches(Event event) { return true; } }).end() .partition().field("key5").end() .stopGate().activate(Policy.TIME_DELTA_LT, 1000).evict(Policy.COUNT, 5).open(Policy.TIME, 5).end() .endStream(false, "stream2") // send ALL results to stream2 .stream("stream2") .filter().criteria(new Criteria() { @Override public boolean matches(Event event) { return true; } }).end() .select().field("key4").end() .partition().field("key4").end() .stopGate().activate(Policy.TIME_DELTA_LT, 1000).evict(Policy.COUNT, 5).open(Policy.TIME, 5).end() .each().function(new Function() { @Override public List<Event> execute(Event event) { return singletonList(event); } }).end() .endStream() .endDefs() .createFlow(); return Arrays.asList(new Flow[] { flow, flow2}); } public static void main(String args[]) { new ExampleRunner(new StreamBridgeExample()).run(); } }