Compartir a través de


Crear un flujo de trabajo secuencial de SharePoint con un campo de aprobación de tareas personalizado

Resumen:  Obtenga información sobre cómo crear y probar un flujo de trabajo secuencial de SharePoint mediante programación.

Última modificación: lunes, 08 de junio de 2015

Hace referencia a: Business Connectivity Services | Open XML | SharePoint Designer 2010 | SharePoint Foundation 2010 | SharePoint Online | SharePoint Server 2010 | Visual Studio

En este artículo
Introducción a los flujos de trabajo secuenciales
Crear una nueva colección de sitios
Crear las columnas y los tipos de contenido
Crear el flujo de trabajo secuencial de SharePoint en Visual Studio
Probar el flujo de trabajo secuencial
Conclusión
Recursos adicionales

Se aplica a:  Microsoft SharePoint Server 2010 | Microsoft Visual Studio 2010

Proporcionado por:  Justin Joyce, LANtek Computer Services (en inglés)

Contenido

  • Introducción a los flujos de trabajo secuenciales

  • Crear una nueva colección de sitios

  • Crear las columnas y los tipos de contenido

  • Crear el flujo de trabajo secuencial de SharePoint en Visual Studio

  • Probar el flujo de trabajo secuencial

  • Conclusión

  • Recursos adicionales

Introducción a los flujos de trabajo secuenciales

Los flujos de trabajo secuenciales de Microsoft SharePoint Server 2010 desarrollados en Microsoft Visual Studio 2010 le permiten crear potentes herramientas para racionalizar los procesos de negocio y las aprobaciones de tareas. Un componente clave a la hora de diseñar un flujo de trabajo eficaz y eficiente es alinearlo lo máximo posible al proceso de negocio que va a aumentar, tanto en términos de función lógica como de interacción con la experiencia del usuario. Para ello, es fundamental usar validación de lenguaje y entrada que refleje con exactitud la rutina progresiva y cumpla las expectativas de los usuarios finales.

Para ilustrar este tipo de funciones, este artículo muestra cómo crear un flujo de trabajo secuencial de SharePoint 2010 en Visual Studio 2010 que detenga la finalización de tareas hasta que el texto de una lista supere los 100 caracteres. Además, el flujo de trabajo aprovecha un campo de aprobación personalizado de la tarea del flujo de trabajo. En lugar del texto Nota indicada, Completada o En curso estándar contenido en el campo Estado integrado, la tarea agrega un campo Aprobación de negocio que contiene Lo apruebo o NO lo apruebo. El flujo de trabajo configura mediante programación el campo Estado como Completada cuando el elemento y la tarea cumplen los criterios necesarios. Si el campo de descripción no se rellena correctamente, la tarea vuelve al estado En curso y el flujo de trabajo registra en la lista de historial que falta un campo obligatorio.

Crear una nueva colección de sitios

En los siguientes pasos, va a crear una nueva colección de sitios.

Nota

Para instrucciones más detalladas, vea Crear una colección de sitios.

Para crear la nueva colección de sitios

  1. Abra Administración central y haga clic en el vínculo Administración de aplicaciones situado a la izquierda del panel de navegación. Aparece la página de inicio de Administración de aplicaciones.

  2. En Colecciones de sitios, haga clic en Crear colecciones de sitios.

  3. En la página Crear colecciones de sitios, asegúrese de que el cuadro amarillo situado en el vértice superior derecho de la página (debajo de los botones Aceptar y Cancelar) muestre el nombre de la nueva aplicación web creada en el paso 1.

  4. Tras seleccionar la aplicación web correcta, escriba un título. Puede dejar el campo de la descripción en blanco si lo desea.

  5. En Dirección del sitio web, seleccione una dirección válida y regístrela para usarla más adelante en el proyecto Visual Studio 2010. Un ejemplo de una dirección válida es http://servername:port/.

  6. En el área Selección de plantilla, en el cuadro Seleccionar una plantilla, haga clic en la pestaña Publicación y, después, seleccione Portal de publicación. La figura 1 muestra el cuadro Seleccionar una plantilla.

    Figura 1. Elegir la plantilla de sitio

    Elegir plantilla de sitio

    Aunque puede usar otros tipos de plantilla de sitio, el portal de publicación viene con la lista Tareas de flujo de trabajo ya aprovisionada. Si su instancia de SharePoint no dispone de la plantilla del portal de publicación, puede usar una plantilla de sitio de grupo y aprovisionar la lista Tareas de flujo de trabajo.

  7. En Administrador de la colección de sitios primaria, escriba el nombre de la cuenta de Active Directory del administrador de la colección de sitios primaria. Si lo desea, escriba también el administrador de una colección de sitios secundaria en el siguiente cuadro. Deje la opción Plantilla de cuota configurada como Sin cuota.

  8. Verifique que todas las opciones sean correctas y haga clic en Aceptar.

