Compartir a través de


Tutorial: Creación de un flujo de trabajo con formularios de asociación e iniciación

En este tutorial se muestra cómo crear un flujo de trabajo secuencial básico que incorpora el uso de formularios de asociación e iniciación. Se trata de formularios ASPX que permiten agregar parámetros a un flujo de trabajo cuando el Administrador de SharePoint lo asocia por primera vez (el formulario de asociación) y cuando el usuario inicia el flujo de trabajo (el formulario de inicio).

En este tutorial se describe un escenario en el que un usuario quiere crear un flujo de trabajo de aprobación para informes de gastos que tenga los requisitos siguientes:

  • Cuando el flujo de trabajo está asociado a una lista, se solicita al administrador un formulario de asociación en el que especifica un límite de dólar para los informes de gastos.

  • Los empleados cargan sus informes de gastos en la lista Documentos compartidos, inician el flujo de trabajo y, después, introducen los gastos totales en el formulario de inicio del flujo de trabajo.

  • Si el total de un informe de gastos de empleado supera el límite predefinido por el administrador, se crea una tarea para que el administrador del empleado lo apruebe. Pero si el total del informe de gastos de un empleado es menor o igual que el límite de gastos, se escribe un mensaje aprobado automáticamente en el historial del flujo de trabajo.

    En este tutorial se muestran las tareas siguientes:

  • Creación de un proyecto de flujo de trabajo secuencial de definición de lista de SharePoint en Visual Studio.

  • Creación de una programación de flujo de trabajo.

  • Control de eventos de actividad de flujo de trabajo.

  • Creación de formularios de asociación e iniciación de flujo de trabajo.

  • Asociación del flujo de trabajo.

  • Inicio manual del flujo de trabajo.

Nota:

Aunque en este tutorial se usa un proyecto de flujo de trabajo secuencial, el proceso es el mismo para los flujos de trabajo de máquina de estados.

Además, es posible que el equipo muestre nombres o ubicaciones diferentes para algunos de los elementos de la interfaz de usuario de Visual Studio en las instrucciones siguientes. La edición de Visual Studio que se tenga y la configuración que se utilice determinan estos elementos. Para más información, vea Personalizar el IDE de Visual Studio.

Requisitos previos

Necesitará los componentes siguientes para completar este tutorial:

  • Ediciones compatibles de Microsoft Windows y SharePoint.

  • Visual Studio.

Creación de un proyecto de flujo de trabajo secuencial de SharePoint

Primero, cree un proyecto de flujo de trabajo secuencial en Visual Studio. Un flujo de trabajo secuencial es una serie de pasos que se ejecutan en orden hasta que termina la última actividad. En este procedimiento, creará un flujo de trabajo secuencial que se aplica a la lista Documentos compartidos en SharePoint. El asistente del flujo de trabajo le permite asociar el flujo de trabajo con el sitio o la definición de lista y determinar cuándo se iniciará.

Instrucciones para la creación de un proyecto de flujo de trabajo secuencial de SharePoint

  1. En la barra de menús, seleccione Archivo>Nuevo>Proyecto para mostrar el cuadro de diálogo Nuevo proyecto.

  2. Expanda el nodo SharePoint en Visual C# o Visual Basic y, después, seleccione el nodo 2010.

  3. En el panel Plantillas, seleccione la plantilla de proyecto Proyecto de SharePoint 2010.

  4. En el cuadro Nombre, escriba ExpenseReport y seleccione el botón Aceptar.

    Aparecerá el Asistente para la personalización de SharePoint.

  5. En la página Especifique el sitio y el nivel de seguridad de la depuración, seleccione el botón de opción Implementar como solución de granja de servidores y, después, el botón Finalizar para aceptar el nivel de confianza y el sitio predeterminado.

    Este paso también establece el nivel de confianza de la solución como solución de granja, que es la única opción disponible para los proyectos de flujo de trabajo.

  6. En el Explorador de soluciones, elija el nodo de proyecto.

  7. En la barra de menús, elija Proyecto>Agregar nuevo elemento.

  8. En Visual C# o Visual Basic, expanda el nodo SharePoint y, después, seleccione el nodo 2010.

  9. En el panel Plantillas, seleccione la plantilla Flujo de trabajo secuencial (solución de granja de servidores únicamente) y, después, el botón Agregar.

    Aparecerá el Asistente para la personalización de SharePoint.

  10. En la página Especifique el nombre del flujo de trabajo de depuración, acepte el nombre predeterminado (ExpenseReport - Workflow1). Mantenga el valor predeterminado del tipo de plantilla de flujo de trabajo (Flujo de trabajo de lista). Elija el botón Siguiente.

  11. En la página ¿Desea que Visual Studio asocie automáticamente el flujo de trabajo en una sesión de depuración?, desactive el cuadro que asocia automáticamente la plantilla de flujo de trabajo si está activado.

    Este paso le permite asociar manualmente el flujo de trabajo a la lista Documentos compartidos más adelante, que muestra el formulario de asociación.

  12. Elija el botón Finalizar.

