lunes, 30 de julio de 2012

Recordatorio de vencimiento de tareas

Hoy me han planteado una duda sencilla. Tenían una lista de tareas de SharePoint en un MOSS y querían que se enviará un correo X días antes del vencimiento de la tarea, recordando el vencimiento de la misma. Siendo X un número de días que se pudiera determinar por el usuario.

Entonces para ello he creado una nueva columna en la lista que fuese Días de preaviso de tipo número, donde el usuario fijará el número de días antes que quiere que le llegue la alerta. He marcado como obligatorias las columnas Días de preaviso y Fecha de vencimiento (columna por defecto en las listas de tareas de SharePoint).
Ahora vamos a crear nuestro flujo de trabajo, para que nos lleguen las alertas. Abrimos el sitio donde se encuente la lista, con SharePoint Designer y creamos un nuevo flujo de trabajo:



Daremos nombre al flujo, seleccionaremos la lista a la que queremos asociar el flujo y le diremos que se lance automáticamente en la creación de un elementos de la lista:


Tras darle a Siguiente, esto nos llevará a la ventana donde podremos configurar las condiciones y acciones de los primeros pasos. Comenzaremos fijando las condiciones, en este caso, queremos comparar el campo Fecha de vencimiento de nuestra lista Tareas con la fecha de Hoy.



Tras seleccionar la opción de Comparar campo Tareas, pondremos la condición, para asegurarnos que el flujo sólo se lanza si la Fecha de vencimiento no ha pasado.


Ahora crearemos una variable en el flujo, de tipo fecha, para almacenar la fecha en la que se debe enviar dicha notificación, a la cual he llamado Fecha envio:



Tras volverme loco buscando una acción que me permitiera restar a la Fecha de vencimiento, el número de Días de preaviso, para obtener el valor de la Fecha envio. Descubro, que no existe dicha posibilidad en SharePoint Designer, pero en cambio si que existe la opción de agregar. Con lo cual decido, que Días de preaviso, debe ser una variable negativa, para poder utilizar esta función. Y establezco mi acción:


Ahora agregaremos un nuevo paso al flujo, en el que nos aseguraremos de que la Fecha envio, no ha superado el día de Hoy y enviaremos el correo electrónico:


En primer paso comprobaremos la condición que hemos mencionado:


El siguiente paso será detener el flujo de trabajo hasta la Fecha envio, que será cuando se envie el correo electrónico:


Esto se debe a que el evento que lanza el flujo es la creación de la tarea (la opciones posibles son manual, creación del elemento y/o modificación del elemento) y no una fecha.
De esta manera lanzamos el flujo cuando se cree la tarea, y dejamos en espera el envio del correo.

El siguiente paso sería la creación del correo en si. Por defecto, en el cuerpo del correo, el texto sólo nos permitirá que sea texto plano, pero si etiquetamos el contenido dentro de etiquetas html, nos permitirá tener un cuerpo del correo enriquecido. Permitiéndonos poner enlaces a la propia tarea o todo lo que queramos, desde la inclusión de logos, cualquier maquetación que se nos ocurra...


Y con esto podremos dar por finalizado nuestro flujo de trabajo. Pero hay que tener en cuenta varias observaciones importantes:
  • ¿Se podía haber utilizado una columna calculada de la lista, para obtener la Fecha envio?
    • La respuesta es que no, ya que las columnas calculadas dan problemas a la hora de utilizarlas en los flujos de trabajo. Se puede ver información más detallada en el siguiente artículo.
  • ¿Esta manera de trabajar, presenta algún problema?
    • Podría perderse el envió del correo, si se reinicia el servidor, ya que es un proceso que esta en espera y que no se lanza ante una fecha concreta.
Actualización: Método más eficiente en la entrada:

2 comentarios:

  1. Hola amigo, no me queda claro lo de la variable negativa ¿Te podría contactar por correo para que me orientes? tengo horas intentando resolver esto :(

    ResponderEliminar
    Respuestas
    1. Lo de la variable negativa, es simplemente que la columna "Días de preaviso" de tipo número de la lista de "Tareas", guardes el valor -30 ó -15, dependiendo del número días antes que desees.

      Eliminar