Crear las columnas y los tipos de contenido

En los siguientes pasos, va a crear las columnas personalizadas, los tipos de contenido, la lista personalizada y la lista de tareas de flujo de trabajo.

Para crear las columnas personalizadas

  1. Navegue hasta la colección de sitios recién creada y asegúrese de que el sitio esté en funcionamiento.

  2. Cuando esté cargado el sitio, haga clic en el menú Acciones del sitio situado en el vértice superior izquierdo y, después, en Configuración del sitio.

  3. En el encabezado Galerías, haga clic en Columnas del sitio.

  4. En el vértice superior izquierdo de la página Columnas del sitio, haga clic en Crear para crear una nueva columna de opción y póngale el nombre Aprobación de negocio.

  5. Aplique a esta columna el formato de una lista desplegable que contenga los siguientes valores:

    • Sin decidor (predeterminado)

    • Lo apruebo

    • NO lo apruebo

    Deje el valor predeterminado como Sin decidir (predeterminado), el grupo como Columnas personalizadas y el campo de descripción en blanco.

  6. Después, cree otra columna de sitio que actúe como el campo de descripción que debe rellenarse para que avance el flujo de trabajo. Ponga al campo el nombre Descripción de la solicitud y aplíquele formato de campo de texto sin formato de varias líneas.

  7. Para proporcionar mayor claridad al usuario final, escriba una descripción en este campo que indique que no debe ser superior a 100 caracteres.

Ahora que se han creado los campos auxiliares, debe crear dos tipos de contenido para usarlos durante el progreso del flujo de trabajo. En la siguiente sección, creará los tipos de contenido personalizados.

Para crear los tipos de contenido personalizados

  1. En el menú Acciones del sitio, haga clic en Configuración del sitio.

  2. En la sección Galerías, haga clic en Tipos de contenido de sitio.

  3. Haga clic en Crear en el vértice superior izquierdo de la página para crear un tipo de contenido y póngale de nombre Solicitud inicial.

  4. En la sección Tipo de contenido primario, configure Seleccionar el tipo de contenido primario de como Tipos de contenido de lista y Tipo de contenido primario, como Elemento, tal y como se muestra en la figura 2.

    Figura 2. Crear un nuevo tipo de contenido

    Crear nuevo tipo de contenido

  5. En la sección Colocar este tipo de contenido de sitio en, seleccione Tipos de contenido personalizados y haga clic en Aceptar. Se muestra la pantalla de administración de tipos de contenido.

  6. Haga clic en la opción Agregar desde columnas de sitio existentes para que usted pueda agregar el campo Descripción de la solicitud al tipo de contenido Solicitud inicial.

  7. Tras agregar el campo Descripción de la solicitud, haga clic en su título, debajo del encabezado Columnas en la pantalla de administración de tipos de contenido. Se muestra la pantalla Cambiar columna de tipo de contenido; configure la columna como Oculta, tal y como se muestra en la figura 3.

    Figura 3. Marcar la columna como oculta

    Marcar columna como oculta

  8. Usando los pasos anteriores, cree un segundo tipo de contenido de nombre Solicitud y asegúrese de que contenga los mismos campos. Debido a que la columna Descripción de la solicitud se valida a través del flujo de trabajo, conviértala en un campo obligatorio para aportar mayor claridad al usuario final.

  9. En lugar de usar Elemento como tipo de contenido primario, seleccione Solicitud inicial.

En los siguientes pasos, creará una lista personalizada que albergue los dos tipos de contenido de solicitud y actúe como destino del flujo de trabajo secuencial.

Para crear la lista personalizada

  1. Vuelva al menú Acciones del sitio y haga clic en Ver todo el contenido del sitio.

  2. Haga clic en Crear en el vértice superior izquierdo de la página para iniciar el cuadro de diálogo Crear.

  3. Localice la plantilla de lista personalizada (vea la figura 4) y póngale de nombre Solicitudes.

    Figura 4. Buscar la plantilla de lista personalizada

    Bucar plantilla de lista personalizada

  4. Una vez creada la lista, agréguele sus tipos de contenido personalizados haciendo clic en Configuración de la lista en la cinta. En la sección Configuración general, haga clic en Configuración avanzada.

  5. Configure la opción Permitir la administración de tipos de contenido como y, después, guarde los cambios haciendo clic en Aceptar.

  6. Para agregar sus tipos de contenido de solicitud a la lista, en la sección Tipos de contenido, haga clic en el vínculo Agregar a partir de tipos de contenido de sitio. Localice los tipos de contenido Solicitud inicial y Solicitud y agréguelos. Haga clic en Aceptar para guardar los cambios.

  7. En la sección Tipos de contenido, haga clic en el tipo Elemento y, después, en Eliminar este tipo de contenido para eliminarlo de su lista. Únicamente quedan los dos tipos de contenido personalizados.

  8. Por último, haga clic en Cambiar orden del nuevo botón y tipo de contenido predeterminado y desactive la opción Visible situada junto al tipo de contenido Solicitud, tal y como se muestra en la figura 5. Esta acción garantiza que los usuarios finales se limiten únicamente a crear el tipo Solicitud inicial al agregar nuevos elementos a la lista.

    Figura 5. Configurar el tipo de contenido predeterminado de la lista

    Configurar tipo de contenido predeterminado para la lista

En los siguientes pasos, va a crear una lista de tareas de flujo de trabajo. Si opta por usar una plantilla que no sea la del portal de publicación, es necesario que cree una lista Tareas de flujo de trabajo en su sitio. Si va a usar la plantilla del portal de publicación, puede continuar con la sección titulada Crear el flujo de trabajo secuencial de SharePoint en Visual Studio.

Para crear la lista Tareas de flujo de trabajo

  1. Vuelva al menú Acciones del sitio y haga clic en Ver todo el contenido del sitio.

  2. Haga clic en Crear en el vértice superior izquierdo de la página y localice la plantilla Tareas, tal y como se muestra en la figura 6.

    Figura 6. Buscar la plantilla de lista Tareas

    Buscar la plantilla de lista de tareas

  3. Ponga a la nueva lista el nombre Tareas de flujo de trabajo y haga clic en Crear en la columna de la derecha. (Vea la figura 7).

    Figura 7. Nombrar y crear la lista Tareas de flujo de trabajo

    Nombrar y crear la lista de tareas de flujo de trabajo

Crear el flujo de trabajo secuencial de SharePoint en Visual Studio

En los siguientes pasos, va a crear un proyecto de flujo de trabajo secuencial en Visual Studio 2010 para, después, agregar eventos y otras propiedades al flujo de trabajo.

