Tutorial: Crear y depurar una solución de flujo de trabajo de SharePoint
En este tutorial se muestra cómo crear una plantilla de flujo de trabajo secuencial básica. El flujo de trabajo comprueba una propiedad de una biblioteca de documentos compartidos para determinar si se ha revisado un documento. Si se ha revisado el documento, el flujo de trabajo finaliza.
En este tutorial se muestran las tareas siguientes:
Crear un proyecto de flujo de trabajo secuencial de definición de lista de SharePoint en Visual Studio.
Crear actividades de flujo de trabajo.
Controlar eventos de actividad de flujo de trabajo.
Nota
Aunque en este tutorial se utiliza un proyecto de flujo de trabajo secuencial, el proceso es idéntico para un proyecto de flujo de trabajo de máquina de estados.
También es posible que su equipo muestre nombres o ubicaciones diferentes para algunos de los elementos de la interfaz de usuario de Visual Studio en las siguientes instrucciones. La edición de Visual Studio que tenga y la configuración que esté utilizando determinan estos elementos. Para obtener más información, vea Trabajar con valores de configuración.
Requisitos previos
Necesita los componentes siguientes para completar este tutorial:
Ediciones compatibles de Microsoft Windows y SharePoint. Para obtener más información, vea Requisitos para desarrollar soluciones de SharePoint.
Visual Studio 2010.
Agregar propiedades a la biblioteca de documentos compartidos de SharePoint
Para hacer el seguimiento del estado de la revisión de documentos de la biblioteca Documentos compartidos, crearemos tres nuevas propiedades para documentos compartidos en nuestro sitio de SharePoint: Status, Assignee y Review Comments. Definimos estas propiedades en la biblioteca Documentos compartidos.
Para agregar propiedades a la biblioteca de documentos compartidos de SharePoint
Abra un sitio de SharePoint, como http://<nombre sistema>/SitePages/Home.aspx, en un explorador web.
Haga clic en Documentos compartidos en la barra de inicio rápido.
Haga clic en Biblioteca en la cinta de opciones Herramientas de biblioteca y, a continuación, haga clic en el botón Crear columna en la cinta de opciones para crear una nueva columna.
Asigne a la columna el nombre Document Status, establezca su tipo en Opción (menú del que elegir), especifique las tres opciones siguientes y, a continuación, haga clic en Aceptar:
Revisión necesaria
Revisión completada
Cambios solicitados
Cree dos columnas más y asígneles los nombres Assignee y Review Comments. Establezca el tipo de la columna Assignee como una línea de texto única y el tipo de la columna Review Comments como varias líneas de texto.
Permitir que los documentos se editen sin requerir la desprotección
Es más fácil probar la plantilla de flujo de trabajo si puede editar los documentos sin tener que desprotegerlos. En el procedimiento siguiente, se configura el sitio de SharePoint para habilitar esa posibilidad.
Para permitir que los documentos se editen sin desprotegerlos
Haga clic en Documentos compartidos en la barra de inicio rápido.
Haga clic en Biblioteca en la cinta de opciones Herramientas de biblioteca y, a continuación, haga clic en el botón Configuración de biblioteca para mostrar la página Configuración de la biblioteca de documentos.
En la sección Configuración general, haga clic en Configuración de versiones para mostrar la página Configuración de versiones.
Compruebe que el valor de Solicitar que los documentos estén desprotegidos para poder modificarlos sea No. Si no es así, cámbielo a No y, a continuación, haga clic en Aceptar.
Cierre el explorador.
Crear un proyecto de flujo de trabajo secuencial de SharePoint
Un flujo de trabajo secuencial es una sucesión de pasos que se ejecutan en orden hasta que finaliza la última actividad. En este procedimiento, creamos un flujo de trabajo secuencial que se aplicará a nuestra lista Documentos compartidos. El asistente de flujo de trabajo permite asociar el flujo de trabajo con la definición de sitio o la definición de lista, y le permite determinar cuando se iniciará el flujo de trabajo.
Para crear un proyecto de flujo de trabajo secuencial de SharePoint
Inicie Visual Studio y abra el cuadro de diálogo Nuevo proyecto; para ello, elija Nuevo en el menú Archivo y, a continuación, haga clic en Nuevo proyecto.
Expanda el nodo SharePoint bajo Visual C# o bajo Visual Basic y, a continuación, haga clic en 2010.
En el recuadro Plantillas, seleccione Flujo de trabajo secuencial.
En el cuadro Nombre, escriba MySharePointWorkflow y, a continuación, haga clic en Aceptar.
Aparece el Asistente para la personalización de SharePoint.
En la página Especifique el sitio y el nivel de seguridad de la depuración, haga clic en Siguiente para aceptar el sitio y nivel de confianza predeterminados.
Este paso también establece el nivel de confianza para la solución como una solución de granja de servidores, la única opción disponible para los proyectos de flujo de trabajo. Para obtener más información, vea Consideraciones sobre las soluciones en espacio aislado.
En la página Especifique el nombre del flujo de trabajo de depuración, acepte el nombre predeterminado (MySharePointWorkflow - Workflow1). Mantenga el valor de tipo de plantilla de flujo de trabajo predeterminado, List Workflow, y, a continuación, haga clic en Siguiente.
En la página ¿Desea que Visual Studio asocie automáticamente el flujo de trabajo en una sesión de depuración?, haga clic en Siguiente para aceptar toda la configuración predeterminada.
Este paso asocia automáticamente el flujo de trabajo a la biblioteca Documentos compartidos.
En la página Especifique las condiciones de inicio del flujo de trabajo, deje seleccionadas las opciones predeterminadas en la sección ¿Cómo desea que se inicie el flujo de trabajo? y haga clic en Finalizar.
Esta página permite especificar cuándo se inicia el flujo de trabajo. De forma predeterminada, el flujo de trabajo se inicia cuando un usuario lo inicia manualmente en SharePoint o cuando se crea un elemento con el que está asociado el flujo de trabajo.
Crear actividades de flujo de trabajo
Los flujos de trabajo contienen una o más actividades que representan las acciones que se van a llevar a cabo. Utilice el diseñador de flujo de trabajo para organizar las actividades de un flujo de trabajo. En este procedimiento, agregaremos dos actividades al flujo de trabajo: HandleExternalEventActivity y OnWorkFlowItemChanged. Estas actividades supervisan el estado de la revisión de documentos en la lista Documentos compartidos
Para crear actividades de flujo de trabajo
El flujo de trabajo se debería mostrar en el diseñador de flujo de trabajo. Si no es así, haga doble clic en Workflow1.cs o Workflow1.vb en el Explorador de soluciones para abrirlo.
En el diseñador, haga clic en la actividad OnWorkflowActivated1 para seleccionarla.
En la ventana Propiedades, escriba onWorkflowActivated junto a la propiedad Invoked y, a continuación, presione Entrar.
El Editor de código se abre y un método de control de eventos denominado onWorkflowActivated se agrega al archivo de código de Workflow1.
Vuelva al diseñador de flujo de trabajo, abra el cuadro de herramientas y, a continuación, expanda el nodo Windows Workflow v3.0.
Arrastre una actividad While desde el nodo Windows Workflow v3.0 del Cuadro de herramientas y conéctela a la línea bajo la actividad onWorkflowActivated1.
Haga clic en la actividad WhileActivity1 para seleccionarla.
En la ventana Propiedades, establezca Condition en Code Condition.
Expanda la propiedad Condition y escriba isWorkflowPending junto a la propiedad Condition secundaria; a continuación, presione Entrar.
Se abre el Editor de código y se agrega el método isWorkflowPending al archivo de código de Workflow1.
Vuelva al diseñador de flujo de trabajo, abra el cuadro de herramientas y, a continuación, expanda el nodo Flujo de trabajo de SharePoint.
Desde el nodo Flujo de trabajo de SharePoint del Cuadro de herramientas, arrastre una actividad OnWorkflowItemChanged dentro de la actividad whileActivity1.
Haga clic en la actividad onWorkflowItemChanged1 para seleccionarla.
En la ventana Propiedades, establezca las propiedades tal y como se indica en la tabla siguiente.
Propiedad
Valor
CorrelationToken
workflowToken
Invoked
onWorkflowItemChanged
Controlar eventos de actividad
Finalmente, compruebe el estado del documento en cada actividad. Si el documento se ha revisado, el flujo de trabajo termina.
Para controlar eventos de actividad
En Workflow1.cs o Workflow1.vb, agregue el campo siguiente a la parte superior de la clase Workflow1. Utilizará este campo en una actividad para determinar si el flujo de trabajo ha finalizado.
Dim workflowPending As Boolean = True
Boolean workflowPending = true;
Agregue el método siguiente a la clase Workflow1. Este método comprueba el valor de la propiedad Document Status de la lista Documentos para determinar si el documento se ha revisado. Si la propiedad Document Status está establecida en Review Complete, el método checkStatus establecerá el campo workflowPending en false para indicar que el flujo de trabajo está listo para finalizar.
Private Sub checkStatus() If CStr(workflowProperties.Item("Document Status")) = "Review Complete" Then workflowPending = False End If End Sub
private void checkStatus() { if ((string)workflowProperties.Item["Document Status"] == "Review Complete") workflowPending = false; }
Agregue el código siguiente a los métodos onWorkflowActivated y onWorkflowItemChanged para llamar al método checkStatus. Cuando el flujo de trabajo se inicia, el método onWorkflowActivated llama al método checkStatus para determinar si ya se ha revisado el documento. Si no se ha revisado, el flujo de trabajo continúa. Cuando se guarda el documento, el método onWorkflowItemChanged llama de nuevo al método checkStatus para determinar si se ha revisado el documento. Mientras el campo workflowPending esté establecido en true, el flujo de trabajo continuará ejecutándose.
Private Sub onWorkflowActivated(ByVal sender As System.Object, ByVal e As System.Workflow.Activities.ExternalDataEventArgs) checkStatus() End Sub Private Sub onWorkflowItemChanged(ByVal sender As System.Object, ByVal e As System.Workflow.Activities.ExternalDataEventArgs) checkStatus() End Sub
private void onWorkflowActivated(object sender, ExternalDataEventArgs e) { // Check the status. checkStatus(); } private void onWorkflowItemChanged(object sender, ExternalDataEventArgs e) { // Check the status. checkStatus(); }
Agregue el código siguiente al método isWorkflowPending para comprobar el estado de la propiedad workflowPending. Cada vez que se guarda el documento, la actividad whileActivity1 llama al método isWorkflowPending. Este método examina la propiedad Result del objeto ConditionalEventArgs para determinar si la actividad WhileActivity1 debería continuar o finalizar. Si la propiedad se establece en true, la actividad continúa. De lo contrario, la actividad finaliza y el flujo de trabajo también finaliza.
Private Sub isWorkflowPending(ByVal sender As System.Object, ByVal e As System.Workflow.Activities.ConditionalEventArgs) e.Result = workflowPending End Sub
private void isWorkflowPending(object sender, ConditionalEventArgs e) { e.Result = workflowPending; }
Guarde el proyecto.
Probar la plantilla de flujo de trabajo de SharePoint
Al iniciar el depurador, Visual Studio implementa la plantilla de flujo de trabajo en el servidor de SharePoint y asocia la plantilla de flujo de trabajo con la lista Documentos compartidos. Para probar el flujo de trabajo, inicie una instancia de la plantilla de flujo de trabajo desde un documento de la lista Documentos compartidos.
Para probar la plantilla de flujo de trabajo de SharePoint
En Workflow1.cs o Workflow1.vb, establezca un punto de interrupción junto al método onWorkflowActivated.
Presione F5 para generar y ejecutar la solución.
Aparecerá el sitio de SharePoint.
En el panel de navegación de SharePoint, haga clic en Documentos compartidos.
En la página Documentos compartidos, haga clic en Documentos en la pestaña Herramientas de biblioteca y, a continuación, haga clic en el botón Cargar documento para cargar un documento.
En el cuadro de diálogo Cargar documento, haga clic en el botón Examinar, seleccione cualquier archivo de documento, haga clic en Abrir y, a continuación, en Aceptar.
Esto carga el documento seleccionado en la lista Documentos compartidos e inicia el flujo de trabajo.
En Visual Studio, compruebe que el depurador se detiene en el punto de interrupción a continuación del método onWorkflowActivated.
Presione F5 para continuar la ejecución.
Puede cambiar la configuración del documento aquí, pero por ahora deje los valores predeterminados haciendo clic en Guardar.
Esto le devolverá a la página Documentos compartidos del sitio web predeterminado de SharePoint.
En la página Documentos compartidos, compruebe que el valor bajo la columna MySharePointWorkflow está establecido en En curso. Esto indica que el flujo de trabajo está en curso y que el documento está esperando la revisión.
En la página Documentos compartidos, apunte al documento, haga clic en la flecha abajo y, a continuación, haga clic en Editar propiedades.
Establezca Document Status en Revisión completada y, a continuación, haga clic en Guardar.
Esto le devolverá a la página Documentos compartidos del sitio web predeterminado de SharePoint.
En la página Documentos compartidos, compruebe que el valor bajo la columna MySharePointWorkflow está establecido en Revisión completada. Esto indica que el flujo de trabajo ha finalizado y que el documento se ha revisado.
Pasos siguientes
Puede aprender más acerca de la creación de plantillas de flujo de trabajo en estos temas:
Para obtener más información sobre las actividades de flujo de trabajo de SharePoint, vea Workflow Activities for SharePoint Foundation.
Para obtener más información sobre las actividades de Windows Workflow Foundation, vea System.Workflow.Activities (Espacio de nombres).
Vea también
Otros recursos
Crear soluciones de flujo de trabajo de SharePoint
Plantillas de proyecto y de elementos de proyecto de SharePoint