Freigeben über


Exemplarische Vorgehensweise: Hinzufügen einer Anwendungsseite zu einem Workflow

In dieser exemplarischen Vorgehensweise wird gezeigt, wie Sie einem Workflowprojekt eine Anwendungsseite hinzufügen, die aus einem Workflow abgeleitete Daten anzeigt. Es baut auf dem Projekt auf, das im folgenden Thema beschrieben wird: Exemplarische Vorgehensweise: Erstellen eines Workflows mit Zuordnungs- und Initiierungsformularen.

Diese exemplarische Vorgehensweise enthält die folgenden Aufgaben:

  • Hinzufügen einer ASPX-Anwendungsseite zu einem SharePoint-Workflowprojekt

  • Abrufen von Daten aus dem Workflowprojekt und Bearbeiten dieser Daten

  • Anzeigen von Daten in einer Tabelle auf der Anwendungsseite

    Hinweis

    Auf Ihrem Computer werden möglicherweise andere Namen oder Speicherorte für die Benutzeroberflächenelemente von Visual Studio angezeigt als die in den folgenden Anweisungen aufgeführten. Diese Elemente sind von der jeweiligen Visual Studio-Version und den verwendeten Einstellungen abhängig. Weitere Informationen finden Sie unter Personalisieren der IDE.

Voraussetzungen

Zum Abschließen dieser exemplarischen Vorgehensweise benötigen Sie Folgendes:

Ändern des Workflowcodes

Fügen Sie zunächst eine Codezeile in den Workflow ein, um den Wert der Ergebnisspalte („Outcome“) auf den Betrag der Spesenabrechnung festzulegen. Dieser Wert wird später bei der Berechnung der Spesenabrechnung verwendet.

So legen Sie den Wert der Ergebnisspalte im Workflow fest

  1. Laden Sie das fertige Projekt aus dem Thema Exemplarische Vorgehensweise: Erstellen eines Workflows mit Zuordnungs- und Initiierungsformularen in Visual Studio.

  2. Öffnen Sie den Code für Workflow1.cs oder Workflow1.vb (je nach verwendeter Programmiersprache).

  3. Fügen Sie am Ende der createTask1_MethodInvoking-Methode den folgenden Code hinzu:

    createTask1_TaskProperties1.ExtendedProperties["Outcome"] =
      workflowProperties.InitiationData;
    

Erstellen einer Anwendungsseite

Als Nächstes fügen Sie dem Projekt ein ASPX-Formular hinzu. Dieses Formular zeigt Daten an, die aus dem Workflowprojekt zur Spesenabrechnung stammen. Dazu fügen Sie eine Anwendungsseite hinzu. Eine Anwendungsseite verwendet dieselbe Masterseite wie andere SharePoint-Seiten, d. h. sie ähnelt anderen Seiten auf der SharePoint-Website.

So fügen Sie dem Projekt eine Anwendungsseite hinzu

  1. Wählen Sie das Projekt „ExpenseReport“ und dann in der Menüleiste die Optionen Projekt>Neues Element hinzufügen aus.

  2. Wählen Sie im Bereich Vorlagen die Vorlage Anwendungsseite aus, übernehmen Sie den Standardnamen für das Projektelement (ApplicationPage1.aspx), und klicken Sie auf die Schaltfläche Hinzufügen.

  3. Ersetzen Sie im XML-Code von „ApplicationPage1.aspx“ den Abschnitt PlaceHolderMain durch Folgendes:

    <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>
    

    Dieser Code fügt der Seite eine Tabelle zusammen mit einem Titel hinzu.

  4. Fügen Sie der Anwendungsseite einen Titel hinzu, indem Sie den Abschnitt PlaceHolderPageTitleInTitleArea durch den folgenden ersetzen:

    <asp:Content ID="PageTitleInTitleArea" ContentPlaceHolderID="PlaceHolderPageTitleInTitleArea" runat="server" >
        Expense Report Summary
    </asp:Content>
    

Codieren der Anwendungsseite

Als Nächstes fügen Sie der Anwendungsseite für die Zusammenfassung der Spesenabrechnung Code hinzu. Beim Öffnen der Seite überprüft der Code die Aufgabenliste in SharePoint auf Ausgaben, bei denen das zugewiesene Ausgabenlimit überschritten wurde. Der Bericht listet jeden Posten zusammen mit der Summe der Ausgaben auf.

