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 de dentro do Execute método usando membros do context parâmetro, do tipo CodeActivityContext. Os recursos disponíveis incluem CodeActivityContext o seguinte:

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

  • Recursos de rastreamento personalizados usando Tracko .

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

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 Project Types 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 adicionando uma classe base à declaração de CodeActivity 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);
    }