Condividi tramite


Procedura dettagliata: creare un'attività personalizzata per un flusso di lavoro del sito

In questa procedura dettagliata viene illustrato come creare un'attività personalizzata per un flusso di lavoro a livello di sito utilizzando Visual Studio.I flussi di lavoro a livello di sito si applicano a tutto il sito, non solo a un relativo elenco. L'attività personalizzata consente di creare un elenco Annunci di backup e successivamente di copiarvi il contenuto dell'elenco originale.

In questa procedura dettagliata vengono illustrate le attività seguenti:

  • Creazione di un flusso di lavoro a livello di sito.

  • Creazione di un'attività di flusso di lavoro personalizzata.

  • Creazione ed eliminazione di un elenco di SharePoint.

  • Copia di elementi da un elenco a un altro.

  • Visualizzazione di un elenco nella barra Avvio veloce.

[!NOTA]

Nel computer in uso è possibile che vengano visualizzati nomi o percorsi diversi per alcuni elementi dell'interfaccia utente di Visual Studio nelle istruzioni seguenti. La versione di Visual Studio in uso e le impostazioni configurate determinano questi elementi. Per ulteriori informazioni vedere Impostazioni di Visual Studio.

Prerequisiti

Per completare la procedura dettagliata, è necessario disporre dei componenti seguenti:

Creazione di un progetto di attività personalizzata per un flusso di lavoro del sito

Creare un progetto per gestire e testare l'attività personalizzata per un flusso di lavoro.

Per creare un progetto di attività personalizzata per un flusso di lavoro del sito

  1. Sulla barra dei menu, scegliere File, Nuovo, Progetto per visualizzare la finestra di dialogo Nuovo progetto.

  2. Espandere il nodo SharePoint in Visual C# o Visual Basicquindi selezionare il nodo 2010.

  3. Nel riquadro Modelli, scegliere il modello Progetto SharePoint 2010.

  4. Nella casella Nome, immettere AnnouncementBackup e quindi scegliere il pulsante OK.

    Viene visualizzata la Personalizzazione guidata SharePoint.

  5. Nella pagina Specificare il sito e il livello di sicurezza per il debug, scegliere il pulsante di opzione Distribuisci come soluzione farm quindi scegliere il pulsante Fine per accettare il livello di attendibilità e il sito predefinito.

    Questo passaggio consente di impostare il livello di attendibilità per la soluzione come soluzione della farm, ovvero l'unica opzione disponibile per i progetti flusso di lavoro.

  6. In Esplora soluzioni, selezionare il nodo del progetto, quindi sulla barra dei menu, scegliere Progetto, Aggiungi nuovo elemento.

  7. In Visual C# o Visual Basic, espandere il nodo SharePoint quindi selezionare il nodo 2010.

  8. Nel riquadro Modelli, scegliere il modello Flusso di lavoro sequenziale (solo soluzione farm) quindi scegliere il pulsante Aggiungi.

    Viene visualizzata la Personalizzazione guidata SharePoint.

  9. Nella pagina Specificare il nome del flusso di lavoro per il debug, accettare il nome predefinito (AnnouncementBackup - Workflow1).Modificare il tipo di modello di flusso di lavoro a Flusso di lavoro sitoquindi scegliere il pulsante Avanti.

  10. Scegliere il pulsante Fine per accettare le impostazioni predefinite rimanenti.

Aggiunta di una classe di attività personalizzata per un flusso di lavoro

Aggiungere al progetto una classe in cui sarà contenuto il codice per l'attività personalizzata del flusso di lavoro.

Per aggiungere una classe di attività personalizzata per un flusso di lavoro

  1. Sulla barra dei menu, scegliere Progetto, Aggiungi nuovo elemento per visualizzare la finestra di dialogo Aggiungi nuovo elemento.

  2. Nella visualizzazione struttura ad albero Modelli installati, selezionare il nodo Codice quindi scegliere il modello Classe nell'elenco di modelli di elementi di progetto.Utilizzare il nome predefinito Class1.Scegliere il pulsante Aggiungi.

  3. Sostituire tutto il codice in Class1 con quanto riportato di seguito:

    Imports System
    Imports System.Collections.Generic
    Imports System.Linq
    Imports System.Text
    Imports 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
            Inherits System.Workflow.ComponentModel.Activity
            Public Sub New()
                MyBase.New()
            End Sub
    
            ' Triggers when the activity is executed.
            Protected Overrides Function Execute(ByVal executionContext As System.Workflow.ComponentModel.ActivityExecutionContext) As System.Workflow.ComponentModel.ActivityExecutionStatus
                Try
                    ' Get a reference to the SharePoint site.
                    Dim site As SPSite = New SPSite(("http://" + System.Environment.MachineName))
                    Dim web As SPWeb = site.OpenWeb("/")
                    ' Reference the original Announcements list.
                    Dim aList As SPList = web.GetList("/Lists/Announcements")
                    ' If the Announcements Backup list already exists, delete it.
                    Try
                        Dim bList As SPList = web.GetList("/Lists/Announcements Backup")
                        bList.Delete()
                    Catch
                    End Try
                    ' Create a new backup Announcements list and reference it.
                    Dim newAnnID As Guid = web.Lists.Add("Announcements Backup", "A backup Announcements list.", SPListTemplateType.Announcements)
                    Dim bakList As SPList = web.Lists(newAnnID)
                    ' Copy announcements from original to backup Announcements list.
                    For Each item As SPListItem In aList.Items
                        Dim newAnnItem As SPListItem = bakList.Items.Add
                        For Each field As SPField In aList.Fields
                            If Not field.ReadOnlyField Then
                                newAnnItem(field.Id) = item(field.Id)
                            End If
                        Next
                        newAnnItem.Update()
                    Next
                    ' Put the Backup Announcements list on the QuickLaunch bar.
                    bakList.OnQuickLaunch = True
                    bakList.Update()
                Catch errx As Exception
                    System.Diagnostics.Debug.WriteLine(("Error: " + errx.ToString))
                End Try
                Return MyBase.Execute(executionContext)
            End Function
        End Class
    End Namespace
    
    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. Salvare il progetto, quindi sulla barra dei menu, scegliere Compila, Compila soluzione.

    Class1 viene visualizzato come azione personalizzata in Casella degli strumenti nella scheda AnnouncementBackup Components.

Aggiunta dell'attività personalizzata al flusso di lavoro del sito

Aggiungere al flusso di lavoro un'attività in cui sarà contenuto il codice personalizzato.

Per aggiungere un'attività personalizzata al flusso di lavoro del sito

  1. Aprire Workflow1 in Progettazione flussi di lavoro nella visualizzazione Progettazione.

  2. Trascinare Class1 da Casella degli strumenti in modo che venga visualizzata sotto l'attività onWorkflowActivated1, o aprire il menu di scelta rapida per Class1, scegliere Copia, aprire il menu di scelta rapida per la riga sotto l'attività onWorkflowActivated1 quindi scegliere Incolla.

  3. Salvare il progetto.

Test dell'attività personalizzata per un flusso di lavoro del sito

Eseguire il progetto e avviare il flusso di lavoro del sito.L'attività personalizzata consente di creare un elenco Annunci di backup e di copiarvi il contenuto dell'elenco originale.Il codice permette inoltre di controllare se è già presente un elenco di backup prima di creare uno;in tal caso l'elenco viene eliminato.Il codice consente anche di aggiungere un collegamento al nuovo elenco nella barra Avvio veloce del sito di SharePoint.

Per testare l'attività personalizzata per un flusso di lavoro del sito

  1. Scegliere il tasto F5 per eseguire il progetto e per distribuirlo in SharePoint.

  2. Nella barra avvio veloce, scegliere il collegamento Elenchi per visualizzare tutti gli elenchi disponibili nel sito di SharePoint.Notare che è presente un solo elenco per gli annunci denominato Annunci.

  3. Nella parte superiore della pagina Web di SharePoint, scegliere il collegamento Flussi di lavoro sito.

  4. Nella sezione avvio di un nuovo flusso di lavoro, scegliere il collegamento AnnouncementBackup – Workflow1.Questa operazione comporta l'avvio del flusso di lavoro del sito e l'esecuzione del codice nell'azione personalizzata.

  5. Nella barra avvio veloce, scegliere il collegamento Backup annunci.Notare che tutti gli annunci contenuti nell'elenco Annunci sono stati copiati in questo nuovo elenco.

Vedere anche

Attività

Procedura: creare un ricevitore di eventi

Altre risorse

Sviluppo di soluzioni SharePoint