sistemas baseados em regras aula3: droolspdcosta/ensino/2012-1-sistemas-baseados-em-regr… ·...
TRANSCRIPT
![Page 1: Sistemas Baseados em Regras Aula3: Droolspdcosta/ensino/2012-1-sistemas-baseados-em-regr… · Drools Expert (rule engine) jBPM 5 (process/workflow) Drools Fusion (event processing/temporal](https://reader034.vdocuments.co/reader034/viewer/2022042621/5f539f94d5af422bfa324847/html5/thumbnails/1.jpg)
Sistemas Baseados em Regras
Aula3: DroolsAula3: Drools
Profa. Patrícia Dockhorn Costa
www.inf.ufes.br/~pdcosta/ensino
![Page 2: Sistemas Baseados em Regras Aula3: Droolspdcosta/ensino/2012-1-sistemas-baseados-em-regr… · Drools Expert (rule engine) jBPM 5 (process/workflow) Drools Fusion (event processing/temporal](https://reader034.vdocuments.co/reader034/viewer/2022042621/5f539f94d5af422bfa324847/html5/thumbnails/2.jpg)
Drools
� “Business Logic integration Platform”
� Plataforma integrada para gerenciamento de:
� Regras
Workflow� Workflow
� Eventos
![Page 3: Sistemas Baseados em Regras Aula3: Droolspdcosta/ensino/2012-1-sistemas-baseados-em-regr… · Drools Expert (rule engine) jBPM 5 (process/workflow) Drools Fusion (event processing/temporal](https://reader034.vdocuments.co/reader034/viewer/2022042621/5f539f94d5af422bfa324847/html5/thumbnails/3.jpg)
Plataforma Drools
� Drools Guvnor (business rules manager)
� Drools Expert (rule engine)
� jBPM 5 (process/workflow)
� Drools Fusion (event processing/temporal
reasoning)
� Drools Planner (automated planning)
![Page 4: Sistemas Baseados em Regras Aula3: Droolspdcosta/ensino/2012-1-sistemas-baseados-em-regr… · Drools Expert (rule engine) jBPM 5 (process/workflow) Drools Fusion (event processing/temporal](https://reader034.vdocuments.co/reader034/viewer/2022042621/5f539f94d5af422bfa324847/html5/thumbnails/4.jpg)
Drools Expert
Rule Type Production
Execution Method Forward Chaining
Pattern Matching Rete AlgorithmPattern Matching Rete Algorithm
Conflict Resolution Salience and LIFO
![Page 5: Sistemas Baseados em Regras Aula3: Droolspdcosta/ensino/2012-1-sistemas-baseados-em-regr… · Drools Expert (rule engine) jBPM 5 (process/workflow) Drools Fusion (event processing/temporal](https://reader034.vdocuments.co/reader034/viewer/2022042621/5f539f94d5af422bfa324847/html5/thumbnails/5.jpg)
Arquitetura do Drools Expert
![Page 6: Sistemas Baseados em Regras Aula3: Droolspdcosta/ensino/2012-1-sistemas-baseados-em-regr… · Drools Expert (rule engine) jBPM 5 (process/workflow) Drools Fusion (event processing/temporal](https://reader034.vdocuments.co/reader034/viewer/2022042621/5f539f94d5af422bfa324847/html5/thumbnails/6.jpg)
Fatos em Drools
� Fatos são objetos java que podem ser
acessados por uma regra
� A máquina de regras mantém apenas
referencias para os objetosreferencias para os objetos
� Para que objetos tenham referência na
máquina, devemos definir getters e setters
nas respectivas classes (ou definir diretamente
na working memory usando declare)
![Page 7: Sistemas Baseados em Regras Aula3: Droolspdcosta/ensino/2012-1-sistemas-baseados-em-regr… · Drools Expert (rule engine) jBPM 5 (process/workflow) Drools Fusion (event processing/temporal](https://reader034.vdocuments.co/reader034/viewer/2022042621/5f539f94d5af422bfa324847/html5/thumbnails/7.jpg)
Um exemplo de tipo de fato (em
Java)public class Applicant {
private String name; private int age; private boolean valid; //getter and setter methods//getter and setter methods
here
}
![Page 8: Sistemas Baseados em Regras Aula3: Droolspdcosta/ensino/2012-1-sistemas-baseados-em-regr… · Drools Expert (rule engine) jBPM 5 (process/workflow) Drools Fusion (event processing/temporal](https://reader034.vdocuments.co/reader034/viewer/2022042621/5f539f94d5af422bfa324847/html5/thumbnails/8.jpg)
Ou diretamente no arquivo de
regras ...
Declare Applicant
name: String
age: int
valid: boolean
end
![Page 9: Sistemas Baseados em Regras Aula3: Droolspdcosta/ensino/2012-1-sistemas-baseados-em-regr… · Drools Expert (rule engine) jBPM 5 (process/workflow) Drools Fusion (event processing/temporal](https://reader034.vdocuments.co/reader034/viewer/2022042621/5f539f94d5af422bfa324847/html5/thumbnails/9.jpg)
Um exemplo de regra ...
rule "Is of valid age"
when
$a : Applicant( age < 18 )
then then
$a.setValid( false );
end
![Page 10: Sistemas Baseados em Regras Aula3: Droolspdcosta/ensino/2012-1-sistemas-baseados-em-regr… · Drools Expert (rule engine) jBPM 5 (process/workflow) Drools Fusion (event processing/temporal](https://reader034.vdocuments.co/reader034/viewer/2022042621/5f539f94d5af422bfa324847/html5/thumbnails/10.jpg)
Um pouco mais sobre a regra...
� Define duas “constraints”:
� Tipo (Applicant)
� Valor de campo (age < 18)
� Constraint de tipo (com ou sem constraints de � Constraint de tipo (com ou sem constraints de
campo) é chamado de Padrão (Pattern)
� Quando uma instância inserida satisfaz as
constraints (de tipos e campos), há um
Casamento (data is Matched)
![Page 11: Sistemas Baseados em Regras Aula3: Droolspdcosta/ensino/2012-1-sistemas-baseados-em-regr… · Drools Expert (rule engine) jBPM 5 (process/workflow) Drools Fusion (event processing/temporal](https://reader034.vdocuments.co/reader034/viewer/2022042621/5f539f94d5af422bfa324847/html5/thumbnails/11.jpg)
Working Memory
� Armazena os fatos
� Fatos podem ser inseridos, modificados ou
removidosremovidos
� Permite:
� Executar queries
� Acesso a Entry Points
![Page 12: Sistemas Baseados em Regras Aula3: Droolspdcosta/ensino/2012-1-sistemas-baseados-em-regr… · Drools Expert (rule engine) jBPM 5 (process/workflow) Drools Fusion (event processing/temporal](https://reader034.vdocuments.co/reader034/viewer/2022042621/5f539f94d5af422bfa324847/html5/thumbnails/12.jpg)
Working Memory Entry
Point� Insertion (assertion)
� Insere um fato na working memory
� Momento da avaliação das regras (pode ativar
regras)regras)
� Retraction
� Remove um fato da working memory
� Pode cancelar ativação de regras
� Pode ativar regras (regras que dependem da não
existencia de um fato)
![Page 13: Sistemas Baseados em Regras Aula3: Droolspdcosta/ensino/2012-1-sistemas-baseados-em-regr… · Drools Expert (rule engine) jBPM 5 (process/workflow) Drools Fusion (event processing/temporal](https://reader034.vdocuments.co/reader034/viewer/2022042621/5f539f94d5af422bfa324847/html5/thumbnails/13.jpg)
Working Memory Entry
Point (cont.)
� Update
� Notifica a working memory de alguma mudança
no objetono objeto
� Internamente é tratado como um retraction
seguido de um insertion
![Page 14: Sistemas Baseados em Regras Aula3: Droolspdcosta/ensino/2012-1-sistemas-baseados-em-regr… · Drools Expert (rule engine) jBPM 5 (process/workflow) Drools Fusion (event processing/temporal](https://reader034.vdocuments.co/reader034/viewer/2022042621/5f539f94d5af422bfa324847/html5/thumbnails/14.jpg)
Insertion Modes
� Determina como os fatos são gerenciados pela
working memory:
� Identity insertion
� Novos fatos são comparados a fatos existentes por
“referência”“referência”
� Novo FactHandle é retornado se não houver referência do
objeto na working memory
� Equality insertion
� Novos fatos são comparados a fatos existentes por “valor”
� Se o conteúdo do objeto for diferente, retorna um novo
FactHandle
![Page 15: Sistemas Baseados em Regras Aula3: Droolspdcosta/ensino/2012-1-sistemas-baseados-em-regr… · Drools Expert (rule engine) jBPM 5 (process/workflow) Drools Fusion (event processing/temporal](https://reader034.vdocuments.co/reader034/viewer/2022042621/5f539f94d5af422bfa324847/html5/thumbnails/15.jpg)
Production Memory
� A Production Memory armazena as regras
� O processamento das regras é definido
pelo algoritmo Rete, no processo de
Pattern Matching (casamento de
padrões).padrões).
� Drools usa o ReteOO, que é uma
extensão do Rete
![Page 16: Sistemas Baseados em Regras Aula3: Droolspdcosta/ensino/2012-1-sistemas-baseados-em-regr… · Drools Expert (rule engine) jBPM 5 (process/workflow) Drools Fusion (event processing/temporal](https://reader034.vdocuments.co/reader034/viewer/2022042621/5f539f94d5af422bfa324847/html5/thumbnails/16.jpg)
� Controla a ordem de execução das regras
ativadas (já casadas) usando a estratégia de
resolução de conflitos (Salience or LIFO)
Agenda
![Page 17: Sistemas Baseados em Regras Aula3: Droolspdcosta/ensino/2012-1-sistemas-baseados-em-regr… · Drools Expert (rule engine) jBPM 5 (process/workflow) Drools Fusion (event processing/temporal](https://reader034.vdocuments.co/reader034/viewer/2022042621/5f539f94d5af422bfa324847/html5/thumbnails/17.jpg)
Engine Cycles
![Page 18: Sistemas Baseados em Regras Aula3: Droolspdcosta/ensino/2012-1-sistemas-baseados-em-regr… · Drools Expert (rule engine) jBPM 5 (process/workflow) Drools Fusion (event processing/temporal](https://reader034.vdocuments.co/reader034/viewer/2022042621/5f539f94d5af422bfa324847/html5/thumbnails/18.jpg)
� Responsável por manter e restaurar a consistência da working memory
� Fatos inseridos “logicamente” sãoautomaticamente retirados quando as condições
Truth Mantainance
automaticamente retirados quando as condiçõesque o inseriram não forem mais verdadeiras
� Uma insertion de fato pode ser:� Stated: inserção normal.
� Justified: inserção lógica (somente na RHS de uma regra).
![Page 19: Sistemas Baseados em Regras Aula3: Droolspdcosta/ensino/2012-1-sistemas-baseados-em-regr… · Drools Expert (rule engine) jBPM 5 (process/workflow) Drools Fusion (event processing/temporal](https://reader034.vdocuments.co/reader034/viewer/2022042621/5f539f94d5af422bfa324847/html5/thumbnails/19.jpg)
� Baseado no modo de inserção “identity”. Ou
seja, podem existir instâncias iguais
� Quando uma nova instância é inserida, the
“stating counter” é incrementando
Stated Insertions
![Page 20: Sistemas Baseados em Regras Aula3: Droolspdcosta/ensino/2012-1-sistemas-baseados-em-regr… · Drools Expert (rule engine) jBPM 5 (process/workflow) Drools Fusion (event processing/temporal](https://reader034.vdocuments.co/reader034/viewer/2022042621/5f539f94d5af422bfa324847/html5/thumbnails/20.jpg)
� Baseado no modo de inserção “equality”. Ou
seja, apenas uma instância por objeto
� Inserções subsequentes incrementam o
“justification counter”
� Quando uma “justification” é removida (o LHS
Justified Insertions
� Quando uma “justification” é removida (o LHS
fica falso), o contator é decrementado.
![Page 21: Sistemas Baseados em Regras Aula3: Droolspdcosta/ensino/2012-1-sistemas-baseados-em-regr… · Drools Expert (rule engine) jBPM 5 (process/workflow) Drools Fusion (event processing/temporal](https://reader034.vdocuments.co/reader034/viewer/2022042621/5f539f94d5af422bfa324847/html5/thumbnails/21.jpg)
� Regras são escritas em lógica de primeira ordem (ou lógica de predicados)
� Proposições são expressões avaliadas como falsas ou verdadeiras
� Podem ser “open statements” ou “closed statements”
A Linguagem de Regras
� Em Java, proposições são do tipo “variable operator value”
� Value geralmente sendo literal
� Neste contexto, proposições são “field constraints”
![Page 22: Sistemas Baseados em Regras Aula3: Droolspdcosta/ensino/2012-1-sistemas-baseados-em-regr… · Drools Expert (rule engine) jBPM 5 (process/workflow) Drools Fusion (event processing/temporal](https://reader034.vdocuments.co/reader034/viewer/2022042621/5f539f94d5af422bfa324847/html5/thumbnails/22.jpg)
� Proposições podem ser combinadas com
conectivos conjuntivos e disjuntivos
A Linguagem de Regras
(cont.)Duas proposições do tipo
“open statements”
conectadas por um conectivo
disjuntivo
person.getEyeColor().equals("blue") || person.getEyeColor().equals("green")
![Page 23: Sistemas Baseados em Regras Aula3: Droolspdcosta/ensino/2012-1-sistemas-baseados-em-regr… · Drools Expert (rule engine) jBPM 5 (process/workflow) Drools Fusion (event processing/temporal](https://reader034.vdocuments.co/reader034/viewer/2022042621/5f539f94d5af422bfa324847/html5/thumbnails/23.jpg)
� Em regras...
Person( eyeColour == "blue" ) || Person( eyeColor == "green" )
A Linguagem de Regras
(cont.)
eyeColor == "green" )
Usando um “Conditional Element”
conectivo disjuntivo – na verdade
resulta na generação de duas
regras, que representam os 2
possíveis resultados lógicos
![Page 24: Sistemas Baseados em Regras Aula3: Droolspdcosta/ensino/2012-1-sistemas-baseados-em-regr… · Drools Expert (rule engine) jBPM 5 (process/workflow) Drools Fusion (event processing/temporal](https://reader034.vdocuments.co/reader034/viewer/2022042621/5f539f94d5af422bfa324847/html5/thumbnails/24.jpg)
� Em regras...
Person( eyeColour == "blue"||"green" )
A Linguagem de Regras
(cont.)
Usando o conectivo disjuntivo para
restrição de campos .
Não resulta na geração de múltiplas
regras
![Page 25: Sistemas Baseados em Regras Aula3: Droolspdcosta/ensino/2012-1-sistemas-baseados-em-regr… · Drools Expert (rule engine) jBPM 5 (process/workflow) Drools Fusion (event processing/temporal](https://reader034.vdocuments.co/reader034/viewer/2022042621/5f539f94d5af422bfa324847/html5/thumbnails/25.jpg)
� Lógica de primeira ordem é “Turing complete”
� Permite a utilização de quantificadores universais e existencias
� Quantificador Universal
� Permite verificar a veracidade de algo para um
Expressividade...
� Permite verificar a veracidade de algo para um conjunto
� Geralmente “forall” conditional element
� Quantificador Existencial
� Permite verificar existencia de algo
� “not” e “exists” conditional elements
![Page 26: Sistemas Baseados em Regras Aula3: Droolspdcosta/ensino/2012-1-sistemas-baseados-em-regr… · Drools Expert (rule engine) jBPM 5 (process/workflow) Drools Fusion (event processing/temporal](https://reader034.vdocuments.co/reader034/viewer/2022042621/5f539f94d5af422bfa324847/html5/thumbnails/26.jpg)
Exemplo em Java...
� Java é “Turing complete”
� Pode-se escrever código para iterar em
estruturas de dados para verificar existencia
List failedStudents = new ArrayList(); List failedStudents = new ArrayList();
for ( Iterator studentIter = students.iterator(); studentIter.hasNext() {
Student student = ( Student ) studentIter.next();
for (Iterator it=student.getModules.iterator(); it.hasNext(); ) {
Module module = ( Module ) it.next();
if ( module.getScore() < 40 ) {
failedStudents.add( student ) ; break;
} } }
![Page 27: Sistemas Baseados em Regras Aula3: Droolspdcosta/ensino/2012-1-sistemas-baseados-em-regr… · Drools Expert (rule engine) jBPM 5 (process/workflow) Drools Fusion (event processing/temporal](https://reader034.vdocuments.co/reader034/viewer/2022042621/5f539f94d5af422bfa324847/html5/thumbnails/27.jpg)
select *
from Students s
where exists (
Exemplo em SQL...
where exists (
select *
from Modules m
where
m.student_name = s.name and m.score < 40
![Page 28: Sistemas Baseados em Regras Aula3: Droolspdcosta/ensino/2012-1-sistemas-baseados-em-regr… · Drools Expert (rule engine) jBPM 5 (process/workflow) Drools Fusion (event processing/temporal](https://reader034.vdocuments.co/reader034/viewer/2022042621/5f539f94d5af422bfa324847/html5/thumbnails/28.jpg)
rule "Failed_Students"
when
exists( $student : Student() &&
Em Regras...
exists( $student : Student() && Module( student == $student, score < 40 ) )