Freigeben über


Exemplarische Vorgehensweise: Erstellen einer benutzerdefinierten Aktivität für einen Websiteworkflow

In dieser exemplarischen Vorgehensweise wird gezeigt, wie Sie mithilfe von Visual Studio eine benutzerdefinierte Aktivität für einen Workflow auf Websiteebene erstellen. (Workflows auf Websiteebene gelten für die gesamte Website, nicht nur für eine Liste auf der Website.) Die benutzerdefinierte Aktivität erstellt eine Liste zur Sicherung von Ankündigungen und kopiert dann den Inhalt der Ankündigungsliste in diese Liste.

Diese exemplarische Vorgehensweise enthält die folgenden Aufgaben:

  • Erstellen eines Workflows auf Websiteebene

  • Erstellen einer benutzerdefinierten Workflowaktivität

  • Erstellen und Löschen einer SharePoint-Liste

  • Kopieren von Elementen zwischen Listen

  • Anzeigen einer Liste auf der Schnellstartleiste

    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:

  • Unterstützte Editionen von Microsoft Windows und SharePoint.

  • Visual Studio.

Erstellen eines Projekts für eine benutzerdefinierte Aktivität für einen Websiteworkflow

Erstellen Sie zunächst ein Projekt, in dem Sie die benutzerdefinierte Workflowaktivität speichern und testen können.

So erstellen Sie ein Projekt für eine benutzerdefinierte Aktivität für einen Websiteworkflow

  1. Wählen Sie auf der Menüleiste Datei>Neu>Projekt aus, um das Dialogfeld Neues Projekt anzuzeigen.

  2. Erweitern Sie unter Visual C# oder Visual Basic den Knoten SharePoint, und wählen Sie dann den Knoten 2010 aus.

  3. Wählen Sie im Vorlagenbereich die Vorlage SharePoint 2010-Projekt aus.

  4. Geben Sie AnnouncementBackup im Feld Name ein, und wählen Sie dann die Schaltfläche OK aus.

    Der Assistent zum Anpassen von SharePoint wird angezeigt.

  5. Wählen Sie auf der Seite Website und Sicherheitsebene für Debuggen angeben die Optionsschaltfläche Als Farmlösung bereitstellen und dann die Schaltfläche Fertig stellen aus, um die Vertrauensstufe und die Standardwebsite zu akzeptieren.

    In diesem Schritt wird die Vertrauensebene für die Projektmappe als Farmlösung festgelegt, die einzige verfügbare Option für Workflowprojekte.

  6. Wählen Sie im Projektmappen-Explorer den Projektknoten und dann auf der Menüleiste Projekt>Neues Element hinzufügen aus.

  7. Erweitern Sie unter Visual C# oder Visual Basic den Knoten SharePoint, und wählen Sie dann den Knoten 2010 aus.

  8. Wählen Sie im Bereich Vorlagen die Vorlage Sequenzieller Workflow (nur Farmlösung) und dann die Schaltfläche Hinzufügen aus.

    Der Assistent zum Anpassen von SharePoint wird angezeigt.

  9. Übernehmen Sie auf der Seite Workflownamen für das Debuggen angeben den Standardnamen (AnnouncementBackup – Workflow1). Ändern Sie den Workflowvorlagentyp in Websiteworkflow, und wählen Sie dann die Schaltfläche Weiter aus.

  10. Wählen Sie die Schaltfläche Fertig stellen aus, um für die übrigen Einstellungen die Standardwerte zu übernehmen.

Hinzufügen einer Klasse für die benutzerdefinierte Workflowaktivität

Fügen Sie als Nächstes dem Projekt eine Klasse hinzu, die den Code für die benutzerdefinierte Workflowaktivität aufnimmt.

So fügen Sie eine Klasse für die benutzerdefinierte Workflowaktivität hinzu

  1. Wählen Sie auf der Menüleiste Projekt>Neues Element hinzufügen aus, um das Dialogfeld Neues Element hinzufügen zu öffnen.

  2. Wählen Sie in der Strukturansicht Installierte Vorlagen den Knoten Code und dann in der Liste der Projektelementvorlagen die Vorlage Klasse aus. Verwenden Sie den Standardnamen „Class1“. Wählen Sie die Schaltfläche Hinzufügen aus.

  3. Ersetzen Sie den Code in Class1 durch Folgendes:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using Microsoft.SharePoint;
    
    namespace AnnouncementBackup
    {
        // This custom activity will back up all of the announcements in 
        // the Announcements list on the SharePoint site.
        public class Class1 : System.Workflow.ComponentModel.Activity
            {
            public Class1()
            { }
            
            // Triggers when the activity is executed.
            protected override System.Workflow.ComponentModel.ActivityExecutionStatus Execute(System.Workflow.ComponentModel.ActivityExecutionContext executionContext)
            {
                try
                {
                    // Get a reference to the SharePoint site.
                    SPSite site = new SPSite("http://" + System.Environment.MachineName);
                    SPWeb web = site.OpenWeb("/");
    
                    // Reference the original Announcements list.
                    SPList aList = web.GetList("/Lists/Announcements");
    
                    // If the Announcements Backup list already exists, delete it.
                    try
                    {
                        SPList bList = web.GetList("/Lists/Announcements Backup");
                        bList.Delete();
                    }
                    catch
                    { }
    
                    // Create a new backup Announcements list and reference it.
                    Guid newAnnID = web.Lists.Add("Announcements Backup", "A backup Announcements list.", SPListTemplateType.Announcements);
                    SPList bakList = web.Lists[newAnnID];
    
                    // Copy announcements from original to backup Announcements list.
                    foreach (SPListItem item in aList.Items)
                    {
                        SPListItem newAnnItem = bakList.Items.Add();
                        foreach (SPField field in aList.Fields)
                        {
                            if (!field.ReadOnlyField)
                                newAnnItem[field.Id] = item[field.Id];
                        }
                        newAnnItem.Update();
                    }
    
                    // Put the Backup Announcements list on the QuickLaunch bar.
                    bakList.OnQuickLaunch = true;
                    bakList.Update();
    
                }
    
                catch (Exception errx)
                {
                    System.Diagnostics.Debug.WriteLine("Error: " + errx.ToString());
                }
                
                return base.Execute(executionContext);
            }
    
    
        }
    }
    
  4. Speichern Sie das Projekt, und wählen Sie dann auf der Menüleiste Erstellen>Projektmappe erstellen aus.

    Class1 wird in der Toolbox auf der Registerkarte Komponenten von AnnouncementBackup als benutzerdefinierte Aktion angezeigt.

Hinzufügen der benutzerdefinierten Aktivität zum Websiteworkflow

Fügen Sie als Nächstes dem Workflow eine Aktivität hinzu, die den benutzerdefinierten Code enthält.

So fügen Sie dem Websiteworkflow eine benutzerdefinierte Aktivität hinzu

  1. Öffnen Sie Workflow1 im Workflow-Designer in der Entwurfsansicht.

  2. Ziehen Sie Class1 aus der Toolbox unter die onWorkflowActivated1-Aktivität, oder öffnen Sie das Kontextmenü für Class1, wählen Sie Kopieren aus, öffnen Sie das Kontextmenü für die Zeile unter der onWorkflowActivated1-Aktivität, und wählen Sie dann Einfügen aus.

  3. Speichern Sie das Projekt.

Testen der benutzerdefinierten Aktivität für den Websiteworkflow

Führen Sie als Nächstes das Projekt aus, und starten Sie den Websiteworkflow. Die benutzerdefinierte Aktivität erstellt eine Liste mit Ankündigungssicherungen und kopiert den Inhalt aus der aktuellen Ankündigungsliste in diese. Der Code überprüft auch, ob bereits eine Sicherungsliste vorhanden ist, bevor eine erstellt wird. Wenn bereits eine Sicherungsliste vorhanden ist, wird sie gelöscht. Der Code fügt auch einen Link zur neuen Liste auf der Schnellstartleiste der SharePoint-Website hinzu.

So testen Sie die benutzerdefinierte Aktivität für den Websiteworkflow

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

  2. Wählen Sie auf der Schnellstartleiste den Link Listen aus, um alle Listen anzuzeigen, die auf der SharePoint-Website verfügbar sind. Beachten Sie, dass nur eine Liste für Ankündigungen mit dem Namen Announcements (Ankündigungen) vorhanden ist.

  3. Wählen Sie oben auf der SharePoint-Webseite den Link Websiteworkflows aus.

  4. Wählen Sie im Abschnitt „Neuen Workflow starten“ den Link AnnouncementBackup – Workflow1 aus. Dadurch wird der Websiteworkflow gestartet und der Code in der benutzerdefinierten Aktion ausgeführt.

  5. Wählen Sie auf der Schnellstartleiste den Link für die Ankündigungssicherung aus. Beachten Sie, dass alle Ankündigungen, die in der Liste Announcements (Ankündigungen) enthalten sind, in diese neue Liste kopiert wurden.