Desenvolvimento - Visual Basic .NET
Windows Workflow Foundation (WWF) - um overview
O autor mostra nessa matéria alguns conceitos de workflow e apresenta o Windows Workflow Foundation.
por Leonardo Bruno Bentes LimaLinguagem de programação: Visual Basic .NET
Recursos necessários: WinFX Runtime e Visual Studio 2005 Extensions for Windows Workflow Foundation.
http://msdn.microsoft.com/windowsvista/getthebeta/default.aspx
Resumo: Mostrarei nessa matéria alguns conceitos de workflow e apresentarei o Windows Workflow Foundation.
A idéia inicial era escrever diretamente sobre o Windows Workflow Foundation, mostrando as melhores características e fazendo um exemplo prático. Mas ao amadurecer a idéia, e conversando com vários desenvolvedores e profissionais de TI, percebi que não era comum a implementação de workflows em sistemas aqui no Brasil e muito menos era familiar para muitos desenvolvedores. Por esses motivos resolvi começar pelo básico, explicando o que é e onde se aplica o workflow e posteriormente irei mostrar o WWF na prática.
Imagine um cenário onde um grande sistema composto por vários módulos interdependentes e com grande complexidade nas regras de comunicação entre esses módulos deva ser construído de forma que os passos para realizar uma tarefa envolvam a execução de alguns módulos em uma seqüência predeterminada. Um sistema que se encaixa nesse cenário é um ERP, e uma tarefa que normalmente é realiza nele é a saída de mercadoria. Bem, para quem não conhece, para se realizar uma saída de mercadoria temos que primeiro cadastrar um pedido, cadastrar os itens desse pedido com as respectivas quantidades e depois configuramos os dados adicionais como impostos, frete, etc. Especificamente no sistema em que estou trabalhando, após o cadastro está finalizado, tem um botão que ficava ativo, que serve para realizar a baixa no estoque, o que por si só envolve mais vários passos (muitos deles são regras que não sofrem interferência do usuário). Feito isso, imprimimos o relatório com os dados do pedido.
Do ponto de vista do usuário, temos que realizar 5 passos:
- Cadastrar o pedido;
- Cadastrar os itens do pedido;
- Configurar os dados adicionais;
- Baixar o estoque (se estiver configurado para manual);
- Imprimir o pedido
Esses passos precisam ser executados nesta seqüência e de forma manual, exigindo que o operador saiba o que precisa fazer. Podemos chamar o fluxo de execução dessa tarefa de workflow.
O objetivo principal do Windows Workflow Foundation é facilitar a integração de todos os componentes que fazem parte da execução de uma tarefa e coordenar a seqüência de execução.
O WWF é composto pelo Workflow Engine, API gerenciada (.NET), Runtime e um ambiente visual integrado com o Visual Studio 2005 que permite o desenvolvimento e debug da aplicação.
Vamos fazer um exemplo prático:
Ao instalar o Visual Studio 2005 Extensions for Windows Workflow Foundation, aparecerá uma nova opção de projeto, chamado de Workflow. Ao selecionar o item Workflow, temos a nossa disposição algumas opções, veja na figura abaixo:
Opção | Descrição |
Sequential Workflow Console Application | Cria um projeto para construir um workflow que possui uma seqüência default e um console application que hospedará a aplicação. |
Sequential Workflow Library | Cria um projeto para construir um workflow como uma class library para ser usado em outro projeto. |
Workflow Activity Library | Cria um projeto de "library of activities" que pode ser usado em outro projeto. |
State Machine Console Application | Cria um projeto para construir um "state machine" e uma aplicação console que hospedará a aplicação. |
State Machine Workflow Library | Cria um projeto para construir uma "state machine" como uma library. |
Empty Workflow | Cria um projeto em branco que inclui workflows e activities. |
No nosso exemplo usaremos o Sequential Workflow Console Application. Mas antes de continuar gostaria de explicar quais são os dois tipos de workflow existem no WinFx.
- Sequential Workflow: Utilizado para tarefas que são executadas passo a passo um após o outro, embora também possa se tornar mais complexa ao receber eventos externos e executar passos paralelos.
- State Machine Workflow: É composto por um conjunto de states (estados), transitions (transições) e actions (ações). É utilizado para tarefas não seqüenciais onde ao iniciar um estado, o mesmo pode ser alterado de acordo com eventos até chegar ao estado final, que sinaliza o fim do workflow.
Obs.: O que eu chamo de passo, no Workflow Foundation chamamos de Activity. Vamos começar criando um Sequential Workflow Console Application, ao qual dei o nome de MeuPrimeiroWorkflow. Veja figura abaixo:
Ao criar o projeto, perceba que no design foi criado o esqueleto do workflow e dois arquivos: Workflow1.vb (Arquivo onde escrevemos a lógica do nosso workflow) e o arquivo oculto Workflow1.Designer.vb (Arquivo onde fica a descrição das atividades, é gerado e atualizado automaticamente pelo Visual Studio 2005).
Se executarmos o projeto, nada acontecerá pois não existe nenhum passo (Activity). Então vamos adicionar o primeiro passo do nosso exemplo. Adicione um novo item: Code Activity. Para isso vá no Toolbar e escolha a opção Code e arraste para o Design do Workflow. Veja figura abaixo:
O Design ficará como mostra a figura abaixo:
Agora já temos uma Activity dentro de nosso workflow, que por enquanto nada faz. Para tornar o código útil, temos que programar o evento ExecuteCode da classe CodeActivity que acabamos de incluir no workflow. Para isso dê um duplo clique para programar o evento. Veja figura abaixo:
Agora vamos adicionar algum código para ser executado ao ser disparado o workflow. Digite o seguinte código:
Qualquer Workflow só pode ser executado pelo runtime do Windows Workflow Foundation, e para isso ele precisa de um host. O Visual Studio automaticamente cria um host para fins de teste, veja o arquivo Module1.vb. Para que possamos testar, precisamos fazer uma pequena alteração no arquivo, inclua a linha: Console.ReadLine(), para que a execução pare e espere que o usuário tecle algo. Agora execute o projeto com F5 e veja o workflow em ação.
Conclusão: Embora essa matéria seja muito simples, espero ter atingido o objetivo, que é de despertar a curiosidade sobre o Windows Workflow Foundation. Espero que até a publicação da segunda parte dessa matéria muita gente já tenha feito testes e se preparado para um maior aprofundamento no assunto. Até a próxima.
- Entity Framework 4: Repositório GenéricoVisual Basic .NET
- As edições 14 da Easy .net Magazine e 88 da .net Magazine já estão disponíveis.ADO.NET
- Postando no Twiiter com .NET e Migre.meC#
- Setup ApplicationsVisual Basic .NET
- Problemas na manipulação de arquivos do MS Excel com .NETVisual Basic .NET