Compartilhar via


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çãoObservaçã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:

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

  1. Exibição do Novo projeto caixa de diálogo, apontando para novo na arquivo menu e clique Novo projeto.

  2. Expanda o SharePoint o nó em um Visual C# ou Visual Basice, em seguida, clique em 2010.

  3. No modelos de painel, selecione o fluxo de trabalho seqüencial.

  4. No nome digite AnnouncementBackup e clique em OK.

    O O Assistente para personalização do SharePoint aparece.

  5. 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.

  6. 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.

  7. 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

  1. Clique em Add New Item sobre o projeto menu para exibir o Add New Item caixa de diálogo.

  2. 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.

  3. 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);
            }
    
    
        }
    }
    
  4. 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

  1. Abra Workflow1 no designer de fluxo de trabalho no modo design.

  2. Clique e arraste Class1 da caixa de ferramentas, solte-o sob o onWorkflowActivated1 atividade.

  3. 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

  1. Pressione F5 para executar o projeto e implantá-lo no SharePoint.

  2. 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.

  3. 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.

  4. 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.

  5. 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

Outros recursos

Desenvolvimento de soluções do SharePoint