Adición de un formulario de asociación al flujo de trabajo

Ahora, cree un formulario de asociación .ASPX que aparezca cuando el Administrador de SharePoint asocie primero el flujo de trabajo a un documento de informe de gastos.

Instrucciones para la adición de un formulario de asociación al flujo de trabajo

  1. Seleccione el nodo Workflow1 en el Explorador de soluciones.

  2. En la barra de menús, seleccione Proyecto>Agregar nuevo elemento para mostrar el cuadro de diálogo Agregar nuevo elemento.

  3. En la vista de árbol del cuadro de diálogo, expanda Visual C# o Visual Basic (según el lenguaje del proyecto), expanda el nodo SharePoint y, después, seleccione el nodo 2010.

  4. En la lista de plantillas, seleccione la plantilla Formulario de asociación de flujo de trabajo.

  5. En el cuadro de texto Nombre, escriba ExpenseReportAssocForm.aspx.

  6. Seleccione el botón Agregar para agregar el formulario al proyecto.

Diseño y codificación del formulario de asociación

En este procedimiento, introducirá la funcionalidad en el formulario de asociación al agregarle controles y código.

Instrucciones para el diseño y la codificación del formulario de asociación

  1. En el formulario de asociación (ExpenseReportAssocForm.aspx), busque el elemento asp:Content que tiene ID="Main".

  2. Directamente después de la primera línea de este elemento de contenido, agregue el código siguiente para crear una etiqueta y un cuadro de texto que solicite el límite de aprobación de gastos (AutoApproveLimit):

    <asp:Label ID="lblAutoApproveLimit" Text="Auto Approval Limit:" runat="server" />
    
    <asp:TextBox ID="AutoApproveLimit" runat="server" />
    <br /><br />
    
  3. Expanda el archivo ExpenseReportAssocForm.aspx en el Explorador de soluciones para mostrar sus archivos dependientes.

    Nota:

    Si el proyecto está en Visual Basic, debe seleccionar el botón View All Files (Ver todos los archivos) para realizar este paso.

  4. Abra el menú contextual del archivo ExpenseReportAssocForm.aspx y seleccione Ver código.

  5. Reemplace el método GetAssociationData por lo siguiente:

    private string GetAssociationData()
    {
        // TODO: Return a string that contains the association data that
        // will be passed to the workflow. Typically, this is in XML
        // format.
        return this.AutoApproveLimit.Text;
    }
    

Adición de un formulario de inicio al flujo de trabajo

Ahora, cree el formulario de inicio que aparece cuando los usuarios ejecutan el flujo de trabajo en sus informes de gastos.

Instrucciones para la creación de un formulario de inicio

  1. Seleccione el nodo Workflow1 en el Explorador de soluciones.

  2. En la barra de menús, seleccione Proyecto>Agregar nuevo elemento para mostrar el cuadro de diálogo Agregar nuevo elemento.

  3. En la vista de árbol del cuadro de diálogo, expanda Visual C# o Visual Basic (según el lenguaje del proyecto), expanda el nodo SharePoint y, después, seleccione el nodo 2010.

  4. En la lista de plantillas, seleccione la plantilla Formulario de iniciación de flujo de trabajo.

  5. En el cuadro de texto Nombre, escriba ExpenseReportInitForm.aspx.

  6. Seleccione el botón Agregar para agregar el formulario al proyecto.

