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.
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
Sulla barra dei menu, scegliere File, Nuovo, Progetto per visualizzare la finestra di dialogo Nuovo progetto.
Espandere il nodo SharePoint in Visual C# o Visual Basicquindi selezionare il nodo 2010.
Nel riquadro Modelli, scegliere il modello Progetto SharePoint 2010.
Nella casella Nome, immettere AnnouncementBackup e quindi scegliere il pulsante OK.
Viene visualizzata la Personalizzazione guidata SharePoint.
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.
In Esplora soluzioni, selezionare il nodo del progetto, quindi sulla barra dei menu, scegliere Progetto, Aggiungi nuovo elemento.
In Visual C# o Visual Basic, espandere il nodo SharePoint quindi selezionare il nodo 2010.
Nel riquadro Modelli, scegliere il modello Flusso di lavoro sequenziale (solo soluzione farm) quindi scegliere il pulsante Aggiungi.
Viene visualizzata la Personalizzazione guidata SharePoint.
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.
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
Sulla barra dei menu, scegliere Progetto, Aggiungi nuovo elemento per visualizzare la finestra di dialogo Aggiungi nuovo elemento.
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.
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 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
Aprire Workflow1 in Progettazione flussi di lavoro nella visualizzazione Progettazione.
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.
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
Scegliere il tasto F5 per eseguire il progetto e per distribuirlo in SharePoint.
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.
Nella parte superiore della pagina Web di SharePoint, scegliere il collegamento Flussi di lavoro sito.
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.
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