SharePoint 2010: Como crear un “casi” Timer Job con cero desarrollo!

Como sugiere el título de este post, de nuevo hace poco me encontré con un requerimiento de los que necesita desarrollo en el servidor, pero en un entorno en el que no tenía este posibilidad. Por suerte, de nuevo el concepto de “cero desarrollo” me llevó a pensar en como podría implementar ese “casi” Timer Job utilizando por una parte la interfaz de usuario y por otra SharePoint Designer 2010 (SPD 2010). En concreto, en el escenario de negocio planteado, se tenía la necesidad de enviar de forma periódica y automatizada un correo electrónico a los usuarios de un sitio de SharePoint para que actualizasen la información de una cierta lista de SharePoint. Como os comentaba, lo primero en lo que pensé para poder satisfacer este requerimiento fue en crear código en el servidor (un Timer Job de SharePoint por ejemplo), pero enseguida tuve que descartarlo ya que en el entorno de SharePoint en cuestión no se puede desplegar código de servidor (por ponerlo claro, es un entorno similar al que tenemos con SharePoint Online). Por suerte, y como casi siempre Lengua fuera, pude encontrar una alternativa para “casi” conseguir un Timer Job sin desplegar ningún desarrollo en el servidor:

  • En primer lugar, en el sitio de SharePoint en cuestión creamos una lista de configuración que utilizaremos posteriormente para implementar un flujo de trabajo de SPD 2010. Por ejemplo, podemos añadirle campos como (depende un poco de cada escenario):
    • El nombre del job.
    • La periodicidad del job.
    • El valor del período del job.
    • La fecha de inicio/fin para el job.

image

  • En segundo lugar, creamos un flujo de trabajo en SPD 2010 vinculado a esta lista y lo implementamos de acuerdo a los valores de los campos que hemos añadido a la lista. Configuramos el flujo para que se inicie de forma automática cuando se cree o actualice un elemento en la lista.
  • Diseñamos el workflow para que simule la periodicidad que necesitamos usando las siguientes actividades: “Pause for duration”, “Wait for Field Change in Current Item” y “Pause until Date”.
image image
  • Como veis en el workflow anterior, la clave de que se ejecute una acción periódica (en este caso el envío de un e-mail recordatorio) pasa por utilizar la actividad “Pause for duration” que deja el workflow “dormido” en la BD de contenidos hasta que transcurre el período de tiempo configurado (90 días en este caso) para a continuación “despertarse” y continuar con la ejecución del workflow. En este caso, forzamos una actualización “Dummy” del elemento de la lista en el que se lanza la ejecución del workflow de forma que el proceso se repite.
  • Desplegamos el workflow.
  • Creamos un elemento en la lista para que el workflow se inicie de forma automática (este es el inconveniente principal de esta aproximación, ya que de inicio es necesaria la intervención humana).

Y hasta aquí llega este pequeño tip sobre como crear un “casi” Timer Job con cero desarrollo para SharePoint 2010.