revista Java Magazine edição 53. Clique aqui para ler todos os artigos desta edição

12pt">Como construir de forma simples aplicações resistentes a mudanças e desacopladas de suas regras com Java e Drools
Os mecanismos de regras têm como um de seus principais objetivos separar as regras de negócios dos códigos de infra-estrutura (ex. persistência, transações, e-mail, mensageria etc.). Este artigo demonstra a aplicabilidade prática do engine de regras open source Drools, um dos mais tradicionais e poderosos do mercado.
Histórico e exemplo
O Drools foi lançado pela Codehaus (codehaus.org) e posteriormente adotado como um projeto do JBoss, empresa que emprega em tempo integral um bom número de profissionais da equipe de desenvolvimento do projeto. Por um tempo, o Drools foi conhecido como JBoss Rules, porém na sua versão mais atual, o título da versão comunitária voltou ao original Drools. A distribuição com suporte da Red Hat, entretanto, ainda mantém o nome JBoss Rules.
O contexto do nosso exemplo é uma hipotética corretora de seguros, em que os valores das propostas de seguro são determinados por regras definidas externamente, em um arquivo do Drools. Novas regras criadas nesse arquivo refletirão automaticamente sobre resultados da execução do sistema. Ao usar o Drools, portanto, temos mais liberdade para alterar as regras de negócios e eliminamos a necessidade de deploy ou compilação da aplicação quando essas regras mudarem.
Os objetos de domínio do exemplo ficarão dentro do pacote jm.seguros.beans. São eles: Proposta, Cliente e Bem. Também temos um enum Tipo (usado para indicar o tipo de cada bem). Veja esses itens na Listagem 1. Observe que a classe Proposta contém um Cliente e um Bem como atributos. O valor final da proposta depende destes atributos, que são usados nos cálculos especificados no arquivo de regras.
Listagem 1. Beans do exemplo (todos no pacote jm.seguros.beans)
Proposta.java
public class Proposta {
private Integer id;
private Cliente cliente;
private Bem bem;
private Double valor;
}