Arquitetura de Soluções

por Waldemir Cambiucci

Máquinas de Estado e Workflows com WF4

Olá pessoal, tudo certo?

Essa semana resgatei um assunto a pedido de um time de arquitetura – construção de máquinas de estado com o WF4, certo Cristiano e Mario? 🙂

De fato, o WF 4 disponível com o .NET 4.0 não suporta nativamente templates de Máquinas de Estado (State Machine), como existia no WF 3.x.

Para quem não se lembra, uma máquina de estado em WF 3.x usava atividades como State, SetState, StateInitialization, StateFinalization, EventDriven, Terminate, entre outros. Esse tipo de implementação é bem aderente para controle de máquinas em pontos de vendo, regras de negócio orientadas a eventos e outros cenários interessantes.

Um exemplo de projeto de máquina de estado aparece na figura abaixo:

clip_image002

Como alternativa, podemos usar os workflows do tipo FLOWCHART, que estão disponíveis no WF4. Uma série de cenários de máquinas de estado podem ser implemetadas como FLOWCHARTS do WF4, por isso é uma alternativa interessante.

Recomendo a leitura do documento de migração de State Machine, que orienta todo o processo de migração de Máquinas de Estado WF 3.x para WF4.

Você pode baixá-lo no link a seguir:

Workflow migration guide
Ref.:
http://www.microsoft.com/downloads/en/details.aspx?displaylang=en&FamilyID=bd94c260-b5e0-4d12-93ec-53567505e685

Veja o documento “WF4 State Machine Guidance.doc

Um exemplo de transição de estados implementado com o WF4 FlowChart aparece abaixo:

clip_image001

A própria máquina de estado que aparece no início deste post ficaria assim em WF4::

clip_image004

Ainda, vale destacar que existe um projeto em andamento no CodePlex, que implementa algumas atividades para Máquinas de Estado na toolbox do WF 4, veja:

Microsoft WF State Machine Activity Pack CTP 1
Ref.:
http://wf.codeplex.com/

Não deixe de conferir o pacote CTP 1 e o documento Microsoft WF State Machine Activity Pack CTP 1, que orienta sua utilização. Quando este pacote é instalado, ele adiciona algumas atividades para máquinas de estado, como vemos no Toolbox abaixo:

image

Como citado em um dos documentos de migração, o recurso de Máquinas de Estado é uma das funcionalidades que está sendo avaliada para a próxima atualização do WF4, para suporte nativo.

Para saber mais sobre Workflows e WF4, não deixe de conferir o blog do especialista Rafael Godinho, aqui do time Microsoft Brasil.

Blog do Rafae Godinho
Ref.:
http://blogs.msdn.com/b/rafaelgodinho/

Por enquanto é só! Até o próximo post 🙂

Waldemir.