A JBoss recentemente anunciou novas versões importantes dos projetos da família Drools. Estes projetos buscam simplificar a implementação de requisitos complexos, como gerenciamento de regras, controle de fluxos e processamento de eventos, que muitas vezes são "engessados" no código da aplicação.
Sistemas de programação declarativa, como o Drools, normalmente baseados em algoritmos de inteligência artificial, têm conquistado cada vez mais espaço fora do ambiente acadêmico onde surgiram. Produtos, serviços e casos de sucesso no mundo corporativo são frequentemente apresentados por grandes fornecedores como IBM, Red Hat e Progress. Na plataforma Java isto é refletido pelas especificações de motores (ou engines) de regras (JSR-94) e de programação por restrições (JSR-331), tendo esta última especificação recebido o prêmio de mais inovadora JSR de 2010.
Convidamos Mauricio Salatino, colaborador independente que ganhou recentemente o JBoss Community Award 2011 por contribuições ao Drools e ao jBPM. Atualmente, Mauricio trabalha criando extensões de integração para Drools e jBPM relacionadas à interação remota com a API do Drools para execução distribuída de processos e regras de negócio. Também contribui com correções e novas funcionalidades para ambos os projetos e está finalizando seu segundo livro sobre jBPM, a ser publicado este ano. Mauricio nos fala sobre detalhes das novas versões e tecnologias relacionadas à família Drools.
Julio Faerman: Qual é a motivação para o jBPM e como ele se diferencia de outros produtos de gerenciamento de processos de negócio (BPM)?
Mauricio Salatino: O jBPM é uma engine de BPM sólida, leve e open source. Pode ser embutido em qualquer aplicação para suportar a execução nativa de processos definidos com a notação padronizada BPMN 2.0, mas vai muito além dessas funcionalidades. O que torna o jBPM diferente de outros sistemas de BPM é a integração com um motor de regras (Drools Expert) e um mecanismo de processamento de eventos complexos (Drools Fusion).
JF: Como os outros projetos da familia Drools complementam o jBPM?
MR: Atualmente, um engine de BPM não é suficiente por si só. São necessários mecanismos mais inteligentes para lidar com diferentes situações de negócio. O Drools, com o jBPM, pode auxiliar a resolver situações de negócio extremamente complexas de maneira declarativa. Atualmente diversos sistemas de BPM estão focados em fornecer um conjunto integrado de ferramentas; mas se a complexidade das situações reais for subestimada, acabamos chegando a modelos de processos extremamente complexos. Se tirarmos proveito da abordagem declarativa oferecida pelas regras, o desenho dos modelos será simplificado, deixando mais claro como o conhecimento corporativo influencia o trabalho no dia a dia.
JF: Quais são as principais novidades desta versão do jBPM?
MS: O jBPM 5.1 inclui muitas correções e pequenas melhorias baseadas no feedback da comunidade. Uma das novidades mais importantes é o editor web de processos, que suporta o ciclo completo de desenvolvimento, contemplando desde ferramentas web voltadas para analistas de negócio até as baseadas no Eclipse para desenvolvedores. A nova versão também inclui um módulo com exemplos que demonstra a maioria das funcionalidades em ação. Além disso, a documentação foi atualizada e estendida significativamente e há ferramentas para testes de processos através do framework JUnit, o suporte a múltiplos threads e melhorias na sincronização com o repositório de processos.
JF: Atualmente, quais você considera os maiores desafios do projeto?
MS: Há poucas pessoas familiarizadas com o jargão de motores de regras, processos e o seu funcionamento interno. Com objetivo de facilitar o aprendizado dessas tecnologias, tenho trabalhado na criação de documentação e exemplos. A aplicação "Serviços de Emergência", por exemplo, foi construída para demonstrar padrões comuns de arquitetura e o uso das várias tecnologias em conjunto. Muitas vezes, é necessário entender os fundamentos das tecnologias para utilizá-las de maneira correta.
JF: Como você vê a evolução na maturidade de implantações de BPM? Acredita que as empresas estão vendo o BPM como uma mudança cultural em TI, ou que o enfoque ainda é limitado aos aspectos técnicos?
MS: Um dos principais objetivos da especificação BPMN 2.0 (Business Process and Modeling Notation) é reduzir a distância entre o pessoal técnico e os analistas de negócio, que descrevem como a empresa funciona usando fluxogramas. O jBPM5 foi projetado com esse conceito em mente. Estamos trabalhando para criar novas ferramentas que auxiliem na adoção dessas tecnologias pela área de negócio e não apenas pelo público técnico. Nos três últimos anos, percebi que o BPM finalmente está chegando ao cenário do desenvolvimento. Com plataformas como o jBPM5, departamentos de TI serão capazes de utilizar BPM para entregar soluções que agrupem toda a informação demandada pelo negócio.
JF: Como o jBPM se encaixa em arquiteturas orientadas a serviço? Seria possível conectá-lo ao meu barramento de serviços (ESB)?
MS: Certamente, pois o jBPM também foi criado para lidar com a integração de sistemas. Isto significa que é possível coordenar e orquestrar serviços expostos pela sua arquitetura orientada a serviços e acessá-los de maneira unificada. Meu único alerta neste ponto é que se deve lembrar que o objetivo real da modelagem de processos é a colaboração com analistas de negócio. O BPM deve ir além da orquestração de serviços. O projeto jBPM pode ser utilizado para realizar a orquestração em baixo nível, mas como o BPM foi projetado inicialmente para lidar com a interação entre humanos e sistemas, tentamos evitar processos que envolvam detalhes de implementações de baixo nível.
JF: Você tem conselhos para aqueles que estão considerando ou iniciando a implementação de soluções BPM em suas empresas?
MS: Antes de iniciar a utilização de BPM é essencial conhecer os principais conceitos em volta dessa disciplina, além de entender como o BPM será aplicado na sua empresa. Existem muitos livros que tratam da aplicação do BPM em diversos cenários de negócio, mostrando como evitar erros comuns nestas implementações. Uma vez acostumado à mentalidade BPM, você perceberá que um motor de regras é o próximo passo rumo ao desenvolvimento de aplicações corporativas robustas e unificadas.
JF: A equipe está procurando contribuições?
MS: Os projetos jBPM e Drools estão sempre abertos a contribuições, desde testes simples a melhorias na documentação e relatórios de defeitos, até correções e implementação de novas funcionalidades. Se estiver interessado em participar do projeto ou aprender sobre as tecnologias relacionadas, você pode contribuir em iniciativas como a aplicação de exemplo Serviços de Emergência já mencionado e o Community Training, ou mesmo diretamente nos projetos jBPM5 e Drools. O primeiro passo no envolvimento com a comunidade é tornar-se um usuário ativo. Recomendamos abrir uma conta no JIRA e nos informar quando algo não funcionar bem. E se puder fornecer um teste simples que demonstre e isole o problema ou descrever como uma funcionalidade pode ser simplificada, poderemos então realizar rapidamente uma correção do problema ou guiá-lo na implementação das funcionalidades.
JF: Onde se pode aprender mais sobre Drools e jBPM, além da documentação oficial?
MS: Tenho blogado e publicado materiais de treinamento para ajudar na adoção destas tecnologias. Convido todos da comunidade a nos dar feedback sobre este material, que, como todo esforço comunitário, irá melhorar na medida em que for usado e comentado. Incentivamos os leitores a escreverem seus próprios blogs sobre suas experiências com projetos open source. Este post publicado por Kris Verlaenem (líder do projeto jBPM5) indica outras leituras muito interessantes. O jBPM inclui um arquivo de instalação que configura automaticamente um ambiente de trabalho para utilizar as ferramentas. O novo módulo jbpm-examples é um ótimo ponto de partida para estudar casos básicos em funcionamento, como a interação com tarefas humanas. Sintam-se à vontade para comentar no meu blog ou me seguir no Twitter (@salaboy) para mais novidades.