Diseño y codificación del formulario de inicio

Ahora, introduzca la funcionalidad en el formulario de inicio al agregarle controles y código.

Instrucciones para la codificación del formulario de inicio

  1. En el formulario de inicio (ExpenseReportInitForm.aspx), busque el elemento asp:Content que contiene ID="Main".

  2. Directamente después de la primera línea de este elemento de contenido, agregue el código siguiente para crear una etiqueta y un cuadro de texto que muestre el límite de aprobación de gastos (AutoApproveLimit) que se especificó en el formulario de asociación y otro cuadro de texto y otra etiqueta para solicitar el total de gastos (ExpenseTotal):

    <asp:Label ID="lblAutoApproveLimit" Text="Auto Approval Limit:" runat="server" />
    
    <asp:TextBox ID="AutoApproveLimit" ReadOnly="true" runat="server" />
    <br /><br />
    <asp:Label ID="lblExpenseTotal" Text="Expense Total:" runat="server" />
    
    <asp:TextBox ID="ExpenseTotal" runat="server" />
    <br /><br />
    
  3. Expanda el archivo ExpenseReportInitForm.aspx en el Explorador de soluciones para mostrar sus archivos dependientes.

  4. Abra el menú contextual del archivo ExpenseReportInitForm.aspx y seleccione Ver código.

  5. Reemplace el método Page_Load por el ejemplo siguiente:

    protected void Page_Load(object sender, EventArgs e)
    {
        InitializeParams();
        this.AutoApproveLimit.Text =
          workflowList.WorkflowAssociations[new
          Guid(associationGuid)].AssociationData;
    }
    
  6. Reemplace el método GetInitiationData por el ejemplo siguiente:

    // This method is called when the user clicks the button to start the workflow.
    private string GetInitiationData()
    {
        // TODO: Return a string that contains the initiation data that
        // will be passed to the workflow. Typically, this is in XML
        // format.
        return this.ExpenseTotal.Text;
    }
    

Personalización del flujo de trabajo

Ahora, personalice el flujo de trabajo. Más adelante, asociará dos formularios al flujo de trabajo.

