Você está na página 1de 30

JBoss Drools

Mudando as Regras do Jogo

Edson Tirelli
Sr. Software Engineer

Sistemas Corporativos

Sistema Corporativo

Dcadas de 50-60: sistemas monolticos


2

Sistemas Corporativos

Dados

Sistema Corporativo

Dcadas de 60-70: separao dos dados


3

Sistemas Corporativos

Dados

Tarefas

Sistema Corporativo

Dcadas de 70-80: procedimentos reutilizveis


4

Sistemas Corporativos

Dados

Tarefas

Processos

Regras

A partir de 90: separao dos processos e regras


5

Sistemas Corporativos

Quem?

Dados

Tarefas

Como?

Quando?

Processos

Regras

O que?

A partir de 90: separao dos processos e regras


6

Conceitos

Regra:

Conjunto de condies a serem avaliadas e uma lista de aes a serem executadas (consequncia) caso as condies sejam verdadeiras.

Fatos:

Dados sobre os quais as regras so aplicadas.

Origens das regras:

Regulamentao legal: Se o tempo de uma chamada telefnica celular for inferior a 30 segundos, ento cobre 30 segundos.

Polticas da empresa: Se a compra for acima de R$ 100,00, ento aplique 10% de desconto.

Conhecimento de especialistas: Se a presso da caldeira estiver acima de 'n' vezes a temperatura, ento inicie o procedimento de despressurizao.
7

Ferramentas

Dados:

DBMS: Sistemas de Bancos de Dados (Relacional, OO, Hierrquico, etc)

Tarefas:

Linguagens Imperativas (C/C++, Java, C#, Python, etc)

Processos:

BPMS: Engines de Processos (jBPM, WS Process Server, WLI, etc)

Regras:

BRMS: Engines de Regras (Drools, CLIPS, iLOG JRules, Jess, etc)

BRMS: Engine de Regras

Componente de software especializado no gerenciamento e processamento de regras.

Um BRMS est para as regras como um SGBD est para os dados.

SGBD

BRMS

Dados

Regras

BRMS: Macro Arquitetura


Analistade Negcios

Aplicao
GUI/Processos/Componentes

Drools
IDEEclipse (Desenvolvimento) Desenvolvedor BRMS (Gerenciamento deDeployment eConfigurao) BRMS (Edioe Manutenode Regras) Enginede Regras (Runtime) Serviosde Dados

Gerentede Configurao

Repositrio deAtivos (Desenv)

Repositrio deAtivos (Prod)

Dados

10

Engine de Regras
Analistade Negcios

Aplicao
GUI/Processos/Componentes

Drools
IDEEclipse (Desenvolvimento) Desenvolvedor BRMS (Gerenciamento deDeployment eConfigurao) BRMS (Edioe Manutenode Regras) Enginede Regras (Runtime) Serviosde Dados

Gerentede Configurao

Repositrio deAtivos (Desenv)

Repositrio deAtivos (Prod)

Dados

11

Engine de Regras: Runtime


Aplicao
Aes: Chamadas de callback Aes: Controle de execuo

Production Memory (Regras)

Engine de Regras

Working Memory (Fatos)

Aes: Adicionar Regra Remover Regra Executar Regras

Aes: Adicionar Fatos Remover Fatos Modificar Fatos

Drools
12

Engine de Regras: Runtime


Aplicao
Aplicao dispara a execuo

Se a compra for acima de R$ 100,00, ento aplique 10% de desconto. Engine de Regras

Compra( R$ 80,00 ) Compra( R$ 150,00 ) Compra( R$ 40,00 ) Compra( R$ 200,00 )

Production Memory

Working Memory

Drools
13

Engine de Regras: Runtime


Aplicao

Se a compra for acima de R$ 100,00, ento aplique 10% de desconto. Engine de Regras

Compra( R$ 80,00 ) Compra( R$ 135,00 ) Compra( R$ 40,00 ) Compra( R$ 200,00 )

Production Memory

Engine executa a regra para compra 2.

Working Memory

Drools
14

Engine de Regras: Runtime


Aplicao

Se a compra for acima de R$ 100,00, ento aplique 10% de desconto. Engine de Regras

Compra( R$ 80,00 ) Compra( R$ 135,00 ) Compra( R$ 40,00 ) Compra( R$ 180,00 )

Production Memory

Engine executa a regra para compra 4.

Working Memory

Drools
15

Quando usar Engines de Regras?


Use se:

No use se:

Sua aplicao envolve tomadas de decises. Suas regras so complexas. Suas regras esto sujeitas mudanas frequentes Suas regras precisam ser compartilhadas entre aplicaes e organizaes Se voc est em um mercado voltil com frequentes mudanas no negcio, alta competitividade ou regulamentao extensa e complexa

Suas regras so basicamente estticas e computacionais Suas regras so simples, mesmo que em quantidade Seu sistema trabalha com poucas regras.

16

O que o Drools?

Engine de Regras:

Forward Chaining Algoritmo ReteOO Otimizaes: indexao de memrias Beta, hashing de ns Alfa, etc In-memory working memory

Arquitetura e Integrao

100% Java, roda tanto em JSE quanto JEE Acesso transparente e direto ao modelo de domnio POJO Ferramenta de middleware, integrvel containers JEE, Aplicaes Web, WebServices, jBPM, Seam, LDAP

JSR94 compliant

17

Caractersticas

Implementao das regras:

Implementao declarativa Evita que as regras fiquem embutidas no cdigo Regras podem ser alteradas sem a necessidade de recompilao Otimiza a execuo de conjuntos de regras altamente complexos

Formas de definio das regras:

DRL (Drools Rule Language): linguagem nativa similar ao java DSL (Domain Specific Language): linguagem de alto nvel especfica ao domnio

BRX: Guided Editors (Eclipse e Web) Excel / OpenOffice: planilhas de tabelas de deciso XML: documentos XML com a declarao das regras API: para acesso direto via cdigo Java
18

Regra em DRL
Regras so declarativas salience agenda-group activation-group no-loop auto-focus duration <int> <string> <string> <boolean> <boolean> <long>

rule <nome da regra> <atributo> <valor> when <LHS: condies> then <RHS: aes> end

LHS: Condies serem checadas. RHS: aes que devem ser executadas quando as condies forem satisfeitas. (Cdigo Java ou MVEL)
19

(Linguagem nativa DRL)

Exemplo de Regra em DRL


Se o jogador tem idade menor ou igual a 18 anos e habilidade superior a 7, ento aplique 10% de aumento no salrio.

20

Pacote: conjunto de recursos


package com.sample import java.util.Map import com.sample.Cheese global Cheese cheese function void exampleFunction(Cheese cheese) { System.out.println( cheese ); } rule A Cheesy Rule when . then . end rule Another rule when ... then ... end 21

Demonstrao: Sudoku

22

Drools IDE

23

Guided Editor (Eclipse)

24

DSL Editor (Eclipse)

25

Decision Tables (Excel/OpenOffice)

26

BRMS: Guided Editor

27

RuleFlow Editor (Eclipse)

28

Auditoria

29

Questions?
Dave Bowman: All right, HAL; I'll go in through the emergency airlock. HAL: Without your space helmet, Dave, you're going to find that rather difficult. Dave Bowman: HAL, I won't argue with you anymore! Open the doors! HAL: Dave, this conversation can serve no purpose anymore. Goodbye.

Joshua: Greetings, Professor Falken. Stephen Falken: Hello, Joshua. Joshua: A strange game. The only winning move is not to play. How about a nice game of chess?

EdsonTirelli

JBossSr.SoftwareEngineer/DroolsCoreDev etirelli@redhat.com
30