All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jetlinks.rule.engine.api.scheduler.Scheduler Maven / Gradle / Ivy

The newest version!
package org.jetlinks.rule.engine.api.scheduler;

import org.jetlinks.rule.engine.api.task.Task;
import org.jetlinks.rule.engine.api.worker.Worker;
import reactor.core.Disposable;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;

/**
 * 任务调度器
 *
 * @author zhouhao
 * @since 1.0.4
 */
public interface Scheduler extends Disposable {

    /**
     * @return 调度器ID
     */
    String getId();

    /**
     * @return 全部工作器
     */
    Flux getWorkers();

    /**
     * 获取指定ID的工作器
     *
     * @param workerId ID
     * @return 工作器
     */
    Mono getWorker(String workerId);

    /**
     * 调度任务并返回执行此任务的执行器,此方法是幂等的,多次调度相同配置的信息,不会创建多个任务。
     *
     * @param job 任务配置
     * @return 返回执行此任务的执行器
     * @see Worker#createTask(String, ScheduleJob)
     */
    Flux schedule(ScheduleJob job);

    /**
     * 停止任务
     * @param instanceId 实例ID
     * @return void Mono
     */
    Mono shutdown(String instanceId);


    Mono shutdownTask(String taskId);

    /**
     * 根据规则ID获取全部调度中的任务
     *
     * @param instanceId 规则ID
     * @return 任务执行信息
     */
    Flux getSchedulingTask(String instanceId);

    Mono getTask(String taskId);

    /**
     * 获取全部调度中的任务
     * @return 任务执行信息
     */
    Flux getSchedulingTasks();

    /**
     * @return 调度中任务总数
     */
    Mono totalTask();

    /**
     * 当前调度器是否可以调度此任务
     *
     * @param job 任务信息
     * @return 是否可以调度
     */
    Mono canSchedule(ScheduleJob job);

    @Override
    default void dispose(){

    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy