Compartilhar via


Passo a passo: Criar uma atividade de fluxo de trabalho de Site personalizada

Essa explicação passo a passo demonstra como criar uma atividade personalizado para um fluxo de trabalho de nível de site usando Visual Studio.(Os fluxos de trabalho de nível do site se aplicam a todo o site, não apenas a uma lista no site.) A atividade personalizado cria anúncios alternativos lista e então copiar o conteúdo dos anúncios lista em ele.

Essa explicação passo a passo demonstra as seguintes tarefas:

  • Criando um fluxo de trabalho de nível do site.

  • Criando uma atividade personalizado de fluxo de trabalho.

  • Criando e excluindo uma lista do SharePoint.

  • Copiando itens de uma lista a outra.

  • Exibindo uma lista na barra de QuickLaunch.

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 de Visual Studio.

Pré-requisitos

Para completar este passo-a-passo, são necessários os seguintes componentes:

Criando um projeto personalizado de atividade do fluxo de trabalho do site

Primeiro, crie um projeto armazenar e testar a atividade personalizado de fluxo de trabalho.

Para criar uma atividade personalizado de fluxo de trabalho de projeto de site

  1. Em a barra de menu, escolha Arquivo, Novo, Projeto para exibir a caixa de diálogo de Novo Projeto .

  2. Expanda o nó de SharePoint em Visual C# ou Visual Basic, e então escolha o nó de 2010 .

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

  4. Em a caixa de Nome , entre em AnnouncementBackup, e então escolha o botão OK .

    Assistente de personalização do SharePoint Aparece.

  5. Em a página de Especificar o site e o nível de segurança para depuração , escolha o botão de opção de Implantar como uma solução de farm , e então 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 para a solução como a 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ó de projeto e, em seguida, na barra de menu, escolha Projeto, Adicionar novo item.

  7. Em Visual C# ou Visual Basic, expanda o nó de SharePoint , e então escolha o nó de 2010 .

  8. Em o painel de Modelos , escolha o modelo de Fluxo de trabalho seqüencial de farm solução (somente) , e então escolha o botão Adicionar .

    Assistente de personalização do SharePoint Aparece.

  9. Em a página de Especifique o nome de fluxo de trabalho para depuração , aceite o nome padrão (AnnouncementBackup - Workflow1).Altere o tipo de modelo de fluxo de trabalho a Localize o fluxo de trabalho, e então escolha o botão Avançar .

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

Adicionando uma classe personalizada de atividade de fluxo de trabalho

Em seguida, adicionar uma classe ao projeto conter código para atividades personalizado de fluxo de trabalho.

Para adicionar uma classe personalizada de atividade de fluxo de trabalho

  1. Em a barra de menu, escolha Projeto, Adicionar novo item para exibir a caixa de diálogo de Adicionar novo item .

  2. Em o modo de exibição de árvore de modelos instalados , escolha o nó de Código , e então escolha o modelo de Classe na lista de modelos de item de projeto.Use o nome padrão Class1.Escolha o botão Adicionar .

  3. Substitua 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, na barra de menu, escolha Compilar, Compilar solução.

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

Adicionando a atividade personalizado ao fluxo de trabalho do site

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

Para adicionar uma atividade personalizado ao fluxo de trabalho do site

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

  2. Arraste Class1 de Caixa de Ferramentas de modo que ele apareça na atividade de onWorkflowActivated1 , ou abra o menu de atalho para Class1, escolha Copiar, abra o menu de atalho para a linha abaixo da atividade de onWorkflowActivated1 , e então escolha Colar.

  3. Salvar o projeto.

Testando a atividade personalizado de fluxo de trabalho do site

Em seguida, executar o projeto e inicia o fluxo de trabalho do site.A atividade personalizado cria anúncios alternativos lista e cópias que o conteúdo dos anúncios atuais listam em ele.O código também verifica se uma lista alternativa já existe antes de criar um.Se uma lista alternativa já existir, ele será excluída.O código também adiciona um link para a nova lista na barra de QuickLaunch de site web do SharePoint.

Para testar a atividade personalizado de fluxo de trabalho do site

  1. Escolha a tecla F5 para executar o projeto e para implementá-lo ao SharePoint.

  2. Em a barra de QuickLaunch, escolha o link de listas para exibir todas as listas que estão disponíveis no site do SharePoint.O aviso há apenas uma lista para os anúncios nomeados Anúncios.

  3. Em a parte superior da página Web do SharePoint, escolha o link de Fluxos de trabalho do site .

  4. Em o Início de um a nova seção de fluxo de trabalho, escolha o link de AnnouncementBackup – Workflow1 .Isso inicia o fluxo de trabalho do site e executa o código em ação personalizada.

  5. Em a barra de QuickLaunch, escolha o link de Anúncios alternativos .Observe que todos os anúncios que estão contidos na lista de Anúncios foram copiados para essa nova lista.

Consulte também

Tarefas

Como: criar um receptor de eventos

Outros recursos

Desenvolvimento de soluções do SharePoint