Compartilhar via


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

As atividades criadas por herança de CodeActivity podem implementar o comportamento básico obrigatório substituindo o método de Execute .

Usando CodeActivityContext

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

  • Obtendo e definindo os valores de variáveis e argumentos.

  • Recursos de acompanhamento personalizados usando Track.

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

Para criar uma atividade personalizada que herda do CodeActivity

  1. Abra o Visual Studio 2010.

  2. Selecione Arquivo, Novo e, em seguida, Projeto. Selecione Fluxo de Trabalho 4.0 no Visual C# na janela Tipos de Projeto e selecione o nó v2010 . Selecione Biblioteca de atividades na janela de Modelos. Nomeie o novo projeto 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 ao adicionar 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);
    }