Artículo
Ricardo Paiva · Ago 26 Lectura de 2 min

Cómo programar tareas con una sola línea usando iris-cron-task

¡Hola desarrolladores!

Algunas veces necesito planificar una tarea por medio de un programa.

Y en el 99% de los casos necesito que algún método de clase sea llamado periódicamente.

Y quiero que la tarea programada comience con una línea. Como un trabajo en crontab.

Decidí incorporar un módulo de este tipo con el módulo iris-cron-task.

Os comento los detalles a continuación.

Instala el módulo utilizando:

USER>zpm "install iris-cron-task"

Entonces podrás programar tareas con una sola línea. 

Por ejemplo, si quiero ejecutar el siguiente comando

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

para que se inicie cada minuto, puedo llamar al siguiente comando:

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

Esto creará una tarea con un taskid que se ejecutará cada minuto.

Cuando ya no necesites la tarea, puedes eliminarla con:

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

Hice que fuera compatible con algunas configuraciones de cron, como cada minuto:

* * * * *

cada hora:

0 * * * *

y cada día a una hora determinada:

0 0 * * *

Puedes encontrar útil la aplicación cronmaker, para obtener la expresión cron para usarla en cualquier horario que necesites.

Gracias a @Lorenzo Scalese por haber presentado el soporte para una expresión cron arbitraria. 

Espero que os guste.

¡Cualquier comentario es bienvenido!

00
2 0 0 29
Log in or sign up to continue