Partilhar via


Criação de atividade de fluxo de trabalho usando a classe CodeActivity

As atividades criadas herdando de CodeActivity podem implementar um comportamento imperativo básico substituindo o Execute método.

Usando CodeActivityContext

Os recursos do tempo de execução do fluxo de trabalho podem ser acessados dentro do método Execute usando membros do parâmetro context, do tipo CodeActivityContext. Os recursos disponíveis através de CodeActivityContext incluem o seguinte:

  • Obter e definir os valores de variáveis e argumentos.

  • Recursos de rastreamento personalizados usando Track.

  • Acesso às propriedades de execução da atividade usando GetProperty.

Para criar uma atividade personalizada que herda de CodeActivity

  1. Abra o Visual Studio 2010.

  2. Selecione Arquivo, Novo e, em seguida, Projeto. Selecione Workflow 4.0 em Visual C# na janela Tipos de Projeto e selecione o nó v2010. Selecione Biblioteca de atividades na janela Modelos . Nomeie o novo projeto como HelloActivity.

  3. Clique com o botão direito do mouse em Activity1.xaml no projeto HelloActivity e selecione Excluir.

  4. Clique com o botão direito do mouse no projeto HelloActivity e selecione Adicionar e, em seguida, Classe. Nomeie a nova classe HelloActivity.cs.

  5. No arquivo HelloActivity.cs, adicione as seguintes using diretivas.

    using System.Activities;
    using System.Activities.Statements;
    
  6. Faça a nova classe herdar de CodeActivity adicionando uma classe base à declaração da classe.

    class HelloActivity : CodeActivity
    
  7. Adicione funcionalidade à classe adicionando um Execute método.

    protected override void Execute(CodeActivityContext context)
    {
        Console.WriteLine("Hello World!");
    }
    
  8. Use o CodeActivityContext para criar um registro de acompanhamento.

    protected override void Execute(CodeActivityContext context)
    {
        Console.WriteLine("Hello World!");
        CustomTrackingRecord record = new CustomTrackingRecord("MyRecord");
        record.Data.Add(new KeyValuePair<String, Object>("ExecutionTime", DateTime.Now));
        context.Track(record);
    }