Artigo
Larissa Prussak · Mar. 12, 2021 1min de leitura

Agende tarefas com uma linha usando iris-cron-task

Oi pessoal!

Às vezes, preciso agendar uma tarefa programaticamente.

E em 99% preciso que algum método de classe seja chamado periodicamente.

E eu quero que a programação seja iniciada por uma linha. Como um trabalho no crontab.

Decidi apresentar esse módulo com o módulo iris-cron-task.

Veja os detalhes abaixo!

Instale o módulo com:

USER> zpm "install iris-cron-task"

E então você poderá agendar tarefas com uma linha. 

Por exemplo, se eu quiser o seguinte comando:

set ^A($I(^A))=$H

ser iniciado a cada minuto, posso ligar para o seguinte:

zw ##class(dc.cron.task).Start("Task name","* * * * *","set ^A($I(^A))=$H",1,.taskid)

isso criará uma tarefa com taskid que será executada a cada minuto.

Quando você não precisar mais da tarefa, pode excluí-la com:

 

zw ##class(dc.cron.task).Kill(taskid)

Eu suportei apenas algumas configurações de cron, como a cada minuto:

* * * * *

Toda hora:

0 * * * *

E todos os dias em uma certa hora:

0 0 * * *

Você pode achar útil o site cronmaker para obter a expressão cron para qualquer programação de que precisar.

Obrigado a @Lorenzo Scalese por apresentar o suporte para uma expressão cron arbitrária.

PR são bem-vindos se você precisar de mais!

Espero que gostem, qualquer feedback é apreciado!

Verifique o aplicativo relacionado no InterSystems Open Exchange

10
1 0 0 21
Log in or sign up to continue