So codieren Sie die Anwendungsseite

  1. Wählen Sie den Knoten ApplicationPage1.aspx aus, und klicken Sie dann in der Menüleiste auf Ansicht>Code, um den Code hinter der Anwendungsseite anzuzeigen.

  2. Ersetzen Sie (je nach verwendeter Programmiersprache) die Anweisungen using oder Import am Anfang der Klasse durch die folgenden:

    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;
    
  3. Fügen Sie der Page_Load-Methode folgenden Code hinzu:

    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());
    }
    

    Warnung

    Ersetzen Sie „TestServer“ im Code durch den Namen eines gültigen Servers, auf dem SharePoint ausgeführt wird.

Testen der Anwendungsseite

Überprüfen Sie als Nächstes, ob die Anwendungsseite die Ausgabendaten korrekt anzeigt.

So testen Sie die Anwendungsseite

  1. Drücken Sie F5, um das Projekt auszuführen und in SharePoint bereitzustellen.

  2. Klicken Sie auf die Schaltfläche Start und dann auf die Verknüpfung Gemeinsame Dokumente in der Schnellstartleiste, um die Liste „Gemeinsame Dokumente“ für die SharePoint-Website anzuzeigen.

  3. Zur Darstellung von Spesenabrechnungen für dieses Beispiel laden Sie einige neue Dokumente in die Liste hoch, indem Sie oben auf der Seite auf der Registerkarte Bibliothekstools den Link Dokumente auswählen und dann in der Symbolleiste auf die Schaltfläche Dokument hochladen klicken.

  4. Nachdem Sie einige Dokumente hochgeladen haben, instanziieren Sie den Workflow, indem Sie oben auf der Seite auf der Registerkarte Bibliothekstools den Link Bibliothek auswählen und dann im Menüband auf die Schaltfläche Bibliothekseinstellungen klicken.

  5. Wählen Sie auf der Seite Dokumentbibliothekseinstellungen im Abschnitt Berechtigungen und Verwaltung den Link Workfloweinstellungen aus.

  6. Wählen Sie auf der Seite Workfloweinstellungen den Link Workflow hinzufügen aus.

  7. Wählen Sie auf der Seite Workflow hinzufügen den Workflow ExpenseReport – Workflow1 aus, geben Sie einen Namen für den Workflow ein (z. B. ExpenseTest), und klicken Sie dann auf die Schaltfläche Weiter.

    Das Formular „Workflowzuordnung“ wird angezeigt. Verwenden Sie es, um das Ausgabenlimit zu melden.

  8. Geben Sie im Zuordnungsformular in das Feld Automatisches Genehmigungslimit den Wert 1000 ein, und klicken Sie dann auf die Schaltfläche Workflow zuordnen.

  9. Wählen Sie die Schaltfläche Start aus, um zur SharePoint-Startseite zurückzukehren.

  10. Wählen Sie auf der Schnellstartleiste den Link Freigegebene Dokumente aus.

  11. Zeigen Sie auf eines der hochgeladenen Dokumente, um einen Dropdownpfeil anzuzeigen, klicken Sie darauf, und wählen Sie dann das Element Workflows aus.

  12. Wählen Sie das Bild neben „ExpenseTest“ aus, um das Formular zur Workflowinitiierung anzuzeigen.

  13. Geben Sie in das Textfeld Ausgaben gesamt einen Wert ein, der größer als 1000 ist, und klicken Sie dann auf die Schaltfläche Workflow starten.

    Wenn eine gemeldete Ausgabe den zugewiesenen Ausgabenbetrag überschreitet, wird eine Aufgabe zur Aufgabenliste hinzugefügt. Außerdem wird dem Spesenabrechnungselement in der Liste „Freigegebene Dokumente“ eine Spalte mit dem Namen ExpenseTest und dem Wert Erledigt hinzugefügt.

  14. Wiederholen Sie die Schritte 11 bis 13 mit anderen Dokumenten in der Liste „Freigegebene Dokumente“: (Die genaue Anzahl der Dokumente ist nicht wichtig.)

  15. Zeigen Sie die Anwendungsseite mit der Zusammenfassung der Spesenabrechnung an, indem Sie die folgende URL in einem Webbrowser öffnen: http://SystemName/_layouts/ExpenseReport/ApplicationPage1.aspx.

    Auf der Seite mit der Zusammenfassung der Spesenabrechnungen werden alle Spesenabrechnungen, die den zugewiesenen Betrag überschritten haben, der Überschreitungsbetrag und der Gesamtbetrag für alle Berichte aufgelistet.