Thursday, February 24, 2011

Motores de Regras - BRMS 101

Com a popularização de projetos SOA, também houve um renascimento do conceito de motores de regras (Rule Engine). Mas o que são motores de regras?
Um motor de regra é um sistema computacional que tem a capacidade de executar um conjunto de regras de negócios em um ambiente de produção. Eles são chamados em inglês de BRMS (Business Rules Management Systems).
Um BRMS não nos é útil se não entendermos o conceitos primário de uma regra de negócio, descrito abaixo.
Regras de Negócio - Átomos de Negócio do Domínio
Uma regra de negócio expressa uma restrição sobre um domínio de negócio. Um exemplo simples é mostrado abaixo:
Se o cliente possuir cadastro de crédito positivo no SERASA, então o desconto sobre o financiamento será de 1%
A premissa de um motor de regras é que as regras podem ser expressas e mantidas em uma linguagem natural (ou uma aproximação) e portanto permitem uma velocidade e responsividade muito maior da TI a alterações regulatórias e de inovação nas áreas de negócio. Em tese, a mudança da regra de desconto de um financiamento de crédito pode ser totalmente implementada por um analista de negócio em um sistema BRMS, sem conhecimentos profundos dos complexos padrões WS-* e de linguagens pouco produtivas como Java, COBOL ou C++.
Regras não são um agrupamento desordenado de textos. Um modelo de regras deve ser identificado e organizado a partir de um conjunto de critérios formais tais como:
  • um vocabulário de negócio que exprime a semântica dos conceitos sendo trabalhados em um domínio - Fatos;
  • um conjunto de proposições que permitem a geração de conhecimento a partir destes fatos.
No exemplo acima, podemos identificar como fatos primários o CLIENTE e o FINANCIAMENTO. A proposição do exemplo usa o crédito do CLIENTE para estabelecer uma política de desconto sobre o FINANCIAMENTO.
Um modelo formal para compreender como estruturar regras de negócios é o OMG SVBR, cuja versão 1.0 está disponível aqui. Recomendo fortemente que os iniciados em BRMS estudem este documento antes de abrir e trabalhar com uma suíte BRMS. O documento pode parecer tedioso, mas assim como para dirigirmos um carro precisamos de aulas de legislação, precisamos entender que suítes BRMS estão baseados em conceitos não tão populares que precisam ser entendidos. Para os mais apressados, uma boa introdução ao tema está disponível aqui.
Outras especificações relacionadas são o OMG BMM (que motra o papel das regras de negócio dentro da modelagem de negócio) e o OMG PRR (que mostra como um programa computacional pode ativar inferências a partir de um conjunto de regras de negócio e uma memória de trabalho). O PRR é, em termos leigos, o mecanismo de inteligência artificial usado pelos motores de regras. O BMM, por sua vez, permite entender como o BRMS está ligado com o BPM e as estratégias corporativas.
Suítes BRMS
Um BRMS parece ser apenas uma ferramenta, mas como o próprio nome diz ele se refere a um conjunto de ferramentas, onde cada ferramenta tem um propósito. Listo abaixo algumas categorias de ferramentas BRMS:

  • Sistemas de produção de regras. Sistemas baseados em algoritmos de produção de regras como o RETE. Normalmente permitem que analistas e desenvolvedores expressem regras em uma linguagem natural baseada em critérios IF/THEN. Um exemplo de ferramenta nesta linha é o Drools Expert.

  • Sistemas de processamento de eventos (CEP). Eventos são regras temporais que podem ser expressas da forma WHEN/DO e permitem a construção de sistemas que reajam a eventos e realizem algum tipo de raciocínio temporal/espacial. Um exemplo de evento seria: Quando houver três transações de débitos no cartão em menos de trinta minutos em três estabelecimentos comerciais diferentes, realizar o bloqueio do cartão e solicitar que um atendente ligue para o proprietário do cartão para confirmar o desbloqueio. Uma ferramenta nesta linha é o Drools Fusion.

  • Sistemas de governança de regras. É fácil criamos centenas ou milhares de regras em uma implementação BRMS. É mais fácil ainda perdemos a governança sobre estas regras. Regras possuem versões, dependências e impactos sobre outras regras. Portanto, possuir um sistema de governança de regras é fundamental em implementações BRMS. O Drools Guvnor é um exemplo deste tipo de ferramenta.

  • Um ambiente de desenvolvimento para criarmos regras. Um exemplo nesta linha é o plugin Eclipse JBOSS Tools, que permite a criação e manutenção de regras de negócio no Drools.

  • No comments: