11 de dezembro de 2004

Novidades: Sistema de Workflow

O blog ficou um bom tempo sem atualização, e por um bom motivo. No momento, estou trabalhando na implementação de uma aplicação Web profissional para gerenciamento de processos, ou seja, workflow. O produto está sendo escrito em Python, e utiliza o CherryPy como servidor de aplicação Web. Para quem programa em Python, ou para aqueles que procuram uma ferramenta leve para aplicações Web, sugiro analisar o CherryPy. O resultado final será publicado como um programa aberto, sendo que a oportunidade de negócios está na customização do sistema para os processos de um cliente específico.

Há várias formas de modelar aplicações de workflow, sendo que as mais difundidas são associadas a alguma metodologia ou notação proprietária, o que dificulta a sua aplicação em um ambiente de software aberto. Ateoria fundamental é bastante consistente, mas existem poucos recursos online que a apresentem de uma forma acessível. A estrutura escolhida se baseia em um formalismo matemático poderoso, que são as redes de Petri. Alguns sistemas abertos de workflow se baseiam em redes de Petri. Uma boa referência em PHP é o artigo An activity based Workflow Engine for PHP. O sistema proposto tem algumas particularidades, mas serve como uma boa introdução ao tema.

No momento, o sistema ainda não tem uma documentação apresentável, apesar de todo cuidado com a estrutura do código fonte. O projeto se baseia em uma filosofia de desenvolvimento rápido: TDD, ou Test Driven Development. A parte mais difícil em adotar o TDD foi descobrir uma forma de separar, ou desacoplar, os módulos. A tendência ao se escrever código com rapidez é usar recursos escusos, como variáveis globais e código estilo spaghetti. A metodologia TDD tem uma vantagem: ela não se presta a esse tipo de código, que acaba assim não tendo muita chance de aparecer no projeto.

Espero que até o começo de janeiro a base do sistema já tenha atingido um patamar de estabilidade suficiente para a produção de um release com qualidade beta, pelo menos. Dúvidas e comentários são bem vindos -- basta mandar um email ou deixar um comentário no blog.

Um comentário:

Alan disse...

Olá, há tempos venho procurando uma boa plataforma para desenvolvimento web com Python e tenho encontrado boas recomendações para o CherryPy na web.
Mas é uma pena que a maioria está em ingles, e o pouco que entendo limita-se a alguns tutoriais e configurações, mas mesmo assim predendo instalá-la para testes.
Consegui boas comparações em desenvolvimento web com Python aqui: http://www.pythonbrasil.com.br/moin.cgi/PythonParaWeb , mas sem aprofundamento em nehuma plataforma. Qualquer opinião sua é bem vinda!

Até