Demonstra Passo a passo: Criar uma atividade de fluxo de trabalho de Site personalizada
Esta explicação passo a passo demonstra como criar uma atividade personalizada para um fluxo de trabalho de nível de site usando Visual Studio. (Fluxos de trabalho de nível de site se aplicam ao site inteiro, não apenas uma lista no site). A atividade personalizada cria uma lista de avisos de backup e, em seguida, copia o conteúdo da lista avisos para ele.
Essa explicação passo a passo demonstra as seguintes tarefas:
Criando um fluxo de trabalho de nível de site.
Criando uma atividade de fluxo de trabalho personalizado.
Criando e excluindo uma lista do SharePoint.
Copiando os itens de uma lista para outra.
Exibindo uma lista na barra Inicialização rápida.
Observação |
---|
Seu computador pode mostrar nomes ou locais diferentes para alguns dos elementos da interface do usuário do Visual Studio nas instruções a seguir. A edição do Visual Studio que você possui e as configurações que você usa determinam esses elementos. Para obter mais informações, consulte Configurações do Visual Studio. |
Pré-requisitos
Para completar este passo a passo, são necessários os seguintes componentes:
Edições com suporte do Microsoft Windows e SharePoint. Para obter mais informações, consulte Requisitos para o desenvolvimento de soluções do SharePoint.
Visual Studio 2010.
Criando um projeto de atividade do Site fluxo de trabalho personalizado
Primeiro, crie um projeto para manter e testar a atividade de fluxo de trabalho personalizado.
Para criar um projeto de atividade personalizados de fluxo de trabalho do site
Exibição do Novo projeto caixa de diálogo, apontando para novo na arquivo menu e clique Novo projeto.
Expanda o SharePoint o nó em um Visual C# ou Visual Basice, em seguida, clique em 2010.
No modelos de painel, selecione o fluxo de trabalho seqüencial.
No nome digite AnnouncementBackup e clique em OK.
O O Assistente para personalização do SharePoint aparece.
No o que é o site local que você deseja usar para depuração? página, clique em próximo para aceitar o site padrão.
Essa etapa também define o nível de confiança para a solução como solução do farm, a única opção disponível para projetos de fluxo de trabalho.
No Especifique o nome do fluxo de trabalho para depuração de página, aceite o nome padrão (AnnouncementBackup - Workflow1). Altere o tipo de modelo de fluxo de trabalho para Fluxo de trabalho do Site e, em seguida, clique em próximo.
Clique em Concluir para aceitar o restante das configurações padrão.
Adicionar uma classe de atividade de fluxo de trabalho personalizado
Em seguida, adicione uma classe ao projeto para conter o código para a atividade de fluxo de trabalho personalizado.
Para adicionar uma classe de atividade do fluxo de trabalho personalizado
Clique em Add New Item sobre o projeto menu para exibir o Add New Item caixa de diálogo.
No Modelos instalados exibição em árvore, clique o código nó e clique classe na lista de modelos de item de projeto. Use o nome padrão Class1.
Substitua todo o código em Class1 com o seguinte:
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); } } }
Salvar o projeto e, em seguida, clique em Build Solution sobre o Build menu.
Class1 aparece como uma ação personalizada na caixa de ferramentas sob o Fluxo de trabalho do SharePoint guia na caixa de ferramentas.
Adicionando a atividade personalizada para o fluxo de trabalho do Site
Em seguida, adicione uma atividade no fluxo de trabalho para conter o código personalizado.
Para adicionar uma atividade personalizada para o fluxo de trabalho do site
Abra Workflow1 no designer de fluxo de trabalho no modo design.
Clique e arraste Class1 da caixa de ferramentas, solte-o sob o onWorkflowActivated1 atividade.
Salve o projeto.
A atividade de personalizadas de fluxo de trabalho do Site de teste.
Em seguida, executar o projeto e iniciar o fluxo de trabalho do site. A atividade personalizada cria uma lista de anúncios de backup e copia o conteúdo da lista atual de anúncios para ele. O código também verifica se já existe uma lista de backup antes de criar um. Se já existir uma lista de backup, ele é excluído. O código também adiciona um link para a nova lista na barra de inicialização rápida do site do SharePoint.
Para testar a atividade personalizada do fluxo de trabalho de site
Pressione F5 para executar o projeto e implantá-lo no SharePoint.
Na barra Inicialização rápida, clique em lista para exibir todas as listas disponíveis no site do SharePoint. Observe que há apenas uma lista de anúncios chamado anúncios.
Na parte superior da página da Web do SharePoint, clique no Ações do Site botão e, em seguida, clique em Fluxos de trabalho do Site.
Sob o início de uma seção de novo fluxo de trabalho, clique no link para AnnouncementBackup - Workflow1. Isso inicia o fluxo de trabalho do site e executa o código em ação personalizada.
Clique no link chamado de Backup de anúncios que aparece na barra Inicialização rápida. Observe que todos os anúncios que estão contidos no anúncios lista foram copiados para esta nova lista.
Consulte também
Tarefas
Como: Criar um receptor de eventos