Nota: Articulo de Juan Carlos González Martín publicado en el Blog del Centro de Innovacion en Integracion - CIIN. Para definir estos workflows, tenemos dos herramientas tan distintas como son Sharepoint Designer 2007 (SD 2007, Technical Refresh) y Visual Studio 2005 (con las extensiones de Windows Workflow Foundation y las correspondientes plantillas de definición de workflows para WSS, disponibles con el starter kit de la beta 2). En este post os mostraré como podemos crear el mismo workflow con ambas herramientas, y como la forma de definición, modelado y despliegue del mismo son diferentes, pero conducen al mismo resultado. El workflow que crearemos consistirá en enviar un e-mail al responsable de gestionar los eventos del calendario de nuestra organización cada vez que se cree un ítem en él. Empecemos. Creación del workflow con SD 2007 Tras abrir nuestro sitio WSSv3 con SD 2007, vamos al menú contextual de creación de workflows con lo que se abrirá un wizard para la definición del workflow. Le damos un nombre a la instancia de workflow, seleccionamos la lista de WSSv3 que nos interese (en este caso Calendar) y marcamos la opción de que nuestro workflow se inicie de modo automático. Lo siguiente que haremos es configurar que tiene qué hacer nuestro workflow, en este caso enviar un e-mail cada vez que se cree una nueva entrada en el caledario. Como no vamos a definir ninguna condición para el envío del e-mail, lo único que tenemos que hacer es definir una acción (actividad en VS) de envío de e-mail. Configuramos adecuadamente el e-mail a enviar cuando se cree el ítem en el calendario: destinatario del e-mail, subject, y el cuerpo del e-mail (en el ejemplo he añadido algunos campos del ítem utilizando la opción Añadir Campos de Búsqueda que nos ofrece SD 2007). Una vez configurado el workflow, probamos que funciona correctamente (botón Comprobar flujo de trabajo) y lo desplegamos contra nuestro sitio WSS (botón Finalizar), y ya tendemos vinculado el workflow con la lista Calendar de nuestro sitio. Creación del workflow con VS 2005 Para crear el workflow anterior en VS 2005 dentro de la sección de C# escogemos de tipo Windows Sharepoint Services, y seleccionamos la plantilla adecuada (Sharepoint Sequential Workflow Library en este caso, puesto que estamos modelando un workflow de tipo secuencial). Una vez creado el proyecto, abrimos el archivo workflow1.cs que nos permitirá modelar nuestro workflow de manera visual, así como acceder a la vista de código para definir su comportamiento. Al abrir este fichero, vemos que por defecto ya tenemos una actividad agregada, OnWorkflowActivated, que es la actividad de inicio del workflow. Lo siguiente que haremos será añadir la actividad de envío de e-mail sin más que seleccionarla en la toolbox y arrastrarla a la ubicación correcta en la superficie de diseño (debajo la actividad de inicio). La actividad de envío de e-mail la tendremos que configurar para que tenga el mismo CorrelationToken que la actividad de inicio y establecer de esta manera el canal de ejecución del workflow. Además, para esta actividad también configuraremos las propiedades Header y Body (bien en modo visual o en la vista de código) para posteriormente definir el e-mail a enviar. Una vez configurado el workflow en modo diseño, tenemos que definir su comportamiento en la vista de código (a través de los Handlers de cada actividad). Este sería el código de los handlers de las actividades del workflow: Lo siguiente que tenemos que hacer es compilar nuestro assembly, firmarlo (puesto que para poder desplegarlo en WSS es condición indispensable) y ya estamos listos para desplegarlo (lo haremos como una feature, que es la opción que nos da por defecto VS 2005) en el sitio de WSSv3, para ello tenemos que realizar los siguientes pasos: § Configurar el fichero de feature adecuadamente (tiene que referenciar al fichero de manifiesto del workflow). § Configurar adecuadamente el archivo de instalación de la feature para que registre el assembly en la caché del servidor de WSSv3, instale la feature y la active. Si todo ha ido bien, tendremos disponible nuestro workflow en el sitio de WSSv3. Para comprobarlo, vamos a asociar el workflow a la lista de tipo calendario (a través de List Settings -> Workflows Settings) de WSS. Una vez creada la instancia del workflow, veremos como en la lista Calendar tenemos dos workfows disponibles. Probando los workflows Para probar los workflows, basta con que creemos un nuevo elemento en el calendario y comprobemos que nos llegan dos e-mails avisándonos de que tenemos un nuevo evento en el mismo. Finalmente, para cerrar el post os pongo una comparativa de las implicaciones de modelar workflows con SD 2007 o VS 2005. Bueno, puesto esto ha sido todo. Espero que el post os resulte de utilidad. Comentario Trasteando un poco más con como acceder a las propiedades de un elemento de una lista de WSS, y con la ayuda de mi compañero Ángel Acha, he encontrado una forma menos enrevesada para acceder a las propiedades del item a partir de la propia estructura del objeto SPWorkflowActivationProperties. Este sería el código: |