Tutorial: Agregar una página de aplicación a un flujo de trabajo
En este tutorial se muestra cómo agregar una página de aplicación que muestre los datos derivados de un flujo de trabajo a un proyecto de flujo de trabajo.El punto de partida es el proyecto descrito en el tema Tutorial: Crear un flujo de trabajo con formularios de asociación y de iniciación.
En este tutorial se muestran las siguientes tareas:
Agregar una aplicación de página ASPX a un proyecto de flujo de trabajo de SharePoint.
Obtener los datos del proyecto de flujo de trabajo y manipularlos.
Mostrar los datos en una tabla en la página de aplicación.
[!NOTA]
Es posible que su equipo muestre nombres o ubicaciones diferentes para algunos de los elementos de la interfaz de usuario de Visual Studio incluidos en las instrucciones siguientes. La edición de Visual Studio que se tenga y la configuración que se utilice determinan estos elementos. Para obtener más información, vea Valores de configuración de Visual Studio.
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.
También tiene que completar el proyecto del tema Tutorial: Crear un flujo de trabajo con formularios de asociación y de iniciación.
Corregir código del flujo de trabajo
Primero, agregue una línea de código al flujo de trabajo para establecer el valor de la columna Outcome en la cantidad del informe de gastos.Este valor se utiliza después en el cálculo final del informe de gastos.
Para establecer el valor de la columna Outcome en el flujo de trabajo
Cargue el proyecto completado del tema Tutorial: Crear un flujo de trabajo con formularios de asociación y de iniciación en Visual Studio.
Abra el código de Workflow1.cs o Workflow1.vb (según cuál sea el lenguaje de programación).
Agregue el código siguiente al método createTask1_MethodInvoking.
createTask1_TaskProperties1.ExtendedProperties("Outcome") = workflowProperties.InitiationData
createTask1_TaskProperties1.ExtendedProperties["Outcome"] = workflowProperties.InitiationData;
Crear una página de aplicación
A continuación, agregue un objeto complexType ASPX al proyecto.Este formulario mostrará los datos obtenidos del proyecto de flujo de trabajo del informe de gastos.Para hacerlo, agregará una página de aplicación.Una página de aplicación utiliza la misma página maestra que el resto de páginas de SharePoint, lo que significa que se parece a otras páginas de sitio de SharePoint.
Para agregar una página de aplicación al proyecto
Elija el proyecto ExpenseReport y, a continuación, en la barra de menú, elija Proyecto, Agregar nuevo elemento.
En el panel de Plantillas , elija la plantilla de Página de aplicación , utilice el nombre predeterminado para el elemento de proyecto (ApplicaitonPage1.aspx), y elija el botón de Agregar .
En el código XML de ApplicationPage1.aspx, reemplace la sección PlaceHolderMain por lo siguiente:
<asp:Content ID="Main" ContentPlaceHolderID="PlaceHolderMain" runat="server"> <asp:Label ID="Label1" runat="server" Font-Bold="True" Text="Expenses that exceeded allotted amount" Font-Size="Medium"></asp:Label> <br /> <asp:Table ID="Table1" runat="server"> </asp:Table> </asp:Content>
Este código agrega una tabla a la página junto con un título.
Agregue un título a la página de aplicación reemplazando la sección PlaceHolderPageTitleInTitleArea por lo siguiente:
<asp:Content ID="PageTitleInTitleArea" ContentPlaceHolderID="PlaceHolderPageTitleInTitleArea" runat="server" > Expense Report Summary </asp:Content>
Codificar la página de aplicación
A continuación, agregue el código a la página de aplicación de resumen del informe de gastos.Al abrir la página, el código examina la lista Tareas de SharePoint para buscar los gastos que superaron el límite asignado.El informe enumera cada elemento junto con la suma de los gastos.
Para codificar la página de aplicación
Elija el nodo de *** ApplicationPage1.aspx *** y, a continuación, en la barra de menú, elija Ver, Código para mostrar el código subyacente de la página de aplicación.
Reemplace las instrucciones Import o using (dependiendo del lenguaje de programación) de la parte superior de la clase por el siguiente:
Imports System Imports Microsoft.SharePoint Imports Microsoft.SharePoint.WebControls Imports System.Collections Imports System.Data Imports System.Web.UI Imports System.Web.UI.WebControls Imports System.Web.UI.WebControls.WebParts Imports System.Drawing Imports Microsoft.SharePoint.Navigation
using System; using Microsoft.SharePoint; using Microsoft.SharePoint.WebControls; using System.Collections; using System.Data; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Drawing; using Microsoft.SharePoint.Navigation;
Agregue el código siguiente al método Page_Load:
Try ' Reference the Tasks list on the SharePoint site. ' Replace "TestServer" with a valid SharePoint server name. Dim site As SPSite = New SPSite("http://TestServer") Dim list As SPList = site.AllWebs(0).Lists("Tasks") ' string text = ""; Dim sum As Integer = 0 Table1.Rows.Clear() ' Add table headers. Dim hr As TableHeaderRow = New TableHeaderRow hr.BackColor = Color.LightBlue Dim hc1 As TableHeaderCell = New TableHeaderCell Dim hc2 As TableHeaderCell = New TableHeaderCell hc1.Text = "Expense Report Name" hc2.Text = "Amount Exceeded" hr.Cells.Add(hc1) hr.Cells.Add(hc2) ' Add the TableHeaderRow as the first item ' in the Rows collection of the table. Table1.Rows.AddAt(0, hr) ' Iterate through the tasks in the Task list and collect those ' that have values in the "Related Content" and "Outcome" fields ' - the fields written to when expense approval is required. For Each item As SPListItem In list.Items Dim s_relContent As String = "" Dim s_outcome As String = "" Try ' Task has the fields - treat as expense report. s_relContent = item.GetFormattedValue("Related Content") s_outcome = item.GetFormattedValue("Outcome") Catch erx As System.Exception ' Task does not have fields - skip it. Continue For End Try ' Convert amount to an int and keep a running total. If (Not String.IsNullOrEmpty(s_relContent) And Not String.IsNullOrEmpty(s_outcome)) Then sum = (sum + Convert.ToInt32(s_outcome)) Dim relContent As TableCell = New TableCell relContent.Text = s_relContent Dim outcome As TableCell = New TableCell outcome.Text = ("$" + s_outcome) Dim dataRow2 As TableRow = New TableRow dataRow2.Cells.Add(relContent) dataRow2.Cells.Add(outcome) Table1.Rows.Add(dataRow2) End If Next ' Report the sum of the reports in the table footer. Dim tfr As TableFooterRow = New TableFooterRow tfr.BackColor = Color.LightGreen ' Create a TableCell object to contain the ' text for the footer. Dim ftc1 As TableCell = New TableCell Dim ftc2 As TableCell = New TableCell ftc1.Text = "TOTAL: " ftc2.Text = ("$" + Convert.ToString(sum)) ' Add the TableCell object to the Cells ' collection of the TableFooterRow. tfr.Cells.Add(ftc1) tfr.Cells.Add(ftc2) ' Add the TableFooterRow to the Rows ' collection of the table. Table1.Rows.Add(tfr) Catch errx As Exception System.Diagnostics.Debug.WriteLine(("Error: " + errx.ToString)) End Try
try { // Reference the Tasks list on the SharePoint site. // Replace "TestServer" with a valid SharePoint server name. SPSite site = new SPSite("http://TestServer"); SPList list = site.AllWebs[0].Lists["Tasks"]; // string text = ""; int sum = 0; Table1.Rows.Clear(); // Add table headers. TableHeaderRow hr = new TableHeaderRow(); hr.BackColor = Color.LightBlue; TableHeaderCell hc1 = new TableHeaderCell(); TableHeaderCell hc2 = new TableHeaderCell(); hc1.Text = "Expense Report Name"; hc2.Text = "Amount Exceeded"; hr.Cells.Add(hc1); hr.Cells.Add(hc2); // Add the TableHeaderRow as the first item // in the Rows collection of the table. Table1.Rows.AddAt(0, hr); // Iterate through the tasks in the Task list and collect those // that have values in the "Related Content" and "Outcome" // fields - the fields written to when expense approval is // required. foreach (SPListItem item in list.Items) { string s_relContent = ""; string s_outcome = ""; try { // Task has the fields - treat as expense report. s_relContent = item.GetFormattedValue("Related Content"); s_outcome = item.GetFormattedValue("Outcome"); } catch { // Task does not have fields - skip it. continue; } if (!String.IsNullOrEmpty(s_relContent) && !String.IsNullOrEmpty(s_outcome)) { // Convert amount to an int and keep a running total. sum += Convert.ToInt32(s_outcome); TableCell relContent = new TableCell(); relContent.Text = s_relContent; TableCell outcome = new TableCell(); outcome.Text = "$" + s_outcome; TableRow dataRow2 = new TableRow(); dataRow2.Cells.Add(relContent); dataRow2.Cells.Add(outcome); Table1.Rows.Add(dataRow2); } } // Report the sum of the reports in the table footer. TableFooterRow tfr = new TableFooterRow(); tfr.BackColor = Color.LightGreen; // Create a TableCell object to contain the // text for the footer. TableCell ftc1 = new TableCell(); TableCell ftc2 = new TableCell(); ftc1.Text = "TOTAL: "; ftc2.Text = "$" + Convert.ToString(sum); // Add the TableCell object to the Cells // collection of the TableFooterRow. tfr.Cells.Add(ftc1); tfr.Cells.Add(ftc2); // Add the TableFooterRow to the Rows // collection of the table. Table1.Rows.Add(tfr); } catch (Exception errx) { System.Diagnostics.Debug.WriteLine("Error: " + errx.ToString()); }
Precaución Asegúrese de reemplazar “TestServer” en el código con el nombre de un servidor válido que ejecute SharePoint.
Probar la página de aplicación
A continuación, determine si la página de aplicación muestra los datos de gastos correctamente.
Para probar la página de aplicación
Elija la tecla F5 para ejecutar e implementar el proyecto en SharePoint.
Elija el botón de Inicio , y elija el vínculo de Documentos compartidos en la barra de inicio rápido para mostrar documentos compartidos en el sitio de SharePoint.
Para representar los informes de gastos para este ejemplo, cargue algunos nuevos documentos en la lista documentos eligiendo el vínculo de Documentos en la pestaña de *** LibraryTools *** en la parte superior de la página y después elegir el botón de Cargar documento en la cinta de opciones de la herramienta.
Después de cargar algunos documentos, cree instancias del flujo de trabajo eligiendo el vínculo de Biblioteca en la pestaña de *** LibraryTools *** en la parte superior de la página y después elegir el botón de *** Valores de biblioteca *** en la cinta de opciones de la herramienta.
En la página de *** Configuración de la biblioteca de documentos *** , elija el vínculo de *** Valores de flujo de trabajo *** en la sección de *** permisos y administración *** .
En la página de *** Valores de flujo de trabajo *** , elija el vínculo de *** agregue un flujo de trabajo *** .
En la página de *** agregue un flujo de trabajo *** , elija el flujo de trabajo de *** ExpenseReport - Workflow1 *** , escriba un nombre para el flujo de trabajo, como ExpenseTest, y elija el botón de Siguiente .
Aparece el formulario de asociación del flujo de trabajo.Utilícelo para notificar la cantidad de límite de gastos.
En el formulario de asociación, escriba en 1000 en el cuadro de *** Límite auto de aprobación *** , y elija el botón de Asociar flujo de trabajo .
Elija el botón de Inicio para volver a la página principal de SharePoint.
Elija el vínculo de Documentos compartidos en la barra de inicio rápido.
Elija uno de los documentos cargados para mostrar una flecha de lista desplegable, elija y, a continuación elija el elemento de Flujos de trabajo .
Elija la imagen junto a ExpenseTest para mostrar el formulario de Iniciación de flujo de trabajo.
En el cuadro de texto de *** Total de gastos *** , especifique un valor mayor que 1000, y elija el botón de Iniciar flujo de trabajo .
Cuando un gasto supera la cantidad de gasto asignada, se agrega una tarea a la lista Tareas.Una columna denominada ExpenseTest con el valor Completado también se agrega al elemento de informe de gastos en la lista Documentos compartidos.
Repita los pasos 11 a 13 con otros documentos de la lista Documentos compartidos.(El número exacto de documentos no es importante).
Muestre la página de aplicación de resumen del informe de gastos abriendo la dirección URL siguiente en un explorador web: http://NombreSistema/_layouts/ExpenseReport/ApplicationPage1.aspx.
La página de resumen del informe de gastos enumera todos los informes de gastos que superan la cantidad asignada, la cantidad en que la superan y la cantidad total de todos los informes.
Pasos siguientes
Para obtener más información sobre las páginas de aplicación de SharePoint, vea Crear páginas de aplicación para SharePoint.
En los temas siguientes puede obtener más información sobre cómo diseñar el contenido de las páginas de SharePoint con el diseñador web visual en Visual Studio:
Vea también
Tareas
Tutorial: Crear un flujo de trabajo con formularios de asociación y de iniciación
Cómo: Crear una página de aplicación