brms - business rules management system
DESCRIPTION
Presentation about BRMSTRANSCRIPT
![Page 1: BRMS - Business Rules Management System](https://reader030.vdocuments.mx/reader030/viewer/2022013121/555f2faad8b42a65118b4899/html5/thumbnails/1.jpg)
BRMS
BUSINESS RULES MANAGEMENT SYSTEM
![Page 2: BRMS - Business Rules Management System](https://reader030.vdocuments.mx/reader030/viewer/2022013121/555f2faad8b42a65118b4899/html5/thumbnails/2.jpg)
DROOLS• Drools Expert – RETE based rule engine
• Drools Guvnor – business rules manager
• Drools Flow – rule and process flow
• Drools Fusion - complex event processing (CEP)
• Drools integrated development environment – JBDS (Eclipse)
![Page 3: BRMS - Business Rules Management System](https://reader030.vdocuments.mx/reader030/viewer/2022013121/555f2faad8b42a65118b4899/html5/thumbnails/3.jpg)
PORQUE BRMS?• Regra de negócio desacoplada
• Sem impacto no código da aplicação
• Passível de versionamento
• Centralização do conhecimento
• Dinamismo na troca de regras
• Não gera indisponibilidade da aplicação
• Otimização e ordem da execução das regras
• Escalabilidade
![Page 4: BRMS - Business Rules Management System](https://reader030.vdocuments.mx/reader030/viewer/2022013121/555f2faad8b42a65118b4899/html5/thumbnails/4.jpg)
DROOLS
![Page 5: BRMS - Business Rules Management System](https://reader030.vdocuments.mx/reader030/viewer/2022013121/555f2faad8b42a65118b4899/html5/thumbnails/5.jpg)
DROOLS
O que é Drools?
• Uma linguagem declarativa para escrever regras que suportam expressões escritas em múltiplas linguagens.
• Java, MVEL (MVFLEX Expression Language) • Drools foca no “o que fazer” (declarativo) e não em “como
fazer”(imperativo)
• Regras declarativas tomam a seguinte forma:
when “condição” then “consequencia”
• Regras escritas no Drools são salvas em arquivos .drl
![Page 6: BRMS - Business Rules Management System](https://reader030.vdocuments.mx/reader030/viewer/2022013121/555f2faad8b42a65118b4899/html5/thumbnails/6.jpg)
GUVNOR
![Page 7: BRMS - Business Rules Management System](https://reader030.vdocuments.mx/reader030/viewer/2022013121/555f2faad8b42a65118b4899/html5/thumbnails/7.jpg)
DROOLS
O que é uma regra (rule)?
• Rules são escritas em linguagem Drools ou Domain Specific Language
Ações “IF/Then” são “When/Then” – WHEN condição(ões) THEN ação(ões)
Uma rule tem um nome (único por pacote), condição(ões), ação(ões)
Agrupamento de condições formam o chamado LHS (left hand side)
Ações são referenciadas como RHS (right hand side, ou consequencia)
![Page 8: BRMS - Business Rules Management System](https://reader030.vdocuments.mx/reader030/viewer/2022013121/555f2faad8b42a65118b4899/html5/thumbnails/8.jpg)
FATOS = POJOS
Fato é uma instância de um objeto da aplicação representado por um POJO (Plain Old Java Object)
Condicões LHS avaliam atributos POJO
Devem ter métodos get e set
public class Customer {
private Integer age;
private String status;
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
}
![Page 9: BRMS - Business Rules Management System](https://reader030.vdocuments.mx/reader030/viewer/2022013121/555f2faad8b42a65118b4899/html5/thumbnails/9.jpg)
FATOS• Pode ter métodos executados pelo mecanismo de regras
• Pode ser carregado a partir de banco de dados via Hibernate, JPA, e assim por diante e não são obrigados a usar a herança ou interfaces
JavaBeans (POJOs):
Dois tipos: estáticos e inferidos
• Fatos estáticos são fornecidos ao motor
• Fatos inferidos são calculados com base em fatos estáticos
> Fatos inferidos podem mudar ao longo do tempo
• Exemplo: índice de massa corporal (IMC) exige peso, altura• Peso, altura, são estáticos (fornecido para o motor)• IMC é inferida (calculado com base em fatos estáticos)
![Page 10: BRMS - Business Rules Management System](https://reader030.vdocuments.mx/reader030/viewer/2022013121/555f2faad8b42a65118b4899/html5/thumbnails/10.jpg)
MOTOR DE INFERÊNCIA
• Cérebro do sistema de regras é o motor de inferência que combina fatos contra as regras
• Quando é dado o “match”, as regras são colocadas na agenda
• Motor que determina que regras elegíveis da agenda deve "disparar” (fire)
![Page 11: BRMS - Business Rules Management System](https://reader030.vdocuments.mx/reader030/viewer/2022013121/555f2faad8b42a65118b4899/html5/thumbnails/11.jpg)
WORKING MEMORY• Contém objetos influenciados por regras de negócios
• Baseado em estrutura de memória
• Permite o armazenamento temporário
• Suporta manipulação POJO
• Fatos inseridos na working memory podem ser modificados na working memory
• Objetos Stateful
• Curta duração • Longa duração
![Page 12: BRMS - Business Rules Management System](https://reader030.vdocuments.mx/reader030/viewer/2022013121/555f2faad8b42a65118b4899/html5/thumbnails/12.jpg)
ALGORITMO RETE• Do latin para definir rede (network)
• Inventado pelo Dr. Charles L. Forgy
• Utilizado na maioria dos sistemas baseados em regras
• Pros
• Eficiência do manuseio de um grande número de regras• Independente do número de regras no sistema• Ganho significante em cima de “if/then”
• Cons
• Pode utilizar intensamente a memória• Principais problemas de performance são regras mal
escritas.
![Page 13: BRMS - Business Rules Management System](https://reader030.vdocuments.mx/reader030/viewer/2022013121/555f2faad8b42a65118b4899/html5/thumbnails/13.jpg)
• Modela as regras como uma rede de diferentes tipos nós
• Conforme os fatos são inseridos, são associados com nodes no grafo
• Fatos encontram as rules
• Cada node é uma coleção de fatos satisfazendo restrições modeladas pelo node
RETE - FEATURES
![Page 14: BRMS - Business Rules Management System](https://reader030.vdocuments.mx/reader030/viewer/2022013121/555f2faad8b42a65118b4899/html5/thumbnails/14.jpg)
LHS• LHS é uma série de elementos condicionais
• Pattern é zero ou mais restrições com ligação opcional
• Constraint é uma expressão que testa true ou false
• Cada constraint precisa ser verdadeira para ser disparada.
![Page 15: BRMS - Business Rules Management System](https://reader030.vdocuments.mx/reader030/viewer/2022013121/555f2faad8b42a65118b4899/html5/thumbnails/15.jpg)
PATTERNS
![Page 16: BRMS - Business Rules Management System](https://reader030.vdocuments.mx/reader030/viewer/2022013121/555f2faad8b42a65118b4899/html5/thumbnails/16.jpg)
EXEMPLO
package org.co.orders
import org.co.Customer;
import org.co.Order;
# provide discount for platinum customers
rule "Customer Platinum Status" whenCustomer( status == “platinum” ) and (order : Order( orderPriority == 3 ) or order : Order(value >= 25000))
then
order.setOrderDiscount(8.5)
end
![Page 17: BRMS - Business Rules Management System](https://reader030.vdocuments.mx/reader030/viewer/2022013121/555f2faad8b42a65118b4899/html5/thumbnails/17.jpg)
RHS ACTIONS • Lista de ações a serem executadas
• Geralmente alterar o estado dos fatos
• Inserir novos fatos• Atualizar um fato• Definir um valor para um atributo
• Boa prática é evitar códigos condicionais dentro do THEN
• Não usar if-else, for-while ou qualquer outra lógica
![Page 18: BRMS - Business Rules Management System](https://reader030.vdocuments.mx/reader030/viewer/2022013121/555f2faad8b42a65118b4899/html5/thumbnails/18.jpg)
DECISION TABLES
Planilha de regras criada em formato (.xls) ou criada em formato .csv
Conteúdo das células combinado com template de dados para gerar regras
Necessário quando:
• Compactar uma forma de visualizar muitas regras com patterns similares
• Separar fatos das regras
![Page 19: BRMS - Business Rules Management System](https://reader030.vdocuments.mx/reader030/viewer/2022013121/555f2faad8b42a65118b4899/html5/thumbnails/19.jpg)
DOMAIN SPECIFIC LANGUAGE - DSL• Uma DSL é uma linguagem criada para solucionar um
problema específico de domínio do negócio, de forma pontual.
• Cria um mapeamento entre modelo de domínio e modelo de regras do Drools.
• Utilizada geralmente quando o desenvolvimento das regras é feito por analistas de negócio.
• Criadas em arquivos .dsl
• Utilizadas nas regras em arquivos .drl
![Page 20: BRMS - Business Rules Management System](https://reader030.vdocuments.mx/reader030/viewer/2022013121/555f2faad8b42a65118b4899/html5/thumbnails/20.jpg)
DSL - EXEMPLO
![Page 21: BRMS - Business Rules Management System](https://reader030.vdocuments.mx/reader030/viewer/2022013121/555f2faad8b42a65118b4899/html5/thumbnails/21.jpg)
DSL INTERNAcriteriaFor(Person.class)
.withProperty(sex()).eq(Gender.FEMALE).and()
.withProperty(ssn().country()).eq(SWEDEN).and()
.lbrace().withProperty(name().first()).like("A%")
.or().withProperty(name().last()).like("A%").rbrace()
.orderBy(name().last())
.build();
Vantagem?
![Page 22: BRMS - Business Rules Management System](https://reader030.vdocuments.mx/reader030/viewer/2022013121/555f2faad8b42a65118b4899/html5/thumbnails/22.jpg)
TESTES• Equivalente a um teste unitário JUnit
• É criado pela interface gráfica
• Não é necessário codificar
• Similar a criar regra no editor
• Garantia de QA
• Integração
![Page 23: BRMS - Business Rules Management System](https://reader030.vdocuments.mx/reader030/viewer/2022013121/555f2faad8b42a65118b4899/html5/thumbnails/23.jpg)
TESTES• Define-se LHS (Given)
• Insere o fato• Define o valor os atributos
• Define-se RHS (Expectation)
• Define quais regras serão lançadas• Espera valores de retorno• Controle de data
• Similar ao JUnit
• Barra verde – Teste OK• Barra vermelha – Teste Falhou
![Page 24: BRMS - Business Rules Management System](https://reader030.vdocuments.mx/reader030/viewer/2022013121/555f2faad8b42a65118b4899/html5/thumbnails/24.jpg)
QA VIEW• Executa todos os testes do pacote selecionado
• Mostra todos os testes, estados e regras executadas
• Ferramenta para avaliar inconsistências e erros
• Bateria de testes pode ser executada remotamente
• Possível também coletar resultados
• URL disponivel no build do package
![Page 25: BRMS - Business Rules Management System](https://reader030.vdocuments.mx/reader030/viewer/2022013121/555f2faad8b42a65118b4899/html5/thumbnails/25.jpg)
FLUXO
![Page 26: BRMS - Business Rules Management System](https://reader030.vdocuments.mx/reader030/viewer/2022013121/555f2faad8b42a65118b4899/html5/thumbnails/26.jpg)
API
![Page 27: BRMS - Business Rules Management System](https://reader030.vdocuments.mx/reader030/viewer/2022013121/555f2faad8b42a65118b4899/html5/thumbnails/27.jpg)
KNOWLEDGE AGENT
![Page 28: BRMS - Business Rules Management System](https://reader030.vdocuments.mx/reader030/viewer/2022013121/555f2faad8b42a65118b4899/html5/thumbnails/28.jpg)
CHANGESET• Pode apontar para um package ou um arquivo .drl externo
![Page 29: BRMS - Business Rules Management System](https://reader030.vdocuments.mx/reader030/viewer/2022013121/555f2faad8b42a65118b4899/html5/thumbnails/29.jpg)
SALIENCE• Valor positivo ou negativo, inteiro que define a
importância da regra.
• Valor mais alto significa maior prioridade.
• Default é 0