Instrucciones para la personalización del flujo de trabajo

  1. Para mostrar el flujo de trabajo en el diseñador de flujo de trabajo, abra Workflow1 en el proyecto.

  2. En el Cuadro de herramientas, expanda el nodo Flujo de trabajo de Windows V3.0 y busque la actividad IfElse.

  3. Para agregar esta actividad al flujo de trabajo, realice uno de los pasos siguientes:

    • Abra el menú contextual de la actividad IfElse, seleccione Copiar, abra el menú contextual de la línea en la actividad onWorkflowActivated1 en el diseñador de flujos de trabajo y, después, seleccione Pegar.

    • Arrastre la actividad IfElse desde el Cuadro de herramientas y conéctela a la línea situada debajo de la actividad onWorkflowActiviated1 en el diseñador de flujos de trabajo.

  4. En el Cuadro de herramientas, expanda el nodo Flujo de trabajo de SharePoint y busque la actividad CreateTask.

  5. Para agregar esta actividad al flujo de trabajo, realice uno de los pasos siguientes:

    • Abra el menú contextual de la actividad CreateTask, seleccione Copiar, abra el menú contextual para una de las dos áreas Coloque actividades aquí en IfElseActivity1 en el diseñador de flujo de trabajo y, después, seleccione Pegar.

    • Arrastre la actividad CreateTask desde el Cuadro de herramientas a una de las dos áreas Coloque actividades aquí dentro de IfElseActivity1.

  6. En la ventana Propiedades, escriba un valor de propiedad de taskToken para la propiedad CorrelationToken.

  7. Para expandir la propiedad CorrelationToken, seleccione el signo más (más de TreeView) a su lado.

  8. Seleccione la flecha desplegable en la subpropiedad OwnerActivityName y establezca el valor Workflow1.

  9. Seleccione la propiedad TaskId y, después, el botón de puntos suspensivos (elipse del Diseñador para dispositivos móviles de ASP.NET Mobile Designer) para mostrar el cuadro de diálogo Enlazar propiedad.

  10. Seleccione la pestaña Enlazar a un miembro nuevo, el botón de opción Crear campo y, después, el botón Aceptar.

  11. Seleccione la propiedad TaskProperties y, después, el botón de puntos suspensivos (elipse del Diseñador para dispositivos móviles de ASP.NET Mobile Designer) para mostrar el cuadro de diálogo Enlazar propiedad.

  12. Seleccione la pestaña Enlazar a un miembro nuevo, el botón de opción Crear campo y, después, el botón Aceptar.

  13. En el Cuadro de herramientas, expanda el nodo Flujo de trabajo de SharePoint y busque la actividad LogToHistoryListActivity.

  14. Para agregar esta actividad al flujo de trabajo, realice uno de los pasos siguientes:

    • Abra el menú contextual de la actividad LogToHistoryListActivity, seleccione Copiar, abra el menú contextual para la otra área Coloque actividades aquí en IfElseActivity1 en el diseñador de flujo de trabajo y, después, seleccione Pegar.

    • Arrastre la actividad LogToHistoryListActivity desde el Cuadro de herramientas y colóquela en la otra área Coloque actividades aquí dentro de IfElseActivity1.

Adición de código al flujo de trabajo

Ahora, agregue código al flujo de trabajo para darle funcionalidad.

Instrucciones para la adición de código al flujo de trabajo

  1. Abra el menú contextual de la actividad createTask1 en el diseñador de flujos de trabajo y seleccione Ver código.

  2. Agregue el método siguiente:

    private void createTask1_MethodInvoking(object sender, EventArgs e)
    {
        createTask1_TaskId1 = Guid.NewGuid();
        createTask1_TaskProperties1.AssignedTo = "somedomain\\someuser";
        createTask1_TaskProperties1.Description = "Please approve the
          expense report";
        createTask1_TaskProperties1.Title = "Expense Report Approval
          Needed";
    }
    

    Nota

    En el código, reemplace somedomain\\someuser por un dominio y un nombre de usuario para quien se creará una tarea, como "Office\\JoeSch". Para realizar pruebas, es más fácil usar la cuenta con la que está desarrollando.

  3. Después del método MethodInvoking, agregue el ejemplo siguiente:

    private void checkApprovalNeeded(object sender, ConditionalEventArgs
      e)
    {
        bool approval = false;
        if (Convert.ToInt32(workflowProperties.InitiationData) >
          Convert.ToInt32(workflowProperties.AssociationData))
        {
            approval = true;
        }
        e.Result = approval;
    }
    
  4. En el diseñador de flujo de trabajo, seleccione la actividad ifElseBranchActivity1.

  5. En la ventana Propiedades, seleccione la flecha desplegable de la propiedad Condición y, después, establezca el valor Code Condition.

  6. Para expandir la propiedad Condición, seleccione el signo más (más de TreeView) a su lado y, después, establezca su valor en checkApprovalNeeded.

  7. En el diseñador de flujos de trabajo, abra el menú contextual de la actividad logToHistoryListActivity1 y, después, seleccione Generar controladores para generar un método vacío para el evento MethodInvoking.

  8. Reemplace el código MethodInvoking por el siguiente:

    private void logToHistoryListActivity1_MethodInvoking(object sender,
      EventArgs e)
    {
        this.logToHistoryListActivity1.HistoryOutcome = "Expense was
          auto approved for " + workflowProperties.InitiationData;
    }
    
  9. Seleccione la tecla F5 para depurar el programa.

    Esta acción compila la aplicación, la empaqueta, la implementa, activa sus características, recicla el grupo de aplicaciones de IIS y, después, inicia el explorador en la ubicación especificada en la propiedad Dirección URL del sitio.

