brms - business rules management system

30
BRMS BUSINESS RULES MANAGEMENT SYSTEM

Upload: samuel-tauil

Post on 22-May-2015

1.486 views

Category:

Technology


5 download

DESCRIPTION

Presentation about BRMS

TRANSCRIPT

Page 1: BRMS - Business Rules Management System

BRMS

BUSINESS RULES MANAGEMENT SYSTEM

Page 2: BRMS - Business Rules Management System

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

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

DROOLS

Page 5: BRMS - Business Rules Management System

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

GUVNOR

Page 7: BRMS - Business Rules Management System

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

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

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

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

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

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

• 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

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

PATTERNS

Page 16: BRMS - Business Rules Management System

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

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

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

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

DSL - EXEMPLO

Page 21: BRMS - Business Rules Management System

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

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

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

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

FLUXO

Page 26: BRMS - Business Rules Management System

API

Page 27: BRMS - Business Rules Management System

KNOWLEDGE AGENT

Page 28: BRMS - Business Rules Management System

CHANGESET• Pode apontar para um package ou um arquivo .drl externo

Page 29: BRMS - Business Rules Management System

SALIENCE• Valor positivo ou negativo, inteiro que define a

importância da regra.

• Valor mais alto significa maior prioridade.

• Default é 0

Page 30: BRMS - Business Rules Management System

OBRIGADO!

Samuel Tauil@samueltauil

[email protected]