Generación de Alertas Automáticas con Sharepoint Designer 2007

Como están geeks? Este post está directamente relacionado con el primero referente a columnas calculadas para obtención de duraciones. Para este escenario, se requiere establecer un mecanismo de alertas automáticas en base a la Fecha de Inicio y Fecha de Fin establecidos en una lista, de tal manera que al 50%, 75% y 100% de la obra se envíen correos a roles establecidos dentro del proceso; el requerimiento involucra también la posibilidad de modificar la fecha de fin del proyecto, lo que debería reactualizar las alertas mencionadas.


Descripción técnica de la solución:
La ejecución de una acción definida en los workflows de caja o diseñados con Sharepoint Designer depende de que se realice un cambio sobre el elemento de contenido (creación, eliminación o modificación de un elemento de lista o biblioteca documental), generando una reacción inmediata producto de la detección de dicho cambio; pero en muchas ocasiones se requiere que las acciones definidas en un Workflow se disparen automáticamente en base a un tiempo o parámetro pre-definido, sin necesidad de realizar una acción anterior inmediata por parte del usuario.



Si bien es posible recurrir al desarrollo para generar workflows de tipo maquina-estado (nombre como se le conoce a estos tipo de workflows), es importante tener bien claro que siempre que se pueda evitar el desarrollo, hay que hacerlo (esto por el mantenimiento y versatilidad que el flujo tendrá para el usuario final).


Sharepoint Designer permite generar un mecanismo de Alertas Automáticas, que respondan a una Fecha en especifico, y sin tener que realizar una acción anterior inmediata; para esto dispone de una Acción de nombre Detener hasta, en la cual se puede definir en qué fecha y hora en especifico las acciones que se encuentren debajo de la mencionada se ejecutaran.

En este escenario, la lógica que se estableció fue la siguiente:
1. Se asocia un Workflow a la lista que contiene los cálculos de Fecha de Vencimiento al 50%,  75% y 100% del Proyecto; este Workflow generara en una lista separada (Tareas) 3 elementos que definirán las alertas automáticas requeridas y obtendrán la información de su duración de la lista de columnas calculadas:
a. Alerta Obra al 50%
b. Alerta Obra al 75%
c. Alerta Obra al 100%


2. Se asocia un Workflow a la lista Tareas con la acción Detener hasta, en donde se define la Fecha de Vencimiento como la Fecha establecida para cada uno de los elementos; esto provocara que cualquier acción que se incluya debajo de la acción Detener hasta se ejecutara solo después de la fecha y hora establecida.


Sin embargo, la problemática definida menciona que de existir un cambio en la lista Duración Total de la Obra, las alertas deben reconfigurarse automáticamente; es por esto que el Workflow final asociado a la lista de Duración Total de la Obra se define según la grafica siguiente:



 Flujo asociado a la lista de Duración Total de la Obra


Como se puede apreciar, se definen primero 3 acciones que eliminan los elementos definidos en la lista de Tareas (Alerta Obra al 50%, Alerta Obra al 75% y Alerta Obra al 100%), y acto seguido, estos 3 elementos se vuelven a generar. Esto es requerido puesto que los 3 elementos iniciales pueden tener ya un flujo “en cola” asociado al momento de definir por primera vez la Fecha de Fin de la Obra, por lo que al crearlos de nuevo generamos una solicitud diferente de acciones a ejecutar (con las nuevas fechas calculadas asociadas a los elementos correspondientes).


Al momento de generar nuevamente el elemento, se le incluye la siguiente información:
 Titulo: nombre del elemento que define la alerta
• Fecha de Vencimiento: al cual se le pasa la fecha de vencimiento calculada (para el 50%, 75% o 100%)
• Roles definidos para el envío de alertas: el elemento de alerta definido en la lista de Tareas contendrá además los correos de los roles a quienes se deberá notificar una vez lanzada la misma.


Por otro lado, el Workflow asociado a la lista de Tareas se activara automáticamente al momento de detectar un cambio (que en este caso, es la eliminación e inserción de nuevos elementos, por lo que finalmente se dispararan en paralelo 3 flujos (uno por cada elemento que se genera). En la grafica siguiente pueden apreciar el diseño final:



Flujo asociado a la lista de Tareas 


Como se puede apreciar, se define la Acción Detener hasta, y el parámetro Fecha de Vencimiento del elemento correspondiente dentro de la lista de Tareas; una vez se cumpla la fecha definida, se envían los correos de notificación a los roles establecidos.


Nota.- En la práctica, a pesar de eliminar un elemento dentro de una lista, si este tiene asociado un Workflow, este permanece “en cola” y no se elimina. Sin embargo, al ejecutarse, no dispone de referencia alguna a las columnas del elemento de lista correspondiente. En el escenario descrito, este comportamiento permite que,  a pesar de que los flujos de elementos eliminados permanezcan vivos, no se envíen correos anteriores de darse un cambio en las fechas; esto pues los correos de notificación son extraídos del mismo elemento, y al no existir, no encuentra dicha referencia, por lo cual el correo no puede ser enviado, y solo son enviadas las notificaciones de los últimos elementos creados.


Éste procedimiento me ayudó a generar alertas en periodos distantes; no recomiendo que lo usen si se trata de alertas con tiempos muy cercanos (horas por ejemplo), pues Sharepoint no es exacto al momento de enviarlas. Oh Yeah! 

Deja un comentario

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