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.

Publicado por

Juan Carlos González

Juan Carlos es Ingeniero de Telecomunicaciones por la Universidad de Valladolid y Diplomado en Ciencias Empresariales por la Universidad Oberta de Catalunya (UOC). Cuenta con más de 12 años de experiencia en tecnologías y plataformas de Microsoft diversas (SQL Server, Visual Studio, .NET Framework, etc.), aunque su trabajo diario gira en torno a SharePoint & Office 365. Juan Carlos es MVP de Office Servers & Services desde 2015 (anteriormente fue reconocido por Microsoft como MVP de Office 365 y MVP de SharePoint Server desde 2008 hasta 2015), coordinador del grupo de usuarios .NET de Cantabria (Nuberos.Net, www.nuberos.es), co-fundador y coordinador del Grupo de Usuarios de SharePoint de España (SUGES, www.suges.es), así como co-director de la revista gratuita en castellano sobre SharePoint CompartiMOSS (www.compartimoss.com). Hasta la fecha, ha publicado 8 libros sobre SharePoint & Office 365 y varios artículos en castellano y en inglés sobre ambas plataformas.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *