En la parte 1 de esta serie expliqué el problema de hacer una aprobación de un workflow basado en SharePoint Server 2010, SharePoint Designer 2010 e InfoPath 2010. Ahora es tiempo de explicar la solución al escenario.
– Al finalizar la creación de un nuevo item dentro de la biblioteca de formularios, utilizando InfoPath, automáticamente se dispara un correo electrónico de notificación a los aprobadores para que revisen la información y procedan a “Aprobar” o “No Aprobar”.
– Este enlace adjunto al cuerpo del correo hace referencia a una página de webparts de SharePoint 2010 . Este enlace adjunto, además de la dirección URL de la página, debe contener al menos dos parámetros para poder actualizar un item de la biblioteca de formularios: ID del item, Estado de Aprobación, por ejemplo, 1 = Aprobado, 2 = No Aprobado.
– Esta página de webparts funcionará como una interfaz de comunicación para hacer el llamado al servicio web de actualización de items de una lista de SharePoint. Para lograr esto es necesario integrar código javascript dentro de un CEW. Este código debe ejecutar dos acciones:
– Leer los parámetros del URL enviado por correo.
– Invocar al web service y enviar los valores requeridos para que actualicen un item de la biblioteca de formularios de SharePoint.
– Una de las limitantes encontradas es que el servicio web no puede actualizar los valores de los campos de una biblioteca de formularios que fueron creados a partir de la plantilla de InfoPath. Siendo más específico, mi plantilla de formulario InfoPath posee un campo llamado “AprobacionCE”, el mismo que durante el proceso de publicación fue considerado para que se presente en la bilbioteca de formularios del sitio SharePoint.
– Este campo, durante el proceso de publicación, debió ser configurado para que pueda ser modificado externamente, es decir, sin necesidad de InfoPath.
– Debido a la limitante antes expuesta es necesario crear un campo de apoyo para poder colocar el estado de aprobación, Aprobado / No Aprobado, y luego por medio de un workflow de SPD hacer la actualización al campo respectivo del formulario de InfoPath.
En la siguiente parte analizaremos el código C# incluído en la plantilla del formulario de InfoPath 2010 para el envío del correo electrónico de notificación de aprobación.