JTaskPlanner


O projeto JTaskPlanner é uma biblioteca Java destinada ao agendamento e execução de tarefas baseadas em gatilhos temporais. Ele permite a configuração de tarefas periódicas utilizando expressões cron e outros métodos de temporização. Este guia fornecerá instruções detalhadas sobre como utilizar as classes principais do projeto para planejar e executar tarefas.


Exemplos

Abaixo está um exemplo de código que demonstra como usar o framework para criar e gerenciar tarefas com triggers
public static void main(String[] args) throws InterruptedException {
    Trigger trigger = TriggerBuilder.newTrigger()
            .rename("Nova tarefa")
            .when(
                TimerBuilder.newTimer()
                .interval(1000)
                .repeat(10)
            );
    
    Task task = TaskBuilder.newTask()
        .rename("Tarefa 10 vezes a cada 1000 ms")
        .setTask(new TarefaTeste());
    
    PlanBuilder.newPlanner()
        .setOutput("./")
        .planTask(trigger, task)
        .start();
    
    
    PlanBuilder.keepRunning();
}
Abaixo está um exemplo de código que demonstra como usar o framework para criar e gerenciar tarefas com crons
public static void main(String[] args) throws InterruptedException {
    Task task = TaskBuilder.newTask()
        .rename("Tarefa de teste 18h mes 8")
        .setTask(new TarefaTeste());
    
    PlanBuilder.newPlanner()
        .setOutput("./")
        .cron("* 9 * * *", task)
        .start();
    
    PlanBuilder.keepRunning();
}

Introdução


Instalação



Adicionar ao seu projeto


  • Importe para o seu projeto Java;

  • Referencie as classes para usar.
import planner.PlanBuilder;
import trigger.Trigger;
import trigger.TriggerBuilder;
import task.Task;
import task.TaskBuilder;
import timer.TimerBuilder;

Criando a task


Cria uma task contendo um nome e uma tarefa a ser executada, essa tarefa vem a partir de uma classe com uma função execute.

Criar Tarefa

import task.TaskDetail;
public class TarefaTeste implements TaskDetail{
    @Override
    public void execute() {
        System.out.println("Teste script");
    }
}

Criar Task


Task task = TaskBuilder.newTask()
    .rename("Tarefa de teste")
    .setTask(new TarefaTeste());

Timer


Para gerenciar o tempo de execução é possível através da classe Timer ou então através do método cron, passado adiante
TimerBuilder.newTimer()
    .interval(1000) //tempo do intervalo em ms
    .repeat(10) //número de execuções
Para criar uma tarefa que executa infinitamente é possível passar o repeat vazio
TimerBuilder.newTimer()
    .interval(2000) //tempo do intervalo em ms
    .repeat() //caso vazio será para sempre
Para começar com a tarefa executanto é necessário passar o método start()
TimerBuilder.newTimer()
    .interval(2000) //tempo do intervalo em ms
    .repeat() //caso vazio será para sempre
    .start() //caso não tenha o timer esperara o intervalo definido para iniciar a tarefa

Trigger


É possível criar uma execução baseada em um timer utilizando o trigger, abaixo demonstro como criar um trigger
Trigger trigger = TriggerBuilder.newTrigger();
Para nomear o trigger basta chamar a função rename()
Trigger trigger = TriggerBuilder.newTrigger()
    .rename("Nova tarefa");
Para identificar em qual "tempo" a task deve ser executada basta chamar a função when()
Trigger trigger = TriggerBuilder.newTrigger()
    .rename("Nova tarefa")
    .when(
        TimerBuilder.newTimer()
        .interval(1000)
        .repeat(10)
    );

Planner


Para associar um trigger à uma tarefa é necessário utilizar a classe Planner
PlanBuilder.newPlanner();

setOutput()


É possível também associar onde será o output dos logs do sistema a partir da função setOutput()
PlanBuilder.newPlanner()
    .setOutput("./logs/");

planTask()


Para associar uma task à um trigger utilizamos a função planTask()
PlanBuilder.newPlanner()
    .setOutput("./")
    .planTask(trigger, task)

start()


Para iniciar a tarefa associada ao plano utilizamos a função start()
PlanBuilder.newPlanner()
    .setOutput("./")
    .planTask(trigger, task)
    .start();

cron()


Para iniciar a task, mas executa-lá numa cron é necessário chamar o método cron()
PlanBuilder.newPlanner()
    .setOutput("./")
    .cron("* 9 * * *", task)
    .start();
Este que segue a estrutura padrão abaixo:

* * * * * comando_a_ser_executado
- - - - -
| | | | |
| | | | | 
| | | | +----- dia da semana (0 - 7) (Domingo = 0 ou 7)
| | | +------- mês (1 - 12)
| | +--------- dia do mês (1 - 31)
| +----------- hora (0 - 23)
+------------- minuto (0 - 59)
                                

keepRunning()


Para que o código continue rodando através do programa é necessário chamar a função keepRunning() desta forma o programa continua a rodar independente do método principal ter finalizado
PlanBuilder.keepRunning();