.NET

4 set, 2007

Windows Workflow Foundation – Parte 02

Publicidade

Olá senhores. Meu plano para esta segunda parte do artigo é criarmos uma pequena aplicação onde iremos construir um workflow bem simples somente para firmar o que foi entendido na primeira parte.

Na primeira parte falei sobre alguns conceitos de workflow e citei exemplos de cenários onde ele poderia se encaixar.

A idéia desta nossa aplicação é fazer com que ela evolua acompanhando o nosso aprendizado.

Bom, antes de começarmos, precisamos atender uma pequena lista de requisitos para configurar o nosso ambiente.

Lista de Requisitos

1. .NET Framework 2.0

2. .NET Framework 3.0

3. Visual Studio 2005

4. Visual Studio 2005 Extensions for Windows Workflow Foundation

Se a lista foi atendida, podemos então dar início a nossa brincadeira!

Criando um novo Projeto

Crie um novo projeto selecionando a opção Workflow e escolha o item “Sequential Workflow Console Application” e dê o nome de HelloWorld.

Criando um novo ProjetoCriando um novo Projeto

Escolhi abordar o workflow do tipo “Ordered” para exemplos mais simples, portanto este é o motivo da escolha da opção “Sequential Workflow Console Application“.

Quando as pessoas pensam em workflow logo pensam em um “Ordered Workflow”. Este tipo de workflow representa um processo que inicia com um determinado disparador e as etapas fluem sequencialmente com alguns “if-else” e se necessário alguns laços.

Depois de escolher o tipo do projeto, o Visual Studio irá disponibilizar uma área de trabalho para “desenharmos” nosso workflow, monte uma estrutura conforme a seqüencia das figuras abaixo.

Estado inicial da área de trabalho.Estado inicial da área de trabalho.

Usando a barra de ferramentas localize a atividade Code e arraste para cima da mensagem “Drop Activities to create a Sequential Workflow” e dê o nome para essa atividade de Entrada.

Agora iremos colocar um objeto de condição, localize na barra de ferramentas o objeto IfElse e arraste para o espaço logo abaixo da atividade Entrada.

Agora tá ficando bonito hein! Vamos criar mais duas atividades Code, arraste uma atividade em cada espaço onde está escrito “Drop Activities Here” dentro do objeto IfElse e dê o nome a elas de Saida1 e Saida2.

A estrutura do seu workflow deve estar semelhante à figura acima. Agora iremos fazer tudo isso funcionar.

Na área de trabalho clique com o botão direito do mouse e selecione a opção “View Code” e insira o seguinte trecho de código:


private string m_Resultado;
public string Resultado
{
    get { return this.m_Resultado; }
}

Agora clique duas vezes em cima da atividade Entrada e coloque o seguinte código:

        
private void Entrada_ExecuteCode(object sender, EventArgs e)
{
    Console.WriteLine("Entre com um valor: ");
    this.m_Resultado = Console.ReadLine();
}

Faça o mesmo com as atividades Saida1 e Saida2 colocando os seguintes códigos respectivamente:

 
private void Saida1_ExecuteCode(object sender, EventArgs e)
{
     Console.WriteLine("Saida 1 OK!");
     Console.ReadLine();
}

private void Saida2_ExecuteCode(object sender, EventArgs e)
{
    Console.WriteLine("Saida 2 OK!");
    Console.ReadLine();
}

A grosso modo, nos passos acima definimos as responsabilidades de cada atividade, agora precisamos configurar sob quais regras elas irão atuar.

Na estrutura do workflow selecione o item ifElseBranchActivity da atividade Saida1.

Na propriedade Condition deste item, selecione a opção Declarative Rule Condition, fazendo isso irá aparecer um campo com o nome Expression, clique no botão que aparece no canto direito e edite a regra conforme a figura abaixo.

Repita este passo para a atividade Saida2 colocando o valor da regra como this.Resultado == “N”.

Agora vamos testar a nossa pequena aplicação, aperte F5 e reze!

A aplicação irá solicitar um valor, os valores esperados são “S” para Saida1 e “N” para a Saida2.

Para qualquer valor que você digitar a saida será algo semelhante à tela abaixo, diferenciando somente a mensagem impressa, que informa qual fluxo foi tomado para chegar neste resultado.

Bom senhores, aqui eu termino esta segunda parte do artigo. Peço que salvem este projeto para que possamos evoluí-lo.

No próximo artigo iremos ver como funciona uma estrutura de laço e como carregamos um workflow usando XAML.

Abraços e até a próxima.