Para crear un proyecto de flujo de trabajo secuencial de SharePoint

  1. Inicie Visual Studio 2010. En la columna de la izquierda de la página de inicio, haga clic en Nuevo proyecto.

  2. En la sección Visual C# del árbol Plantillas instaladas, seleccione SharePoint.

  3. En la lista de tipos de proyecto, seleccione Flujo de trabajo secuencial.

  4. Cree un directorio para la solución y póngale de nombre AprobaciónTareasPersonalizadas, tal y como se muestra en la figura 8.

    Figura 8. Crear un proyecto de flujo de trabajo secuencial de SharePoint

    Crear flujo de trabajo secuencial de SharePoint

  5. Una vez creado el proyecto, se muestra el Asistente para la personalización de SharePoint. En la primera página, use la dirección URL de la colección de sitios que ha creado previamente como sitio local para la depuración. Asegúrese de que la solución está configurada para implementarse como solución de granja de servidores (vea la figure 9) y, después, haga clic en Siguiente.

    Figura 9. Iniciar el Asistente para la personalización de SharePoint

    Iniciar Asistente de personalización de SharePoint

  6. En la siguiente página del Asistente para la personalización de SharePoint, escriba el nombre del flujo de trabajo; en este caso, use AprobaciónTareasPersonalizadas - Flujo de trabajo 1, tal y como se muestra en la figura 10.

    Figura 10. Elegir el nombre y tipo del flujo de trabajo

    Elegir nombre y tipo de flujo de trabajo

  7. Seleccione Flujo de trabajo de lista como plantilla de flujo de trabajo y, después, haga clic en Siguiente.

  8. En la siguiente página del asistente, Visual Studio 2010 asocia automáticamente el flujo de trabajo a la lista Solicitudes (vea la figura 11). Deje los valores predeterminados de las listas de historial y tareas.

    Figura 11. Configurar la lista de objetivo y las listas de tareas e historial del flujo de trabajo

    Configurar lista de objetivo y listas de historial y tareas

  9. En la página final de configuración, asegúrese de que únicamente esté activada la opción El flujo de trabajo se inicia automáticamente cuando se crea un elemento, tal y como se muestra en la figura 12.

    Figura 12. Seleccionar las opciones de inicio del flujo de trabajo

    Seleccionar opciones de inicio para el flujo de trabajo

  10. Una vez completada la configuración del flujo de trabajo, empiece a agregar los eventos y el código asociado.

    Nota

    De forma predeterminada, Visual Studio agrega el evento onWorkflowActivated1 a la superficie de diseño. Este evento no se usa con este ejemplo; sin embargo, puede dejarlo en la superficie de diseño.

    Desde el cuadro de herramientas, arrastre las siguientes actividades a la superficie de diseño:

    • Code   Póngale de nombre a esta actividad InitializeItem. La actividad Code es responsable de los cambios y las comprobaciones del elemento en el momento de su entrada inicial en el flujo de trabajo.

    • CreateTask   Póngale de nombre a esta actividad createRequestTask. CreateTask es responsable de configurar algunas de las propiedades en la creación inicial de la tarea, como, por ejemplo, la descripción, a qué persona se ha asignado la tarea, etc.

    • While   Esta actividad contiene otra actividad que espera a que cambie la tarea. Depende de una condición de código (más información más adelante).

    • OnTaskChanged   Póngale de nombre a esta actividad onRequestTaskChanged. La actividad OnTaskChanged es responsable de supervisar la tarea y de garantizar que cualquier cambio que realice el usuario en la tarea cumpla las reglas de validación; en este caso, una descripción que contenga más de 100 caracteres en el elemento y el campo de aprobación personalizado configurado correctamente.

    • CompleteTask   Póngale de nombre a esta actividad completeRequestTask. Coloque esta actividad directamente después de la actividad While. Esta actividad es responsable de controlar que la tarea se ha completado, es decir, de configurar el campo de estado integrado como Completada.

    Una vez colocadas todas las actividades, la superficie de diseño debería parecerse ahora a la figura 13.

    Figura 13. Actividades de flujo de trabajo en la superficie de diseño

    Actividades del flujo de trabajo sobre la superficie de diseño

  11. Ahora, cree propiedades para las actividades y tokens de correlación de enlace. Las propiedades deben crearse primero en el código subyacente, tal y como se indica a continuación.

    public Guid workflowId = default(System.Guid);
    public SPWorkflowActivationProperties workflowProperties = new SPWorkflowActivationProperties();
    
    // these properties are for the workflow task that will be created.
    public SPWorkflowTaskProperties RequestTaskProperties = new SPWorkflowTaskProperties();
    public SPWorkflowTaskProperties RequestTaskBeforeProperties = new SPWorkflowTaskProperties();
    public Guid RequestApproveTaskId = default(Guid);
    public int RequestApproveTaskItemId;
    public bool RequestApproveComplete = false;
    

