Skip to content
Felipe Castanon de Oliveira edited this page Jan 26, 2015 · 6 revisions

Suri-Scheduler

O Suri-CDI-Scheduler é uma biblioteca que integra o Quartz ao CDI, facilitando a configuração das classes de jobs, sua manipulação e a auditoria de suas execuções. Por utilizar a ferramenta Quartz internamente, é possível administrar a execução desses jobs via banco de dados, mantendo a integridade de sua execução mesmo que o sistema esteja dentro de um cluster.

Para configurar um job em seu sistema basta fazer o seguinte:

import javax.inject.Inject;

import org.apache.deltaspike.scheduler.api.Scheduled;
import org.quartz.DisallowConcurrentExecution;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.slf4j.Logger;

import br.com.surittec.suriquartz.annotation.Audit;

@Audit // Indica que esse JOB deverá ter suas informações de execução auditadas
@DisallowConcurrentExecution // Bloqueia a execução concorrente do JOB (seja ela disparada manual ou automática)
@Scheduled(cronExpression = "0 28 7 21 10 ? 2015") // Cron do agendamento do JOB
public class DoStuffJob implements Job {
	
	@Inject
	private Logger logger;
	
	@Override
	public void execute(JobExecutionContext context) throws JobExecutionException {
		logger.info("Welcome Marty!");
	}

}

Suri-Quartz

Uma importante dependência dessa biblioteca é o Suri-Quartz, core da integração do quartz com o auditoria personalizada. Ele escuta as operações do quartz e, quando necessário, grava informações de runtime da tarefa.

Todas as tarefas que estiverem anotadas com @br.com.surittec.suriquartz.annotation.Audit deverão ter as seguintes informações sobre sua execução gravadas em banco:

- Grupo do JOB;
- Nome do JOB;
- Timestamp de início da execução;
- Timestamp de fim da execução.
Essa anotação acionará a extensão do quartz capaz de escutar e interceptar as chamadas às rotina e armazenará qual JOB foi invocado e as informações sobre sua duração. Em sua definição, pode ser passado o parâmetro onlyTemporaryTrigger para restringir a auditoria apenas às execuções feitas manualmente, fora do agendamento tradicional.

Clone this wiki locally