Fernando Amaral
Windows WorkFlow Foundation: Exemplo prático com uso de ifElseActivity

 

Windows WorkFlow Foundation: Exemplo prático com uso de ifElseActivity

Em artigo anterior falei sobre o FrameWork .NET 3.0 e de seus principais elementos, com Windows WorkFlow Foundation.

Agora vamos demonstrar como utilizar na prática o WWF com uma de suas atividades mais interessantes: o ifElseActivity.

Vamos criar uma aplicação console utilizando o Template Seqüencial WorkFlow Console Aplication. Se você instalou o beta do WWF1, este template deverá estar disponível no Visual Studio 2005.

Então vamos lá. Abra o VS 2005 e selecione Seqüencial WorkFlow Console Aplication na caixa de dialogo New Project. De um nome para sua aplicação.

O VS cria um modelo de aplicação de WorkFlow seqüencial:

 

Tudo a fazer é arrastar e soltar as atividades entre as atividades de inicio e término do WorkFlow. Vamos primeiro montar o workflow para depois configurá-lo.

Arraste um CodeActivity para o workflow, deixe o nome padrão Arraste um ifElseActivity para o workflow, posicionando-o logo abaixo do CodeActivity colocado anteriormente. A atividade ifElseActivity é criada com duas atividades ifElseBranchActivity. Cada ifElseBranchActivity representa uma condição da estrutura. O WWF avalia as condições da esquerda para direita, executado a primeira que retornar verdadeiro. Se nenhuma for verdadeira e a ultima não tiver qualquer condição, esta será executada. Você pode adicionar quantos ifElseBranchActivity forem necessários a cada ifElseActivity.

Dentro de cada ifElseBranchActivity adicione um CodeActivity. Adicione mais um CodeActivity após o ifElseActivity. Seu workflow deve parecer com o da imagem abaixo:

Vamos agora configurar nosso WorkFlow para funcionar corretamente.

•     Clique em View Code e adicione uma variável privada, conforme o código abaixo:

Private _Condicao As Boolean

•    Crie um manipulador para o evento ConditionalEventArgs do WorkFlow, conforme o exemplo abaixo. Neste evento atribuímos a condição do WorkFlow de acordo com a nossa variável privada declarada acima:

Private Sub MeuEvento(ByVal sender As System.Object, ByVal e As System.Workflow.Activities.ConditionalEventArgs)

e.Result = _Condicao End Sub

. De um duplo clique sobre o codActivity1, no manipulador de evento criado escreva:

Console.WriteLine _

("Entrando no codeactivity1, definindo condição.")

_Condicao = True

•    De um duplo clique sobre o codActivity2, que deve estar dentro do ifElseBranchActivity da esquerda. Escreva o seguinte código:

Console.WriteLine("A condição é verdadeira.")

•    De um duplo clique sobre o codActivity3, que deve estar dentro do ifElseBranchActivity da direita. Escreva o seguinte código

Console.WriteLine("A condição é falsa.")

•   No codeActivity4, que deve estar externo ao ifElseActivity, escreva o código abaixo para que você tenha tempo de ler o resultado:

Console.ReadLine()

•   Finalmente vamos definir no ifElseBranchActivity da esquerda, qual será a condição utilizada. Para isso selecione a atividade, na janela de propriedades, em Condition, selecione System.Workflow.Activities.CodeCondition. Expanda a propriedade, e em Condition, selecione MeuEvento, que foi o evento criado anteriormente.

Note que é executado o código de condição verdadeira.

Experimente alterar o valor da variável _condicao para False e execute novamente a aplicação. Observer que o ifElseBranchActivity da direita foi executado.

Abaixo, segue um resumo de todo a parte declarativa da aplicação:

Private Sub MeuEvento(ByVal sender As System.Object, ByVal e As System.Workflow.Activities e.Result = _Condicao End Sub

Private Sub codeActivity1_ExecuteCode(

ByVal sender As System.Object, ByVal e As System.EventArgs)

Console.WriteLine(

"Entrando no codeactivity1, definindo condição.")

_Condicao = True End Sub

Private Sub codeActivity2_ExecuteCode(

ByVal sender As System.Object, ByVal e As System.EventArgs)

Console.WriteLine("A condição é verdadeira.") End Sub

Private Sub codeActivity3_ExecuteCode(

ByVal sender As System.Object, ByVal e As System.EventArgs)

Console.WriteLine("A condição é falsa.") End Sub

Private Sub codeActivity4_ExecuteCode(

ByVal sender As System.Object, ByVal e As System.EventArgs)

Console.ReadLine() End Sub

 

1 Você pode baixa-lo de http://msdn.microsoft.com/winfx/default.aspx

Últimos artigos relacionados:
Refatoração (Refactoring) em Visual Studio 2008
Medindo a Performance de seu Código com Visual Studio Team System 2008
Code Snippets no Visual Studio 2008
Análise de Código com Visual Studio Team System 2008
.NET independente de plataforma? Uma introdução ao Mono