definir e consumir representantes de atividade no Designer de Fluxo de Trabalho

O .NET Framework 4.5 inclui um designer pronto para uso para a atividade InvokeDelegate. Este criador pode ser usado para atribuir os representantes para a atividade que derivam de ActivityDelegate, como ActivityAction ou ActivityFunc<TResult>.

Defina um representante de atividades

  1. Crie um projeto de Aplicativo de console de fluxo de trabalho.

    Observação

    Se você não vir os modelos de projeto de Fluxo de trabalho, instale o componente Windows Workflow Foundation do Visual Studio. Para obter instruções detalhadas, consulte Instalar o Windows Workflow Foundation.

  2. Clique com o botão direito do mouse no projeto no Gerenciador de Soluções e selecione Adicionar>Novo Item. Selecione a categoria Fluxo de Trabalho e, em seguida, selecione o modelo de item Atividade. Dê à nova atividade o nome MyForEach.xaml e selecione OK.

    A atividade é aberta no designer de fluxo de trabalho.

  3. No Designer de Fluxo de Trabalho, clique na guia Argumentos.

  4. Clique em Criar Argumento. Dê ao novo argumento o nome Itens.

  5. Na coluna Tipo de argumento, selecione Matriz de [T].

  6. No navegador de tipos, selecione Objeto e, em seguida, OK.

  7. Clique em Criar Argumento novamente. Nomeie o novo argumento Corpo. Na coluna Direção para o novo argumento, selecione Propriedade.

  8. Na coluna Tipo de Argumento, selecione Procurar tipos

  9. No navegador de tipo, insira ActivityAction no campo Nome do Tipo. Selecione ActivityAction<T> no modo de exibição de árvore. Selecione Objeto na lista suspensa que aparece para atribuir o tipo ActivityAction<Objeto> ao argumento.

  10. Arraste uma atividade While da seção Fluxo de Controle da caixa de ferramentas para a superfície do designer.

  11. Selecione a atividade While e selecione a guia Variáveis.

  12. Selecione Criar Variável. Dê à nova variável o nome Índice.

  13. Na coluna Tipo de variável, selecioneInt32. Deixe o Escopo como Quando e a coluna Padrão em branco.

  14. Defina a propriedade Condição da atividade While para índice < Items.Length;.

  15. Arraste uma atividade InvokeDelegate da seção Primitivas da caixa de ferramentas para o Corpo da atividade While.

  16. Selecione Corpo na lista suspensa de delegados.

  17. Na grade Propriedades para a atividade InvokeDelegate, clique no botão na propriedade Argumentos de Delegados.

  18. Na coluna Valor do argumento chamado Argumento, insira Items[Index]. Clique em Ok para fechar a caixa de diálogo DelegateArguments.

  19. Arraste uma atividade de Assign na linha horizontal abaixo de atividade de InvokeDelegate . A atividade Assign é criada, e uma atividade Sequence é criada automaticamente para conter as duas atividades na seção Corpo da atividade MyForEach. A sequência é necessária, pois a seção Corpo pode conter apenas uma atividade. Criar automaticamente uma atividade Sequence é um novo recurso do .NET Framework 4.5.

  20. Defina a propriedade Para da atividade Assign para índice. Defina a propriedade Valor da atividade Atribuir como index+1.

    A atividade personalizada MyForEach invoca uma atividade arbitrária uma vez para cada valor passado a ela por meio da coleção de Itens, com os valores na coleção como entradas para atividades.

Use a atividade personalizado em um fluxo de trabalho

  1. Compile o projeto pressionando Ctrl+Shift+B.

  2. No Gerenciador de Soluções, abra Workflow1.xaml no designer.

  3. Arraste uma atividade MyForEach da caixa de ferramentas para a superfície do designer. A atividade está em uma seção da caixa de ferramentas com o mesmo nome que o projeto.

  4. Defina a propriedade Itens da atividade MyForEach como new Object[] {1, "abc"}.

  5. Arraste uma atividade WriteLine da seção Primitivos da caixa de ferramentas para a seção Delegate:Body da atividade MyForEach.

  6. Defina a propriedade Texto da atividade WriteLine como Argument.ToString().

Quando o fluxo de trabalho é executado, o console mostra a seguinte saída:

1abc