> # Creación de Flujos de Trabajo

> El Modelo de Objetos de SharePoint y del WorkFlow Foundation proveen todas las clases, métodos y propiedades necesarias para programar Flujos de Trabajo y hacerlos interactuar con SharePoint 2007. Flujos pueden ser iniciados, detenidos y su estado investigado por medio del Modelo de Objetos, así como inicializado con los parámetros que SharePoint pone a su disposición. Trabajos mas avanzados, como control de su estado y modificación del Flujo en tiempo de ejecución también son posibles con el Modelo de Objetos.

> Microsoft Visual Studio 2005 es la herramienta por excelencia para crear Flujos de Trabajo. Después de instalar las adiciones para el WorkFlow Foundation, Visual Studio contendrá plantillas adicionales para la creación de Librerías de Flujos de Trabajo, Librerías de Actividades y aplicaciones de consola para Flujos de Trabajo Secuenciales y de Estado de Maquina; igualmente, una Librería es instalada en el Cuadro de Herramientas con toda una serie de Actividades pre-programadas.

> ### Figura 1: Visual Studio 2005 con un Flujo de Trabajo en el diseñador gráfico

> Nota: Las Adiciones para Visual Studio 2005 son proveídas por Microsoft junto con el WorkFlow Foundation, en el paquete de distribución del DotNet Framework 3.0. Antes de poder diseñar un Flujo de Trabajo es necesario instalarlas en cualquier edición de Visual Studio (excepto la versión Express).

> Un Flujo de Trabajo es creado seleccionando Actividades desde el Cuadro de Herramientas y llevándolas al diseñador gráfico, en donde se pueden interconectar. De la misma manera que con cualquier otra aplicación creada con Visual Studio, las Actividades tienen código asociado, de tal forma que haciendo un doble clic en ellas, la pagina con el código es abierta en el evento correspondiente. Como lenguaje de programación se puede utilizar cualquier lenguaje por defecto (CSharp o Visual Basic). El código y el diseñador visual están conectados permanentemente, de tal forma que cualquier cambio realizado en uno de ellos es visible de inmediato en el otro.

> La definición del Flujo de Trabajo es guardado en un archivo XOML, un archivo XML con una definición especifica, que puede ser editada con cualquier editor de texto ASCII si es necesario. Todas las posibilidades de desarrollo normales de Visual Studio están presentes para trabajar con Flujos de Trabajo, como son Smart Tags, IntelliSence y complementación de código. Soporte completo para depuración, puntos de interrupción y demás opciones necesarias para agregar el Flujo a un proceso están también presentes.

> Creación de un Flujo de Trabajo típico comienza por seleccionar las Actividades necesarias y colocarlas en el orden de trabajo correspondiente. Luego, el primer paso en el código (después de crear las referencias y variables que sean necesarias), es crear un identificador único para el Flujo, y crear un objeto que contenga las propiedades de inicialización que SharePoint le proporcione:

>             public Guid workflowId = default(System.Guid);
>             public SPWorkflowActivationProperties miWfPropiedades = new SPWorkflowActivationProperties();

> Por medio de una Actividad del tipo "onWorkflowActivated" se pueden crear variables globales que contengan toda la información de inicialización

>             private void onWorkflowActivated1_Invoked(object sender, ExternalDataEventArgs e)
>             {
>                 SPSite miSitio = new SPSite(miWfPropiedades.SiteId);
>                 SPWeb miWeb = miSitio.OpenWeb(miWfPropiedades.WebId);
>                 // Código de inicialización necesario
>             }

> Y esta actividad debe ser configurada de tal forma que utilice el Identificar y el Objeto creados inicialmente.

> Luego es necesario crear el código que realice el trabajo indicado, definiendo los eventos de las Actividades y tomas de decisión que se hayan creado en el diseñador gráfico.

> Paginas aspx y/o InfoPath pueden ser creadas y utilizadas como medio de interacción con el Flujo de Trabajo, de la misma manera que se puede interactuar con sistemas externos (como el sistema Windows del servidor), o con SharePoint mismo, por medio de creación de tareas, cambio de elementos y propiedades, etc.

> La instalación de un Flujo de Trabajo y todos los archivos y compilados auxiliares se realiza por medio de una Característica. El ensamblado del Flujo mismo debe ser registrado en el Global Assembly Cache (GAC), lo que puede ser realizado por medio de la herramienta "gacutil" de Visual Studio.

> ## Video

> Dos videos muestran todo el proceso de creación, instalación y utilización de un Flujo de Trabajo:

> - Creación de un Flujo de Trabajo con Visual Studio 2005: diseñador gráfico, código y generación.
> Duración: 12:54 minutos
> - Creación de una Característica para instalar el Flujo, instalación y uso.
> Duración: 12:45 minutos