Después, empiece a asociar los tokens de correlación con las actividades correspondientes realizando los siguientes pasos:

Para asociar los tokens de correlación con las actividades correspondientes

  1. Para la actividad onWorkflowActivated1, cree un nuevo token de correlación de nombre workflowToken. Configure la actividad de propietario de este token como Workflow1. En un escenario mayor, este token se usaría en muchas más actividades y eventos en la superficie de diseño, pero, para este ejercicio, solamente se usa en esta actividad. Las actividades de la tarea necesitan compartirse entre sí su propio token de correlación para garantizar que trabajan en la misma tarea.

  2. Para las actividades createRequestTask, onRequestTaskChanged y completeRequestTask, cree un token de correlación de nombre RequestTaskToken con un OwnerActivity de Workflow1. Puede crear este token escribiéndolo en el cuadro CorrelationToken del panel de propiedades del primer evento de la tarea y, después, seleccionándolo para el resto de las actividades.

    La figura 14 muestra el aspecto del panel de propiedades de la actividad createRequestTask.

    Figura 14. Configurar las propiedades de la actividad

    Configurar propiedades de la actividad

  3. Asigne los miembros públicos correctos desde el código subyacente a los campos ListItemId, TaskId y TaskProperties haciendo clic en la actividad en la superficie de diseño y seleccionando el nombre de la propiedad en el panel Propiedades. Use los puntos suspensivos () para seleccionar el miembro en la pestaña Enlazar a un miembro existente y haga clic en Aceptar.

    Esta acción debe realizarse con cada actividad de la tarea en la superficie de diseño con el fin de garantizar que todas tienen el mismo token de correlación y que los miembros públicos se asignan correctamente. Los miembros públicos difieren ligeramente para cada uno de los eventos de la tarea. Por ejemplo, onRequestTaskChanged agrega un atributo BeforeProperties, mientras que completeRequestTask únicamente necesita TaskId. (Vea la figura 15).

    Figura 15. Enlazar la propiedad de la actividad a un miembro existente

    Enlazar propiedad de la actividad a un miembro existente

Ahora que todos los tokens de correlación y las propiedades están configurados correctamente, debe generar los métodos asociados.

Para generar firmas de método y agregar el código

  1. Haga doble clic en cada una de las actividades en la superficie de diseño. Visual Studio 2010 muestra automáticamente el código y genera la firma de método necesaria para cada actividad. La excepción es la actividad While, para la que debe crear este método manualmente.

  2. Cree el método asociado para la actividad While agregando el siguiente código.

    private void notRequestTaskApproved(object sender, ConditionalEventArgs e)
    {
        e.Result = !RequestApproveComplete;
    }
    

    En el panel de propiedades de la actividad While, configure el atributo Condition como Code Condition y el atributo Condition contenido en este como notRequestTaskApproved, tal y como se muestra en la figura 16. Esta configuración provoca que la actividad While continúe repitiéndose hasta que el método devuelva la respuesta adecuada.

    Figura 16. Configurar la propiedad Code Condition para la actividad While

    Configurar propiedad de la condición de código para whileActivity

  3. Ahora, agregue los siguientes dos métodos auxiliares.

    private void ResestTask(SPListItem task, SPListItem currentItem, string message)
    {
        LogComment(message + currentItem.Title);
    
        // This line is very important. It keeps you from receiving 
        // the error "This task is currently locked by a running workflow."
        task[SPBuiltInFieldId.WorkflowVersion] = 1;
        task["Status"] = "In Progress";
        task["Business Approval"] = "Undecided";
        task.Update();
    }
    
    private void LogComment(string logMessage)
    {
        SPWorkflow.CreateHistoryEvent(workflowProperties.Web, this.WorkflowInstanceId, 0, workflowProperties.Web.CurrentUser, new TimeSpan(), "Update", logMessage, string.Empty);
    }
    

    El primer método auxiliar, ResetTask, se llama únicamente cuando el estado de una tarea debe volverse a cambiar a In Progress, por ejemplo, cuando un usuario intenta completarla antes de rellenar el campo de descripción obligatorio en el elemento de la lista. Este método de reversión es necesario para que la solución de flujo de trabajo evite el error Esta tarea se encuentra bloqueada por un flujo de trabajo en ejecución que tiene lugar cuando se revierte una tarea al estado In Progress mediante código si un usuario intenta cambiarla de nuevo más adelante. Este mensaje de error está relacionado con la versión del flujo de trabajo del elemento de la tarea, de ahí que se configure expresamente la propiedad WorkflowVersion como 1.

    El segundo método es una sencilla función de registro que introduce actualizaciones en la lista Workflow History.

  4. Una vez configurado el proyecto de flujo de trabajo, puede empezar a rellenar la lógica de los métodos asociados en el archivo de código subyacente. Agregue el siguiente código al método InitializeItem_ExecuteCode:

    private void InitializeItem_ExecuteCode(object sender, EventArgs e)
    {
        // Change the content type from Initial Request to simply Request.
    
        // This change makes Request Description a required field.
        SPListItem currentItem = workflowProperties.Item;
    
        currentItem["ContentTypeId"] = workflowProperties.List.ContentTypes["Request"].Id;
        currentItem.Update();
    }
    

    Cuando se introduce una solicitud, es recogida por el flujo de trabajo al crearse el elemento. Con la lista configurada para permitir a los usuarios introducir solicitudes únicamente con el tipo de contenido Solicitud inicial, el flujo de trabajo puede ya cambiar el tipo de contenido del elemento a Solicitud. Cambiar el elemento al tipo Solicitud permite al campo Descripción de la solicitud visualizarse en el formulario de modificación como campo obligatorio.

  5. Después, agregue el siguiente código al método createRequestTask_MethodInvoking. Aquí es donde usted configura todas las propiedades aplicables de la tarea de flujo de trabajo.

    private void createRequestTask_MethodInvoking(object sender, EventArgs e)
    {
        // Now create the approval task.
        SPListItem currentItem = workflowProperties.Item;
    
        // Set up some of the properties.
        RequestApproveTaskId = Guid.NewGuid();
        RequestTaskProperties.Title = workflowProperties.Item["Title"].ToString() + " is ready for review";
        RequestTaskProperties.Description = "Please review the request and ensure it is valid.  If it is valid, then please select 'I Approve' on this task and save it.";
        LogComment("Request Task Created.");
    }
    
  6. Por último, agregue el siguiente código al método onRequestTaskChanged_Invoked.

    private void onRequestTaskChanged_Invoked(object sender, ExternalDataEventArgs e)
    {
        int tid = onRequestTaskChanged.AfterProperties.TaskItemId;
        SPListItem task = workflowProperties.Web.Lists["Workflow Tasks"] .GetItemById(RequestApproveTaskItemId);
    
        SPListItem currentItem = workflowProperties.Item;
    
        try
        {
            // Ensure the field exists on the item.
            if (task["Business Approval"] != null && currentItem["Request Description"] != null)
            {
                // Evaluate the value of the field.
                    if (task["Business Approval"].ToString() == "I Approve" || task["Business Approval"].ToString() == "I Do NOT Approve")
                        {
                            if (currentItem["Request Description"].ToString().Length >= 100)
                            {
                                RequestApproveComplete = true;
                            }
                            else
                            {
                                RequestApproveComplete = false;
                                ResestTask(task, currentItem, "Request Description is not long enough.");
                            }
                        }
                        else
                        {
                            RequestApproveComplete = false;
                            ResestTask(task, currentItem, "Business Approval is not set.");
                        }
            }
            else
            {
                // This should never happen because there is a default, but always good just in case.
                RequestApproveComplete = false;
                ResestTask(task, currentItem, "Business Approval status is null or no Request Description.");
            }
        }
        catch (Exception ex)
        {
            RequestApproveComplete = false;
            ResestTask(task, currentItem, "Exception.");
            LogComment(ex.ToString());
        }
    }
    

    Este método evalúa el elemento Request y garantiza que el campo Descripción de la solicitud esté rellenado correctamente y que la tarea de flujo de trabajo asociada se haya marcado con el código de estado correcto. Si se cumplen todos los criterios, RequestApproveComplete devuelve el valor True, lo que provoca que salga de la actividad While.

  7. Por último, agregue el siguiente código a la actividad completeRequestTaskApproved.

    private void completeRequestTask_MethodInvoking(object sender, EventArgs e)
    {
        // Grab the task item so the workflow can complete it.
        SPListItem task = workflowProperties.Web.Lists["Workflow Tasks"] .GetItemById(RequestApproveTaskItemId);
    
        // This line is very important. It keeps you from receiving 
        // the error "This task is currently locked by a running workflow."
        task[SPBuiltInFieldId.WorkflowVersion] = 1;
        task["Status"] = "Completed";
        task.SystemUpdate(false);
    
        SPListItem currentItem = workflowProperties.Item;
        if (task["Business Approval"].ToString() == "I Do NOT Approve")
        {
            string currentTitle = workflowProperties.Item["Title"].ToString();
            workflowProperties.Item["Title"] = "DECLINED: " + currentTitle;
            workflowProperties.Item.Update();
        }
        else
        {
            string currentTitle = workflowProperties.Item["Title"].ToString();
            workflowProperties.Item["Title"] = "APPROVED: " + currentTitle;
            workflowProperties.Item.Update();
        }
    }
    

    De nuevo, va a configurar la versión del flujo de trabajo para evitar que la tarea se bloquee cuando se lleve a cabo la actualización desde el código. El flujo de trabajo configura el campo Status integrado como Completed, que finaliza la tarea. Después, se realiza una rápida evaluación del estado de la tarea (aprobada o rechazada) y se actualiza el elemento para reflejar la decisión.

