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:
Edizioni supportate di Microsoft Windows e SharePoint. Per ulteriori informazioni, vedere Requisiti per lo sviluppo di soluzioni SharePoint.
Visual Studio 2010.
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
Visualizzare la finestra di dialogo Nuovo progetto selezionando Nuovo nel menu File, quindi fare clic su Nuovo progetto.
Espandere il nodo SharePoint sotto Visual C# o Visual Basic, quindi fare clic su 2010.
Nel riquadro Modelli selezionare Flusso di lavoro sequenziale.
Nella casella di testo Nome digitare AnnouncementBackup e fare clic su OK.
Viene visualizzata la Personalizzazione guidata SharePoint.
Nella pagina Selezionare il sito locale da utilizzare per il debug fare clic su Avanti per accettare il sito predefinito.
Questo passaggio consente anche di impostare il livello di attendibilità per la soluzione come soluzione della farm, ovvero l'unica opzione disponibile per i progetti flusso di lavoro.
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 in Flusso di lavoro sito, quindi fare clic su Avanti.
Scegliere 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
Fare clic su Aggiungi nuovo elemento nel menu Progetto per visualizzare la finestra di dialogo Aggiungi nuovo elemento.
Nella visualizzazione struttura ad albero Modelli installati fare clic sul nodo Codice, quindi selezionare Classe nell'elenco di modelli di elementi di progetto. Utilizzare il nome predefinito Class1.
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); } } }
Salvare il progetto, quindi scegliere Compila soluzione dal menu Compilazione.
La classe Class1 viene visualizzata come un'azione personalizzata nella Casella degli strumenti sotto la scheda Flusso di lavoro di SharePoint.
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
Aprire Workflow1 in Progettazione flussi di lavoro nella visualizzazione Progettazione.
Selezionare e trascinare Class1 dalla casella degli strumenti all'attività onWorkflowActivated1.
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
Premere F5 per eseguire e distribuire il progetto in SharePoint.
Nella barra Avvio veloce fare clic su Elenchi per visualizzare tutti gli elenchi disponibili nel sito di SharePoint. Notare che è presente un solo elenco per gli annunci denominato Annunci.
Nella parte superiore della pagina Web di SharePoint fare clic sul pulsante Azioni sito, quindi scegliere Flussi di lavoro sito.
Nella sezione Avvio di un nuovo flusso di lavoro fare clic sul collegamento per AnnouncementBackup - Workflow1. Questa operazione comporta l'avvio del flusso di lavoro del sito e l'esecuzione del codice nell'azione personalizzata.
Fare clic sul collegamento denominato Backup annunci presente sulla barra Avvio veloce. 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