Prós e contras dos motores de regras Java [fechados]

Quais são os prós e os contras para adoptar os motores Java rulesJESS eDrools ? Há mais algum jogador?

eu entendo que Baba é de código aberto e JESS não é, mas como eles se comparam em outras áreas como facilidade de uso, Desempenho, Nível de integração com o seu código?

Author: rafalmag, 2010-01-30

5 answers

Quais são os prós e os contras para adoptar as regras Java?

Utilize um motor de regras se precisar de separar as regras de negócio da lógica de Aplicação. O artigo do Your Project Need a Rule Engine article has a good example:

Por exemplo, uma loja típica sistema pode envolver código para calcular um desconto:
if (product.quantity > 100 && product.quantity < 500) {
  product.discount = 2;
} else if (product.quantity >= 500 && product.quantity < 2000) {
  product.discount = 5;
} else if (product.quantity >= 2000) {
  product.discount = 10;
}

Um motor de regras substitui o anterior com código que parece isto:

ruleEngine.applyRules(product);

Cabe a você decidir se colocar uma consola de administração de regras nas mãos de pessoas não-técnicas é uma coisa boa ou não:)

Mais detalhes em devo usar um motor de regras?, porquê usar um motor de regras?, algumas orientações para decidir se deve usar um motor de regras e em Google .

Há mais algum jogador?
([4]) entre os outros actores contam-se os Joules, os Corticon (os JRules são os mais famosos da OMI - que não significa o melhor).

Como eles se comparam em outras áreas como facilidade de uso, Desempenho, Nível de integração com o seu código?

Não posso dizer com precisão, só tenho um pouco de experiência (positiva) com Baba. Mas você vai receber algum feedback de posts do blog como JBoss Drools vs ILog JRules - uma história anedótica (certifique-se de lê-lo) ou trabalhando com Drools de uma perspectiva JRules {[[9]}. Tenho certeza que você pode encontrar mais deles no Google (mas eu gostaria faça uma tentativa de Baba).
 121
Author: Pascal Thivent, 2014-05-13 16:02:12

Integrado, mas as regras são muito mais complicadas de entender, pois é uma abordagem mais programática. É por isso que, muito provavelmente, nos vamos cingir às regras de abertura.

 14
Author: Dominik Sandjaja, 2018-01-18 18:34:16

Tivemos uma pergunta semelhante connosco, finalmente apanhámos Baba, deve-se usar Baba se se tem o seguinte:

    [[4]] lógica de negócios que você acha que está ficando atolada com múltiplas condições if por causa da variedade de cenários
  • terás uma procura crescente de aumento na complexidade
  • as alterações da lógica empresarial seriam frequentes (1-2 vezes por ano seriam também Frequentes)
  • O seu servidor tem memória suficiente, pois é uma ferramenta faminta de memória. fornece desempenho ao custo da memória

Tem mais detalhes no seguinte URL

 6
Author: Sachin Thapa, 2017-11-10 14:53:15

Apenas adicionando que muitas pessoas estão à procura de algo mais semelhante à gestão se certas condições são cumpridas para permitir ou desativar certas características em uma aplicação.

Cansei-me de voltar a implementar o mesmo padrão por todo o lado, por isso decidi fazer um projecto OSS para ele chamado Roolie. http://sourceforge.net/projects/roolie/

Acabei de o maven-Izar e como não houve erros reportados desde 2010, quando foi lançado, eu actualizei-o para v 1.0, sem alterações para além das necessárias para o hospedar no Maven Central (que estou a fazer).

[[1]} basicamente JSR-94 é exagero para a maioria das coisas, e há uma enorme curva de aprendizagem e overhead que vão junto com as ofertas atuais. Tudo bem, se é isso que queres. Mas se você só quiser acorrentar regras simples escritas em Java juntamente com XML para manter seus testes de Estado, Roolie é uma maneira muito rápida de fazê-lo. Sem dependências e sem aprendizagem curva.
 3
Author: R K, 2013-04-01 05:12:03
Quando precisávamos de um motor de regras, decidimos rolar o nosso próprio, porque os disponíveis eram muito complicados para as nossas tarefas simples. Se você é mesmo remotamente experiente com expressões de processamento que os usuários podem colocar, isso não é muito difícil de fazer. No nosso caso, a maior parte da especificação é tratada por um XSD e apenas alguns dos campos são analisados mais adiante.
 2
Author: Confusion, 2010-01-30 13:49:07