Compartilhar via


Criação de atividade de fluxo de trabalho usando a classe de 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 CodeActivityContext direto disponível incluem o seguinte:

  • Definindo e obtendo os valores das variáveis e os argumentos.

  • Recursos personalizados de rastreamento que usam Track.

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

Para criar uma atividade personalizado que herda de CodeActivity

  1. Abrir o Visual Studio 2010.

  2. Selecione Arquivo, Novo e depois Projeto. Selecione Workflow 4.0 em Visual C# na janela Project Types 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 depois Classe. Nomeie a nova classe HelloActivity.cs.

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

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

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

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

    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);
    }