Asociación del flujo de trabajo a la lista de documentos

Ahora, muestre el formulario de asociación de flujo de trabajo al asociar el flujo de trabajo a la lista SharedDocuments en el sitio de SharePoint.

Instrucciones para la asociación del flujo de trabajo

  1. Seleccione el vínculo Documentos compartidos en la barra Inicio rápido.

  2. Seleccione el vínculo Biblioteca en la pestaña Herramientas de biblioteca y, después, seleccione el botón de la cinta Configuración de biblioteca.

  3. En la sección Permisos y administración, seleccione el vínculo Configuración del flujo de trabajo y, después, el vínculo Agregar un flujo de trabajo en la página Flujos de trabajo.

  4. En la lista superior de la página de configuración del flujo de trabajo, seleccione la plantilla ExpenseReport - Workflow1.

  5. En el campo siguiente, escriba ExpenseReportWorkflow y, después, seleccione el botón Siguiente.

    Esta acción asocia el flujo de trabajo a la lista Documentos compartidos y muestra el formulario de asociación de flujo de trabajo.

  6. En el cuadro de texto Auto Approval Limit (Límite de aprobación automática), escriba 1200 y, después, seleccione el botón Asociar flujo de trabajo.

Inicio del flujo de trabajo

Ahora, asocie el flujo de trabajo a uno de los documentos de la lista Documentos compartidos para mostrar el formulario de inicio del flujo de trabajo.

Instrucciones para el inicio del flujo de trabajo

  1. En la página de SharePoint, seleccione el botón Inicio.

  2. Seleccione el vínculo Documentos compartidos en la barra Inicio rápido para mostrar la lista Documentos compartidos.

  3. Seleccione el vínculo Documentos en la pestaña Herramientas de biblioteca de la parte superior de la página y, después, seleccione el botón Cargar documento de la cinta para cargar un nuevo documento en la lista Documentos compartidos.

  4. En el cuadro de diálogo Cargar documento, seleccione el botón Examinar, seleccione cualquier archivo de documento, seleccione el botón Abrir y, después, el botón Aceptar.

    Puede cambiar la configuración del documento en este cuadro de diálogo, pero para dejarla en los valores predeterminados, seleccione el botón Guardar.

  5. Seleccione el documento cargado, la flecha desplegable que aparece y, después, el elemento Flujos de trabajo.

  6. Seleccione la imagen junto a ExpenseReportWorkflow.

    Esta acción muestra el formulario de inicio del flujo de trabajo. (Tenga en cuenta que el valor mostrado en el cuadro Límite de aprobación automática es de solo lectura porque se especificó en el formulario de asociación).

  7. En el cuadro de texto Total de gastos, escriba 1600 y, después, seleccione el botón Iniciar flujo de trabajo.

    Esta acción vuelve a mostrar la lista Documentos compartidos. Se agrega una columna nueva denominada ExpenseReportWorkflow con el valor Completado añadido al elemento que acaba de iniciar el flujo de trabajo.

  8. Seleccione la flecha desplegable situada junto al documento cargado y, después, el elemento Flujos de trabajo para mostrar la página de estado del flujo de trabajo. Seleccione el valor Completado en Flujos de trabajo completados. La tarea aparece en la sección Tareas.

  9. Seleccione el título de la tarea para mostrar sus detalles de la tarea.

  10. Vuelva a la lista SharedDocuments y reinicie el flujo de trabajo, con el mismo documento o uno diferente.

  11. Escriba una cantidad en la página de inicio que sea menor o igual que la cantidad especificada en la página de asociación (1200).

    Cuando esto ocurre, se crea una entrada en el historial en vez de una tarea. La entrada se muestra en la sección Historial de flujo de trabajo de la página de estado del flujo de trabajo. Anote el mensaje en la columna Resultado del evento de historial. Contiene el texto especificado en el evento logToHistoryListActivity1.MethodInvoking que incluye la cantidad que se aprobó automáticamente.