@Override public TriggerResult onElement(Object element, long timestamp, TimeWindow window, TriggerContext ctx) throws Exception { ctx.registerEventTimeTimer(window.maxTimestamp()); // register system timer only for the first time OperatorState<Boolean> firstTimerSet = ctx.getKeyValueState("firstTimerSet", Boolean.class, false); if (!firstTimerSet.value()) { ctx.registerProcessingTimeTimer(System.currentTimeMillis() + 1000L); firstTimerSet.update(true); } return TriggerResult.CONTINUE; }