package com.jay.monitor.data.server.job;

/**
 * 调度接口
 *
 * @author ： liukx
 * @time ： 2019/11/5 - 15:35
 */
public interface ScheduleJobService {

    public final int HOUR_TYPE = 1;
    public final int DAY_TYPE = 2;

    /**
     * 是否要执行跑批的前置条件。
     * 考虑 :
     * 1. 是否符合执行的条件 小时判断、天判断
     * 2. 数据做幂等性判断
     * 3. 还需要考虑的是如果是重跑的时候执行错过了你条件中的时间
     *
     * @return 是否执行任务
     */
    public boolean isDayInvoke();

    /**
     * 具体的任务，
     *
     * @return 是否需要重新跑
     */
    public void processDayJob() throws Exception;

    /**
     * 是否要执行跑批的前置条件。
     * 考虑 :
     * 1. 是否符合执行的条件 小时判断、天判断
     * 2. 数据做幂等性判断
     * 3. 还需要考虑的是如果是重跑的时候执行错过了你条件中的时间
     *
     * @return 是否执行任务
     */
    public boolean isHourInvoke();

    /**
     * 具体的任务，
     *
     * @return 是否需要重新跑
     */
    public void processHourJob() throws Exception;

}
