Scheduler
O Scheduler é o serviço de agendamento de tarefas do BISFW. o Scheduler pode agendar tarefas do FWTask para serem executadas de forma única ou repetidamente.
Componentes do Scheduler
SchedulerController
A classe SchedulerController é a classe principal de controle, agendamento e execução das tarefas. Toda a manipulação das tarefas é realizada através dela.
SchedulerTask
SchedulerTask é a interface que representa a tarefa, suas propriedades e meta informações, não exatamente o código de execução. Normalmente a implementação dessa interface se assemelha à um POJO, ou um VO. Podendo inclusive extender diretamente BISVO para que possa ser persistida no banco de dados diretamente.
FWTask
FWTask é a interface padrão do BISFW para definição de uma tarefa. Mais detalhes na página da própria da interface. A implementação desta interface é o código da execução da tarefa. Note que o código da tarefa pode ficar separado dos atirbutos de definição da tarefa (SchedulerTask). Assim permitimos quando necessário que as informações possam da tarefa possam ser armazenadas em classes mais simples como os VOs, sem acompanhar o código da execução.
![]() |
|
![]() |
|
Funcionamento
Uma vez implementada a interface SchedulerTask, para colocar a tarefa no SchedullerControler basta passa-la pelo método .processTask(SchedulerTask task). Ao passar a tarefa o Scheduler já processará suas definições e se for o caso já executará a tarefa imediatamente (em caso de estar atrasada e a execução atrasada for permitida), ou ela será agendada para execução futura.
Caso a tarefa defina algum método de repetição, ao fim da execução da tarefa o próprio Scheduler se encarregará de reagendar a tarefa. Ou seja, só é preciso passar a tarefa para o SchedullerController uma única vez. Normalmente na inicialização (deploy) da aplicação.
Caso a tarefa não tenha definições de se repetir, casos de tarefas que são executadas uma única vez, o próprio Scheduler limpará os objetos da memória e descartará tudo para o GC.