Compartilhar via


Instruções passo a passo: criar uma atividade personalizada de fluxo de trabalho do local

Este passo a passo demonstra como criar uma atividade personalizada para um fluxo de trabalho no nível do site usando o Visual Studio. (Os fluxos de trabalho no nível do site se aplicam a todo o site, não apenas a uma lista no site.) A atividade personalizada cria uma lista de Comunicados de backup e, em seguida, copia o conteúdo da lista Comunicados nela.

Este passo a passo demonstra as seguintes tarefas:

  • Criar um fluxo de trabalho no nível do site.

  • Criar uma atividade de fluxo de trabalho personalizada.

  • Criar e excluir uma lista do SharePoint.

  • Copiar itens de uma lista para outra.

  • Exibir uma lista na barra QuickLaunch.

    Observação

    Seu computador pode mostrar diferentes nomes ou locais para alguns dos elementos de 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, confira Personalizar o IDE.

Pré-requisitos

Você precisará dos seguintes componentes para concluir este passo a passo:

  • Edições do Microsoft Windows e do SharePoint com suporte.

  • Visual Studio.

Criar um projeto de atividade personalizada do fluxo de trabalho do site

Primeiro, crie um projeto para manter e testar a atividade de fluxo de trabalho personalizada.

Criar um projeto de atividade personalizada do fluxo de trabalho do site

  1. Na barra de menus, escolha Arquivo>Novo>Projeto para exibir a caixa de diálogo Novo Projeto.

  2. Expanda o nó do SharePoint no Visual C# ou no Visual Basic e escolha o nó 2010.

  3. No painel Modelos, escolha o modelo Projeto do SharePoint 2010.

  4. Na caixa Nome, insira AnnouncementBackup e escolha o botão OK.

    O Assistente de Personalização do SharePoint é exibido.

  5. Na página Especificar o site e o nível de segurança para depuração, escolha o botão de opção Implantar como uma solução de farm e escolha o botão Concluir para aceitar o nível de confiança e o site padrão.

    Esta etapa define o nível de confiança da solução como solução de farm, a única opção disponível para projetos de fluxo de trabalho.

  6. Em Gerenciador de Soluções, escolha o nó do projeto e, na barra de menus, escolha Projeto>Adicionar Novo Item.

  7. No Visual C# ou no Visual Basic, expanda o nó do SharePoint e, em seguida, o nó 2010.

  8. No painel Modelos, escolha o modelo Fluxo de Trabalho Sequencial (somente Solução de Farm) e, em seguida, escolha o botão Adicionar.

    O Assistente de Personalização do SharePoint é exibido.

  9. Na página Especificar o nome do fluxo de trabalho para depuração, aceite o nome padrão (AnnouncementBackup - Workflow1). Altere o tipo de modelo de fluxo de trabalho para Fluxo de Trabalho do Site e escolha o botão Avançar.

  10. Escolha o botão Concluir para aceitar as configurações padrão restantes.

Adicionar uma classe de atividade de fluxo de trabalho personalizada

Em seguida, adicione uma classe ao projeto para conter o código para a atividade de fluxo de trabalho personalizada.

Adicionar uma classe de atividade de fluxo de trabalho personalizada

  1. Na barra de menus, escolha Projeto>Adicionar Novo Item para exibir a caixa de diálogo Adicionar Novo Item.

  2. No modo de exibição de árvore Modelos Instalados, escolha o nó Código e, em seguida, escolha o modelo Classe na lista de modelos de item de projeto. Use o nome padrão Class1. Clique no botão Adicionar.

  3. Substitua todo o código na Classe1 pelo seguinte:

    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. Salve o projeto e, em seguida, na barra de menus, escolha Compilar>Compilar Solução.

    Class1 aparece como uma ação personalizada na Caixa de Ferramentas na guia Componentes AnnouncementBackup.

Adicionar a atividade personalizada ao fluxo de trabalho do site

Em seguida, adicione uma atividade ao Fluxo de Trabalho para conter o código personalizado.

Adicionar uma atividade personalizada ao fluxo de trabalho do site

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

  2. Arraste Class1 da Caixa de Ferramentas para que ela apareça sob a atividade onWorkflowActivated1 ou abra o menu de atalho para Class1, escolha Copiar, abra o menu de atalho da linha na atividade onWorkflowActivated1 e escolha Colar.

  3. Salve o projeto.

Testar a atividade personalizada do fluxo de trabalho do site

Em seguida, execute o projeto e inicie o fluxo de trabalho do site. A atividade personalizada cria uma lista de Comunicados de backup e copia o conteúdo da lista de Comunicados atual para ela. O código também verifica se já existe uma lista de backup antes de criar uma. Se já existir uma lista de backup, ela será excluída. O código também adiciona um link à nova lista na barra QuickLaunch do site do SharePoint.

Testar a atividade personalizada do fluxo de trabalho do site

  1. Escolha a tecla F5 para executar o projeto e implantá-lo no SharePoint.

  2. Na barra QuickLaunch, escolha o link Listas para exibir todas as listas disponíveis no site do SharePoint. Observe que há apenas uma lista de comunicados chamada Comunicados.

  3. Na parte superior da página da Web do SharePoint, escolha o link Fluxos de Trabalho do Site.

  4. Na seção Iniciar um Novo Fluxo de Trabalho, escolha o link AnnouncementBackup – Workflow1. Isso inicia o fluxo de trabalho do site e executa o código na ação personalizada.

  5. Na barra QuickLaunch, escolha o link Backup de Comunicados. Observe que todos os comunicados contidos na lista Comunicados foram copiados para essa nova lista.