Cuando se gestionan muchas tareas, a menudo cientos de ellas en una mediana o gran organización, es complicado estar al tanto de lo que está pasando en cada momento. Es especialmente relevante controlar las tareas cuyo vencimiento está cercano, para poder garantizar su cumplimiento.
En esta entrada hablaremos de la forma en la que podemos crear de forma automatizada una serie de recordatorios por email que avisarán a los usuarios de las tareas que han vencido o que están próximas a vencer.
Qué recordatorios podemos crear en Redmine
Redmine nos permite crear recordatorios de tareas que han vencido o que van a vencer en un determinado número de días. Los parámetros con los que podremos jugar son los siguientes:
- días: el recordatorio se lanzará un número de días X antes de que venza la tarea
- tipos de tareas: podremos programar recordatorios para todos los tipos de tareas o sólo para determinados tipos
- proyectos: recordatorios para tareas de todos los proyectos o sólo de los indicados
- usuarios: podremos enviar recordatorios a todos los usuarios o sólo a determinados usuarios
- versión: nombre de la versión a la que estén asignadas las tareas
Cómo crear recordatorios en Redmine
Cómo ya hemos dicho, no disponemos de un área en el panel de administración de Redmine donde podamos configurar estas alertas. Tendremos que acceder al servidor donde esté alojado Redmine para incluir una pequeña programación. No es difícil, pero hay que estar familiarizado con la línea de comandos de Linux. A continuación os explico paso a paso cómo crear los recordatorios:
Crear un fichero reminders.sh
Lo primero que tenemos que hacer es crear un fichero al que posteriormente invocaremos para que lance una tarea en el servidor que genere los recordatorios.
Para crear el fichero puedes abrir cualquier editor de texto como Notepad o Sublime Text 3. Incluye en dicho editor el siguiente código:
#!/bin/bash
cd /opt/bitnami/apps/redmine/htdocs
sudo bundle exec rake redmine:send_reminders days=7 users="1" RAILS_ENV="production"
Guárdalo y nómbralo como “reminders.sh”, por ejemplo.
Puede que tengas que realizar (o quieras realizar) los siguientes cambios en el código anterior:
- tendrás que adaptar la ruta a la que debe llamar el comando bundle exec a la ruta en la que realmente está ubicada tu aplicación de Redmine (esto es, cambiar /opt/bitnami/apps/redmine/htdocs, por tu ruta), ya que muy probablemente no será la misma que indico yo aquí,
- en el comando bundle exec es donde podrás incluir los diferentes parámetros que puedes modificar. Por ejemplo: si quieres generar recordatorios para
- las tareas de tipo “Soporte” (id=1) *
- del proyecto “Atención al cliente” (id=atencion-cliente)
- para el usuarios José García (id=3) *
- que se lancen 4 días antes del vencimiento
* recuerda que para ver el id de un tipo de tarea o de un usuario, debes ir al panel de administración > listado de usuarios (o tipos de tareas) y al pasar el cursor por el nombre del tipo de tarea o del usuario, verás en el marco inferior del navegador una URL de este tipo: https://miredmine.com/users/3/edit. Ese “3” es el id de usuario que debes indicar en el comando.
Entonces el código que tendrás que incluir en el fichero reminders.sh será éste:
#!/bin/bash
cd /opt/bitnami/apps/redmine/htdocs
sudo bundle exec rake redmine:send_reminders days=4 trackers="1" users="3" projects="atencion-cliente" RAILS_ENV="production"
Subir el fichero al servidor
Conéctate por SSH al servidor y guarda el fichero en una carpeta que esté fuera de la carpeta raíz de Redmine, por ejemplo “/home/bitnami/. De esa forma, si actualizas Redmine, este fichero no se perderá y seguirá realizando su labor.
Lanzar el comando manualmente
Bien, en principio, el fichero reminders.sh lo hemos creado para luego poder invocarlo periódicamente desde el cron job (tarea programada en el servidor) que describo más abajo. Pero realmente el comando del recordatorio se puede lanzar en cualquier momento en el servidor. Puedes probarlo así:
- ubícate en el directorio raíz de Redmine (debe ser el mismo que has indicado en el fichero reminders.sh)
- lanza el comando manualmente:
sudo bundle exec rake redmine:send_reminders days=4 trackers="1" users="3" projects="atencion-cliente" RAILS_ENV="production"
En ese momento saldrán los recordatorios a los usuarios, en este caso, sólo al usuario con id=3.
Sin embargo, lanzar el comando de forma manual no es práctico en el día a día. Para ello podemos programar una tarea automatizada (cron job), que lance de forma desasistida el comando por nosotros.
Crear un cron job (tarea programada)
Para crear un cron job en el servidor, volvemos a conectarnos al servidor, pero esta vez con un usuario “root”, si es que el usuario con el que nos hemos conectado antes al servidor no era “root”.
sudo crontab -e
A continuación, bajamos con el cursor hasta una zona donde podamos escribir e indicamos el siguiente código:
0 8 * * * /bin/bash /home/bitnami/reminders.sh > /home/bitnami/cron.txt 2>&1
El código anterior quiere decir que el script se lanzará todos los días a las 9 de la mañana (en España, el huso horario es UTC + 1). Se creará en la carpeta /home/bitnami un fichero llamado cron.txt donde se guardará el resultado del cron job.
Para ver la fecha y hora de tu servidor, puedes lanzar el comando “date”.
Si sólo quisieras que se el cron job corriera los días laborables, entonces podrías cambiar el cron job por uno como éste:
0 8 * * 1,2,3,4,5 /bin/bash /home/bitnami/reminders.sh > /home/bitnami/cron.txt 2>&1
Una vez hayas indicado este código en el crontab, pulsa Crtl + O para guardar y Ctrl + X para salir del crontab.
¡Ya lo tienes listo! Ahora todos los días, se generará el recordatorio, tal y como lo hayas programado.
(Nota: más información en la web de Redmine)
¿Te ha sido de utilidad esta entrada? Compártela en redes sociales. Muchas gracias.