El paso final de este proceso es la configuración del campo Business Approval personalizado en el tipo de contenidoTarea de flujo de trabajo.

Para realizar la configuración final del sitio para el campo personalizado de aprobación de la tarea

  1. Antes de que pueda modificar los campos asociados a la tarea de flujo de trabajo, debe agregarla a la lista Tareas de flujo de trabajo. En el menú Depurar de Visual Studio 2010, haga clic en Iniciar depuración o presione F5, tal y como se muestra en la figura 17. De este modo, se abre una nueva ventana del navegador y se adjunta el depurador al proceso w3wp.

    Figura 17. Iniciar el flujo de trabajo en el modo de depuración

    Iniciar flujo de trabajo en modo de depuración

  2. Cuando se cargue el sitio, vaya a la lista de solicitudes y cree un elemento. Esta acción provocará que el tipo de contenido Tarea de flujo de trabajo se agregue automáticamente a la lista Tareas de flujo de trabajo. Para verificarlo, en el menú Acciones del sitio, haga clic en Ver todo el contenido del sitio. Seleccione la lista Tareas de flujo de trabajo y haga clic en Configuración de la lista.

    En la página Configuración de la lista, puede ver el tipo de contenido Tarea de flujo de trabajo en la lista de tipos de contenido, tal y como se muestra en la figura 18.

    Figura 18. Ver los tipos de contenido en la lista Tareas de flujo de trabajo

    Ver tipos de contenido en la lista de tareas de flujo de trabajo

  3. Haga clic en el tipo de contenido Tarea y use la opción Eliminar este tipo de contenido para eliminarlo de la lista Tareas de flujo de trabajo. Repita este procedimiento con el tipo de contenido Tarea de resumen.

  4. Ahora, haga clic en el tipo de contenido Tarea de flujo de trabajo para ir a la página de configuración.

  5. Haga clic en el campo Estado y cambie Configuración de columnas de Opcional a Oculta. Haga clic en Aceptar para guardar los cambios.

  6. En la página de configuración del tipo de contenido Tarea de flujo de trabajo, en la sección Columnas, haga clic en Agregar desde columnas de sitio existentes.

  7. Localice la columna Aprobación de negocio en la lista y haga doble clic en ella para moverla a la lista Columnas que agregar. (Vea la figura 19). Haga clic en Aceptar para guardar los cambios.

    Figura 19. Agregar columnas personalizadas al tipo de contenido Tarea de flujo de trabajo

    Agregar columnas personalizadas al tipo de tarea de flujo de trabajo

