As vantagens reais do Windows Workflow Foundation (WF)

Tradicionalmente os motores de Workflow são uma caixa preta e uma grande dor de cabeça para os programadores que têm de fazer aplicações de software cujo sucesso depende do bom funcionamento de algum representante da família.

As promessas dos motores tradicionais

Normalmente estes motores disponibilizam um conjunto de funcionalidades que impressionam numa primeira análise:

  1. Uma interface gráfica muito bonita e simples, para desenho rápido de Workflows;
  2. Promessa de agilidade nas alterações futuras que o processo possa vir a ter;
  3. API muito fácil e poderosa para comunicação síncrona de comandos do tipo start/stop/cancel/resume Workflow, close/cancel/reassign task, etc.;
  4. Promessa de fiabilidade a 100% e integração simples em qualquer ambiente aplicacional. Desde que suportado, claro;

A realidade dos motores tradicionais

O que se verifica na prática raramente atinge o prometido.

Assim, e rebatendo ponto por ponto temos que:

  1. A interface gráfica é realmente bonita mas … e quanto á personalização, de forma a podermos integrá-la de forma homogénea na imagem da aplicação que se está a desenvolver? Normalmente não é possível ou então, é possível com tantas restrições de suporte à evolução futura, ou com tantos compromissos no resultado final, que leva rapidamente a colocar de parte a opção de personalização;
  2. A agilidade em alterações futuras é algo que eu nunca vi em nenhum motor. E porquê? A resposta é muito simples. Porque não existe nenhum motor que consiga resolver de base todas as necessidades aplicacionais e de negócio que um projecto de média dimensão – já para não falar de grande dimensão – exige. Assim, é absolutamente normal – não devia, mas é – recorrer-se a habilidades e a truques dando machadadas nas regras mais elementares que regem a engenharia de software de forma a ultrapassar as restrições do motor. Resultado: a agilidade nas evoluções futuras fica claramente comprometida;
  3. A API disponibilizada muito raramente consegue satisfazer as necessidades aplicacionais. Assim volta-se a cair nos truques e habilidades que falei no ponto anterior;
  4. Fiabilidade a 100%. Além de nos motores que conheço – por experiência própria ou de outros colegas – esta fiabilidade estar longe dos 100% ainda existe outra questão que aumenta o risco e que, de forma geral é subavaliada: os Workflows são compostos por tarefas – automáticas ou humanas – , transições entre tarefas, avaliação de regras, chamadas a outros serviços, etc. Normalmente tudo isto acontece fora da nossa vista, em processos que correm de uma forma autónoma no servidor aplicacional. Isto é, se alguma coisa falha em determinado ponto do Workflow não existe outra maneira de detectar o problema a não ser consultar a consola de erros ou parametrizar o Workflow para enviar um alerta de falha. O problema é que os Workflows servem para acelerar e mecanizar os processos de trabalho. Se existirem falhas, por muito baixa que seja a taxa, digamos que entre 0.5% e 1% /mês, se estivermos a falar de 1000 Workflows activos num mês, isso corresponde a 5 a 10 falhas … É muito! E, mais grave do que ser uma falha do sistema, é ser uma falha que não rebenta na “cara” do utilizador. Isto é, o utilizador pensa que está tudo bem e só mais tarde, provavelmente tarde de mais é que se vai aperceber que o Workflow não chegou à etapa seguinte – isto se chegar – no tempo esperado;

A realidade quando se usa o WF

O WF não é, na verdade, um motor de Workflow conforme os motores que estamos habituados a usar. Na realidade, o WF um conjunto de peças de software – daí o nome foundation – que foram desenhadas de forma bem pensada e bastante bem articulada. Permitem uma integração aplicacional, liberdade ao programador e potência jamais conseguida por outro motor ou género. Voltando a fazer a análise ponto por ponto das promessas dos motores de Workflow, temos que:

  1. A interface gráfica do WF é totalmente – ou quase! – parametrizável. Mais do que isso, é completamente reutilizável em qualquer aplicação que utilize Windows Forms. Num projecto recente, altamente exigente sob vários pontos de vista, a minha equipa disponibilizou uma aplicação onde os utilizadores funcionais desenham os próprios Workflows e regras aplicacionais. Na linguagem do negócio!
  2. A agilidade futura. Como já disse atrás, todo o sistema é montado a partir de um conjunto de peças – quase como se fosse um Lego – , algumas delas desenvolvidas pela Microsoft outras desenvolvidas por nós. Isto quer dizer que temos todo o poder para desenvolver da forma que quisermos e desejarmos e assim, se respeitarmos as regras básicas da engenharia de software, toda a agilidade futura está claramente garantida;
  3. API fácil. Como já foi referido nos pontos anteriores esta questão nem se coloca desta forma. A API é normalmente desenhada e construída por nós no layer aplicacional que desejarmos e com as funcionalidades que acharmos por bem disponibilizar para os outros layers;
  4. Fiabilidade a 100%. Este é o ponto mais importante de todos. Sem fiabilidade não há credibilidade, sem credibilidade não há aplicação que resista muito tempo. Como já vimos atrás o WF permite uma integração muito homogénea com as aplicações. Assim, apesar de podermos utilizar o WF de uma forma tradicional, isto é, sem controlar as transições e a execução de tarefas, ou controlando a um nível mínimo, temos a opção, que eu pessoalmente gosto bastante, de controlar tudo. Nos processos em que, por dificuldades de tradução entre a forma como os utilizadores os vêem e a forma como eles realmente são – ver (1) a problemática entres os Workflows humanos sequenciais e os Workflows Humanos tipo máquina de estados -, decido por controlar tudo e opto por utilizar o WF apenas como um mapa que me indica por onde devo ir e quando devo ir. O WF permite tudo isso de uma forma simples e, mais do que isso, completamente integrada com as transacções aplicacionais.

