Serviços com o WF4

Olá pessoal,

Hoje gostaria de falar um pouco sobre o uso de serviços dentro de WF4 como também a criação de Workflow Services. Para quem ainda não conhece o potencial da tecnologia Windows Workflow Foundation, o artigo The Workflow Way: Understanding Windows Workflow Foundation, de autoria do David Chappel, é de leitura obrigatória!

(Pausa para você ler o artigo…)

Agora que o artigo foi lido e o conhecimento foi adquirido, podemos dar continuidade no assunto. O WF pode tanto ser cliente de um serviço WCF, muito útil para integrar e organizar um fluxo de chamadas de vários serviços independentes, ou pode ser exposto como um serviço WCF, também é conhecido como Workflow Service, e facilmente expor um processo de negócio para vários clientes através de uma tecnologia conhecida (WCF) utilizando protocolos padronizados. Neste post vou falar do primeiro cenário, utilizando um WF como cliente de um serviço WCF pré-existente.

Vamos imaginar a seguinte solução no Visual Studio:

image

Onde temos:

  • Demo.Catalogo: Class library responsável por pesquisar informações de produtos no banco de dados. As pesquisas são realizadas com Entity Framework.
  • Demo.WCF: Serviço WCF que retorna a lista de produtos por determinada categoria

Agora vamos criar um WF para ser cliente do serviço WCF que temos na solução, a maneira mais fácil é através de um WF Console Application, que vou chamar de Demo.WFConsole.

WFConsoleApplication

No meu projeto Demo.WFConsole, vou adicionar uma Service Reference para o serviço Demo.WCF. Atenção neste passo, não é referência para o projeto e sim uma Service Reference!

AddServiceReference

Após compilar a minha solução, o Visual Studio gera algumas atividades na sua toolbox para cada operação do serviço que foi referenciado.

image

Agora é só compor o WF com as várias atividades disponíveis, como fiz no exemplo abaixo:

image

E depois executar

image

O código fonte deste post por ser encontrado no meu SkyDrive.