12. Drools Expert
●
POJO
●
ReteOO
●
MVEL
●
JSR-94
●
Várias formas de definir regras
●
Drools Rule Language
●
Domain Specific Language Rules
●
Decision Tables
22. API
KnowledgeBuilder kb = KnowledgeBuilderFactory.newKnowledgeBuilder();
kb.add( ResourceFactory.newClassPathResource("my.drl"),
ResourceType.DRL );
if ( kb.hasErrors() ) {
throw new RuntimeException( "Compilation error.n" +
kb.getErrors().toString() );
}
KnowledgeBase kbase = kb.newKnowledgeBase();
23. API
StatefulKnowledgeSession kession =
kbase.newStatefulKnowledgeSession();
kession.insert( new Motorista(15, Estado.BEBADO) );
kession.insert( new Motorista(21, Estado.BEBADO) );
kession.insert( new Motorista(35, Estado.SOBRIO) );
kession.fireAllRules();
StatelessKnowledgeSession kession =
kbase.newStatelessKnowledgeSession();
ou então... kession.execute( Arrays.asList(
new Motorista(15, Estado.BEBADO),
new Motorista(21, Estado.BEBADO),
new Motorista(35, Estado.SOBRIO) ));
25. Business Rule Management System
●
Definição (wikipedia):
●
Repositório
●
Tooling
●
Runtime
●
Por que / quando?
●
Aproximação de SMEs
●
Gerenciamento de business rules
●
Ponto único de verdade (consistência)
28. Ganhos
●
Declarativo, não imperativo
●
Maior expressividade
●
Melhor visualização
●
Separação da lógica do sistema
●
Maior interatividade
●
Dinamicidade
●
Centralização
●
Administração