Dieser Artikel wurde noch nicht bewertet - Dieses Thema bewerten.

Exemplarische Vorgehensweise: Erstellen einer benutzerdefinierten Websiteworkflowaktivität

In dieser exemplarischen Vorgehensweise wird veranschaulicht, wie mit Visual Studio eine benutzerdefinierte Aktivität für einen Workflow auf Websiteebene erstellt wird. (Workflows auf Websiteebene gelten für die gesamte Website und nicht nur für eine Liste der Website.) Die benutzerdefinierte Aktivität erstellt eine Sicherungskopie der Ankündigungsliste, in die dann der Inhalt der Ankündigungsliste kopiert wird.

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 aus einer Liste in eine andere.

  • Anzeigen einer Liste auf der Schnellstartleiste.

HinweisHinweis

Ihr Computer zeigt möglicherweise für einige der Elemente der Visual Studio-Benutzeroberfläche in der folgenden Anleitung andere Namen oder Standorte an. Diese Elemente sind von der jeweiligen Visual Studio-Version und den verwendeten Einstellungen abhängig. Weitere Informationen finden Sie unter Visual Studio-Einstellungen.

Zum Durchführen dieser exemplarischen Vorgehensweise benötigen Sie die folgenden Komponenten:

Erstellen Sie zunächst ein Projekt, um die benutzerdefinierte Workflowaktivität zu speichern und zu testen.

So erstellen Sie ein benutzerdefiniertes Websiteworkflow-Aktivitätsprojekt

  1. Zeigen Sie das Dialogfeld Neues Projekt an, indem Sie im Menü Datei auf Neu zeigen und dann auf Neues Projekt klicken.

  2. Erweitern Sie unter Visual C# oder Visual Basic den Knoten SharePoint, und klicken Sie dann auf 2010.

  3. Wählen Sie im Bereich Vorlagen die Vorlage Sequenzieller Workflow aus.

  4. Geben Sie im Feld Name den Namen "AnnouncementBackup" ein, und klicken Sie dann auf OK.

    Der Assistent zum Anpassen von SharePoint wird angezeigt.

  5. Klicken Sie auf der Seite Welche lokale Website soll zum Debuggen verwendet werden? auf Weiter, um die Standardsite zu übernehmen.

    In diesem Schritt wird auch die Vertrauensebene für die Lösung als Farmlösung festgelegt, wobei es sich um die einzige verfügbare Option für Workflowprojekte handelt.

  6. Akzeptieren Sie auf der Seite Workflownamen für das Debugging angeben den Standardnamen (AnnouncementBackup - Workflow1). Ändern Sie den Workflowvorlagentyp in Websiteworkflow, und klicken Sie dann auf Weiter.

  7. Klicken Sie auf Fertig stellen, um die verbleibenden Standardeinstellungen zu akzeptieren.

Fügen Sie dem Projekt danach eine Klasse hinzu, die den Code für die benutzerdefinierte Workflowaktivität enthalten soll.

So fügen Sie eine benutzerdefinierte Workflowaktivitätsklasse hinzu

  1. Klicken Sie im Menü Projekt auf Neues Element hinzufügen, um das Dialogfeld Neues Element hinzufügen anzuzeigen.

  2. Klicken Sie in der Strukturansicht Installierte Vorlagen auf den Knoten Code, und klicken Sie dann in der Liste der Projektelementvorlagen auf Klasse. Verwenden Sie den Standardnamen Class1.

  3. Ersetzen Sie den gesamten Code in Class1 durch den folgenden Code:

    
    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 klicken Sie dann im Menü Erstellen auf Projektmappe erstellen.

    Class1 wird in der Toolbox unter der Registerkarte SharePoint-Workflow als benutzerdefinierte Aktion angezeigt.

Fügen Sie dem Workflow danach eine Aktivität hinzu, die den benutzerdefinierten Code enthalten soll.

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

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

  2. Klicken Sie in der Toolbox auf Class1, ziehen Sie Class1, und legen Sie Class1 unter der onWorkflowActivated1-Aktivität ab.

  3. Speichern Sie das Projekt.

Führen Sie danach das Projekt aus, und starten Sie den Websiteworkflow. Die benutzerdefinierte Aktivität erstellt eine Sicherungskopie der Ankündigungsliste, in die dann der Inhalt der aktuellen Ankündigungsliste kopiert wird. Der Code überprüft vor dem Erstellen einer Sicherungsliste auch, ob bereits eine vorhanden ist. Wenn bereits eine Sicherungsliste vorhanden ist, wird diese gelöscht. Im Code wird außerdem auf der Schnellstartleiste der SharePoint-Website ein Link zur neuen Liste hinzugefügt.

So testen Sie die benutzerdefinierte Websiteworkflowaktivität

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

  2. Klicken Sie auf der Schnellstartleiste auf Listen, um alle in der SharePoint-Website verfügbaren Listen anzuzeigen. Beachten Sie, dass für Ankündigungen nur eine Liste mit dem Namen Ankündigungen vorhanden ist.

  3. Klicken Sie am oberen Rand der SharePoint-Webseite auf die Schaltfläche Websiteaktionen und dann auf Websiteworkflows.

  4. Klicken Sie unter dem Abschnitt Neuen Workflow starten auf den Link für AnnouncementBackup - Workflow1. Hiermit wird der Websiteworkflow gestartet und der Code in der benutzerdefinierten Aktion ausgeführt.

  5. Klicken Sie auf den Link mit dem Namen AnnouncementBackup, der auf der Schnellstartleiste angezeigt wird. Beachten Sie, dass alle in der Liste Ankündigungen enthaltenen Ankündigungen in diese neue Liste kopiert wurden.

Fanden Sie dies hilfreich?
(1500 verbleibende Zeichen)
Vielen Dank für Ihr Feedback.

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2014 Microsoft. Alle Rechte vorbehalten.