Probar el flujo de trabajo secuencial

En esta sección, va a probar el flujo de trabajo. Para ello, deberá crear una solicitud y, después, actualizarla para ver los resultados.

Para crear una solicitud

  1. En la lista Solicitudes, haga clic en el vínculo Agregar nuevo elemento en el vértice inferior izquierdo de la vista de lista. Aparece el cuadro de diálogo Nuevo elemento, tal y como se muestra en la figura 20.

    Figura 20. Nueva página de elemento para la lista de solicitudes

    Nueva pantalla de elementos para la lista de solicitudes

  2. Escriba un título para la solicitud y haga clic en Guardar.

  3. El flujo de trabajo crea la tarea asociada en la lista Tareas de flujo de trabajo. Para ver la tarea, en el menú Acciones del sitio, haga clic en Ver todo el contenido del sitio y, después, seleccione la lista Tareas de flujo de trabajo en el encabezado Listas. La tarea aparece en la parte superior de la vista principal, tal y como se muestra en la figura 21.

    Figura 21. Vista de lista de la tarea recién creada

    Vista de lista de la tarea creada recientemente

  4. Haga clic en el título de la tarea para visualizar el formulario completo de la tarea. Haga clic en Modificar en el vértice superior izquierdo del formulario para acceder al modo de modificación de la tarea. (Vea la figura 22).

    Figura 22. Formulario de modificación de tarea de flujo de trabajo con campo de aprobación personalizado

    Formulario de edición de la tarea del flujo de trabajo con campo de aprobación personalizado

    Si hace clic en Guardar con el valor Sin decidir todavía en el campo Aprobación de negocio, el campo Estado integrado se configura como En curso y registra lo siguiente en el historial del flujo de trabajo. (Vea la figura 23).

    Figura 23. Ver la lista Historial del flujo de trabajo

    Ver lista del historial del flujo de trabajo

    Del mismo modo, si omite el campo Descripción de la solicitud en el elemento de la lista al intentar aprobar o rechazar la tarea, el campo Estado se configura como En curso.

  5. Ahora, vuelva al elemento Solicitud y modifíquelo. Verá que el campo Descripción de la solicitud muestra ahora el valor necesario. Escriba un valor de más de 100 caracteres (vea la figura 24) y guarde los cambios. Después, puede aprobar o rechazar la tarea.

    Figura 24. Formulario de modificación del elemento de la lista de solicitudes

    Solicitar formulario de edición del elemento de la lista

  6. Ahora que el elemento Solicitud se ha rellenado correctamente, vuelva a la lista Tareas de flujo de trabajo, modifique la tarea asociada al elemento Solicitud y seleccione NO lo apruebo en el campo Aprobación de negocio. Esta acción provoca que el flujo de trabajo configure el campo Estado como Completada, tal y como se muestra en la figura 25.

    Figura 25. Vista de la tarea completada (y rechazada) en la lista Tareas de flujo de trabajo

    Vista de la tarea completada en la lista de tareas de flujo de trabajo

    Puede ver el cambio en el título del elemento Solicitud en la figura 26

    Figura 26. Cambio de título realizado por el flujo de trabajo en una tarea rechazada

    Cambio de título hecho por el flujo de trabajo en la tarea rechazada

    Si se aprueba la tarea de flujo de trabajo, el título del elemento Solicitud se modifica para reflejar la aprobación. (Vea la figura 27).

    Figura 27. Cambio de título realizado por el flujo de trabajo en una tarea aprobada

    Cambio de título hecho por el flujo de trabajo en la tarea aprobada

Conclusión

Con frecuencia, las necesidades del proceso de negocio con el que usted trabaja exigen una solución más flexible que se alinee mejor con la operación que las funciones integradas. En estos casos, debe crear sus propios criterios personalizados de aprobación y validación para las tareas de flujos de trabajo secuenciales de SharePoint. El uso de estas técnicas proporciona un potente mecanismo para aplicar reglas de negocios e integrarse de forma más eficiente con los procesos lógicos existentes.

Recursos adicionales

Para más información, vea los siguientes recursos: