@Override
  public TriggerResult onElement(Object element, long timestamp, W window, TriggerContext ctx)
      throws Exception {

    OperatorState<Boolean> first = ctx.getKeyValueState("first", true);

    if (first.value()) {
      long start = timestamp - (timestamp % interval);
      long nextFireTimestamp = start + interval;

      ctx.registerEventTimeTimer(nextFireTimestamp);

      first.update(false);
      return TriggerResult.CONTINUE;
    }
    return TriggerResult.CONTINUE;
  }
 @Override
 public TriggerResult onEventTime(long time, W window, TriggerContext ctx) {
   ctx.registerEventTimeTimer(time + interval);
   return TriggerResult.FIRE;
 }