Conclusão

O Microsoft WF vem integrado com a plataforma  .net 3.0. Na minha opinião, e tal como deixei expresso neste post, é claramente um passo em frente na indústria de engenharia de software.

Quem me conhece sabe que normalmente não sou um adepto fervoroso das soluções da Microsoft. Sou até, em algumas situações bastante crítico e não faço elogios fáceis a este grande fabricante. Este post está a ser escrito depois de já ter utilizado o WF de forma intensiva e extensiva numa aplicação bastante exigente que já está em produção num grande cliente nacional. Posso-vos dizer que o projecto foi um grande sucesso. Grande parte do sucesso deve-se ao WF.

Neste momento já está em curso outro projecto em que, mais uma vez iremos utilizar o WF de uma forma também intensiva e extensiva, mas agora, também com alguma originalidade: servirá para, juntamente com um motor de XSL-FO, substituir o desenvolvimento de minutas do Microsoft Word que têm muita lógica de programação embutida e são extremamente difíceis de desenhar, produzir e manter.

Referências:

(1) Artigos sobre Human Workflows e a problemática de State Machine / Sequential Workflows:
http://blogs.msdn.com/davegreen/archive/2005/10/20/483309.aspx artigo do Paul Andrew (WF Team)
http://wldj.sys-con.com/read/43046_p.htm
http://channel9.msdn.com/showscreencast.aspx?postid=122931 (screencast de 10m com 1 exemplo simples de order process)
http://www.odetocode.com/Articles/460.aspx
Uma conversa interessante sobre o WF em geral com 2 tipos do WF team, Paul Andrew e Matt Winkler:
http://channel9.msdn.com/ShowPost.aspx?PostID=266192
 

Anúncios

5 Respostas

  1. […] José Formiga’s Blog O José Formiga é um Software Architect na Novabase. O seu blog fala de aspectos relacionados com o trabalho mas que podem ser uteis a qualquer um. Achei interessante o artigo recente sobre o Windows WorkFlow Foundation […]

  2. Salve Zé, finalmente li o post. 😀 Peço desculpas de ser tão tarde.

    Achei o post muito interessante, ainda mais por ser parte integrante da equipe que desenvolveu a aplicação (tanto a já em produção como a em desenvolvimento).

    Vamos ver agora como sairá o Workflow na nova abordagem, onde daremos mais controlo ao mesmo. Vou lhe mantendo actualizado sobre os detalhes.

    Até a próxima. Como estão as coisas? Me deixe um e-mail pessoal seu. Abraços.

  3. Boa tarde.

    Só um iniciante nestas andanças de workflows. Tenho já larga experiência em .NET 2.0 e as vantagens da WF parecem ajustar-se como uma luva para um novo projecto que tenho em mão.

    Pode recomendar-me algum livro ou artigo que aborde o WF a fundo, de forma avançada mas algo concisa para eu inicar-me?

  4. Caro Paulo Vaz ,
    Para iniciantes penso que existem alguns “step by step” que poderão ser bons mas não consigo recomendar porque não os li. Só li o
    “Essential Windows Workflow Foundation (Microsoft .Net Development Series)
    by Dharma Shukla (Author), Bob Schmidt (Author)
    Addison Wesley (19 Oct 2006)” que é muito bom,
    mas, para um iniciante talvez seja um pouco “abstracto” de mais.

  5. Boa tarde!

    Estou pensando em desenvolver meu TCC em cima do Windows Workflow Foundation, quero falar das funcionalidades do WF e desenvolver uma aplicação usando o WF, teria alguma dica para me dar..
    Grato

Deixe uma Resposta

Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

Logótipo da WordPress.com

Está a comentar usando a sua conta WordPress.com Terminar Sessão / Alterar )

Imagem do Twitter

Está a comentar usando a sua conta Twitter Terminar Sessão / Alterar )

Facebook photo

Está a comentar usando a sua conta Facebook Terminar Sessão / Alterar )

Google+ photo

Está a comentar usando a sua conta Google+ Terminar Sessão / Alterar )

Connecting to %s

%d bloggers like this: