130605 blog - drools
TRANSCRIPT
java-pe.blogspot.com
05.Juni 2013
Business Logic Integration Platform
Introducing Drools Expert
2
java-pe.blogspot.com
05.Juni 2013
Was ist Drools?
Fakten
www.jboss.org/drools/
Apache Software License (ASL)
5.5.0 (13. November 2012) aktuelle Betaversion: 6.0.0.Beta2
JBoss Red Hat
Wiki, Forum, Mailing Liste, Blog, Chat
• Web
• Entwickler
• Version
• Lizenz
• Community
3
java-pe.blogspot.com
05.Juni 2013
Module
Was ist Drools?
Process / Workflow
Business Rule Manager
Rule Engine
Event Processing / Temporal Reasoning
Automated Planning
Expert
Guvnor
jBPM 5
Fusion
OptaPlanner
• Core Engine • JSR-94 • Implementierung der Knowledge
Base, Session und des Reasoning über Regeln und Fakten
Drools Expert
Thema dieser Präsentation
4
java-pe.blogspot.com
05.Juni 2013
Module
Was ist Drools?
Process / Workflow
Business Rule Manager
Rule Engine
Event Processing / Temporal Reasoning
Automated Planning
Expert
Guvnor
jBPM 5
Fusion
OptaPlanner
• Repository zum Speichern und Verwalten von Regeln, Prozesses, Modellen und anderen Entitäten
• Benutzerverwaltung • Sammlung von graphischen
Benutzerschnittstellen • Versionsmanagement
Drools Guvnor
5
java-pe.blogspot.com
05.Juni 2013
Module
Process / Workflow
Business Rule Manager
Rule Engine
Event Processing / Temporal Reasoning
Automated Planning
Expert
Guvnor
jBPM 5
Fusion
OptaPlanner
Was ist Drools?
• ehemals Drools Flow (jetzt
eigenständig www.jboss.org/jbpm/)
• Business Process Management • basiert auf BPMN 2.0
Spezifikation • Unterstützung des vollständigen
Prozess-Lebenszyklus (Entwurf, Ausführung, Verwaltung und Ablöse)
• Graphische Schnittstelle
jBPM (Drools Flow)
6
java-pe.blogspot.com
05.Juni 2013
Was ist Drools?
Module
Process / Workflow
Business Rule Manager
Rule Engine
Event Processing / Temporal Reasoning
Automated Planning
Expert
Guvnor
jBPM 5
Fusion
OptaPlanner
• Complex Event Processing (CEP) • Ereignisse als zentrales Element
von Drools • Selektion von interessanten
Ereignissen und Ereignismustern • Triggern der Ausführung von
Aktionen (bspw. Prozessen) aufgrund von Ereignismustern
Drools Fusion
7
java-pe.blogspot.com
05.Juni 2013
Was ist Drools?
Module
Process / Workflow
Business Rule Manager
Rule Engine
Event Processing / Temporal Reasoning
Automated Planning
Expert
Guvnor
jBPM 5
Fusion
OptaPlanner
• ehemals Drools Planner (jetzt eigenständig www.optaplanner.org)
• Planning Engine für NP-vollständige Constraint Satisfaction Problems (CSP)
• vielfältige Anwendungs-möglichkeiten
Optaplanner (Drools Planner)
8
java-pe.blogspot.com
05.Juni 2013
Beispielszenario Expert
! Condition Monitoring in Sensornetzen
Messung und Analyse von physikalischen Größen
Flexible Anpassung des Monitoring und der Analyse
Ständige Generierung neuer Daten (Fakten)
Wenn ein Sensorwert den Schwellwert von 50.0 übersteigt dann gib eine Fehlermeldung aus
Regel 1
Sensor 1 Temperatursensor [Kelvin], Messfrequenz 5 Messungen / s, Messunsicherheit +/- 0,01 Kelvin
Sensor 2 Temperatursensor [Celsius], Messfrequenz 10 Messungen / s, Messunsicherheit +/- 0,05 Celsius
!
9
java-pe.blogspot.com
05.Juni 2013
Attribute SensorId (Wer), Wert (Was), Zeitpunkt (Wann)
Fakt Sensorwerte
Modellierung und Ausführung Expert
Wenn ein Sensorwert den Schwellwert von 50.0 übersteigt dann gib eine Fehlermeldung aus
Regel 1
rule "Critical value"
when SensorValue ( value > 50.0 ) then System.err.println("Critical sensor value state.");
end
Rule
Syntax
when [Bedingung] then [Aktion]
Dialekt
MVEL (MVFLEX Expresison Language)
Fact „Informationsträger“ i. d. R. Modellierung in Java als POJO
!
10
java-pe.blogspot.com
05.Juni 2013
Modellierung und Ausführung Expert M
od
ellie
run
g notwendig Paket und Import
optional
Regel Angabe beliebig vieler Regeln möglich
Au
sfü
hru
ng
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory .newKnowledgeBuilder();
KnowledgeBuilder
Erstellung der Knowledge Base
kbuilder.add(ResourceFactory. newClassPathResource( "/sensor_value_rule.drl", ResourceType.DRL);
Ressourcen
KnowledgeBase kbase = KnowledgeBaseFactory. newKnowledgeBase();
kbase.addKnowledgePackages (kbuilder. getKnowledgePackages());
KnowledgeBase
11
java-pe.blogspot.com
05.Juni 2013
Modellierung und Ausführung Expert
StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
StatefulSession
Au
sfü
hru
ng
Erstellung und Aktualisierung einer Session
SensorValue<Double> v = simulator.nextValue(); ksession.insert(v);
Update session
Reg
eln
feu
ern
ksession.fireAllRules()
? Wie können wir den kritischen Wert ausgeben?
Variablen Fakten und Eigenschaften können Variablen zugewiesen und somit wiederverwendet werden
12
java-pe.blogspot.com
05.Juni 2013
Kommunikation mit der Applikation Globale Variablen und Listener Expert
! Flexibilisierung und Kommunikation mittels globalen Variablen
Schlüsselwort global • Deklaration von globale
Variablen ähnlich Deklaration von Variablen in Java
• Auslesen in Bedingungen, Aktionen und über die Session (WorkingMemory Interface) möglich
• Zuweisung von globalen Variablen in Aktion oder über die Session möglich
! Regeln stehen für sich (bspw. Grenzwert in der Regel)
? Wie können wir einen solchen Wert von der Applikation in die Regel injizieren?
Wie können wir mit der Applikation kommunizieren?
Objekt-referenz
in Variable
?
13
java-pe.blogspot.com
05.Juni 2013
Kommunikation mit der Applikation Globale Variablen und Listener Expert
! Globale Variablen bieten Missbrauch-Potential
Keine Verarbeitung von Änderungen an globalen Variablen Konfigurationen von konstanten Fakten
Kein Datenaustausch zwischen Regeln mittels globalen Variablen Regelevaluation folgt keinem Prozess
Keine Zuweisung von globalen Variablen aus einer Regel heraus Event-Handler aus der Applikation in die Regel injizieren
ksession.setGlobal("SENSOR_LIMIT", 50.0);
ksession.setGlobal("LOGGER", LOGGER); …
! Injizieren von Fähigkeiten und Konstanten in globale Variablen
!
14
java-pe.blogspot.com
05.Juni 2013
Kommunikation mit der Applikation Globale Variablen und Listener Expert
! Zuhören was die Rule-Engine so treibt
Drools beinhaltet Listener für Änderungen an Agenda und WorkingMemory
Quelle: Drools Dokumentation
Erweiterte Testmöglichkeiten durch den AgendaEventListener
• Aufstellung der Sequenz der Regelaktivierung
• Prüfung ob Sequenz der erwarteten Regelfolge entspricht
15
java-pe.blogspot.com
05.Juni 2013
Hinzufügen neuer Sensorwerte führt zu Überlauf im Speicher
! Sensorwerte ändern sich über die Zeit
? Wie teilen wir mit, dass ein Fakt sich geändert ist?
Sensor 1 000.985.322
Sensor 2 001.234.185
t
! FactHandler als Referenz auf einen Fakt im WorkingMemory
Veränderungen von Fakten über die Zeit FactHandler Expert
Knowledge Session
Fakten
Working Memory insert(fact)
:FactHandler
?
16
java-pe.blogspot.com
05.Juni 2013
Sensor 1 000.985.322
Sensor 2 001.234.185
t
Veränderungen von Fakten über die Zeit FactHandler Expert
Verarbeitung der Aktualisierung auf Applikationsseite
Aktualisierung im Working Memory
Working Memory
Fakt 1 SensorValue 001.234.185
Fakt 2 SensorValue 000.985.322
Schluss- folgerung
! Sensorwerte ändern sich über die Zeit
17
java-pe.blogspot.com
05.Juni 2013
Expert
Wenn ein Sensor innerhalb von zehn Sekunden bei einem Produkt mindestens dreimal einen kritischen Sensorwert meldet dann leite den Ausschuss des Produktes ein
Regel „Issue broken piece“
Sensor 1 000.985.322
Sensor 2 001.234.185
t Produkt „BR042111“ Produkt „KO98552“ Produkt „BR042111“
! Neue Fakten Product und Sensor
Sensor hat eine id und weitere Meta-Eigenschaften
Product hat eine type, status und start und end
Erweiterte Regelkunde
18
java-pe.blogspot.com
05.Juni 2013
Regel wird für aktualisierte SensorValue Fakten angewendet
Expert
Wenn ein Sensor innerhalb von zehn Sekunden bei einem Produkt mindestens dreimal einen kritischen Sensorwert meldet dann leite den Ausschuss des Produktes ein
Regel „Issue broken piece“
? Wie kann Zeit innerhalb von Regeln abgebildet werden?
nai
ver
An
satz
Entferne veraltete Sensordaten aus dem WorkingMemory
Zustandsänderungen können während der Evaluation von Regeln erfolgen
Aktuellen Zeitpunkt als Fakt im WorkingMemory abbilden
Erweiterte Regelkunde
! !
19
java-pe.blogspot.com
05.Juni 2013
! Zeitpunkt konstant während der Schlussfolgerung
Aktualisierung vor jedem Feuern der Regeln
Expert
Wenn ein Sensor innerhalb von zehn Sekunden bei einem Produkt mindestens dreimal einen kritischen Sensorwert meldet dann leite den Ausschuss des Produktes ein
Regel „Issue broken piece“
? Wie kann Zeit innerhalb von Regeln abgebildet werden?
Ab
bild
un
g al
s Fa
kt
…
Prüfe für jeden SensorValue, ob das Alter des Wertes länger als zehn Sekunden zurückliegt
Zu jeden Zeitpunkt sollte nur ein PointInTime Fakt existieren
Erweiterte Regelkunde
?
20
java-pe.blogspot.com
05.Juni 2013
Wenn ein Sensor innerhalb von zehn Sekunden bei einem Produkt mindestens dreimal einen kritischen Sensorwert meldet dann leite den Ausschuss des Produktes ein
Regel „Issue broken piece“
? Wie kann Zeit innerhalb von Regeln abgebildet werden?
Sin
glet
on
Po
intI
nTi
me
salience ermöglicht die Priorisierung von Regeln
Bedingung zur Festlegung, ob mehr als ein PointInTime Fakt existiert
Bestimme denjenigen Fakt, der einen älteren Zeitpunkt darstellt
Expert Erweiterte Regelkunde
21
java-pe.blogspot.com
05.Juni 2013
Wenn ein Sensor innerhalb von zehn Sekunden bei einem Produkt mindestens dreimal einen kritischen Sensorwert meldet dann leite den Ausschuss des Produktes ein
Regel „Issue broken piece“
? Wie kann die Beziehung zwischen Sensorwert und Produkt abgeleitet werden?
! Deklaration IsAssignedToProduct
Fakt zur Beschreibung der Beziehung zwischen Product und SensorValue
Erweiterung der Fakten durch Regeln
! Fakten müssen „aufgeräumt“ werden
Type-Deklaration in Regeln ermöglicht die einfache Abbildung von Meta-Informationen die nur für das Reasoning benötigt werden.
Expert Erweiterte Regelkunde
!
22
java-pe.blogspot.com
05.Juni 2013
Wenn ein Sensor innerhalb von zehn Sekunden bei einem Produkt mindestens dreimal einen kritischen Sensorwert meldet dann leite den Ausschuss des Produktes ein
Regel „Issue broken piece“
Expert Erweiterte Regelkunde
Identifikation von defekten Bauteilen
Ausgangsfakten bestimmen
Ermittlung der Anzahl derjenigen Sensorwerte, die kritisch sind und die einem Produkt „IN PRODUCTION“ zugewiesen sind
Aktualisierung des Status
! IsCritical Fakt zur Auszeichnung eines Sensorwertes als kritisch (Meta-Information eines Sensorwertes)
23
java-pe.blogspot.com
05.Juni 2013
insertLogical übernimmt diese Aufgabe für uns
Expert Erweiterte Regelkunde
Hinzugefügt Fakten sollten zurückgezogen (retracted) werden
! Was bisher nur am Rande gesagt wurde
…
? Aus welchem Grund muss der Meta-Fakt IsCritical nicht zurückgezogen werden?
! Drools Bedingungen unterstützen die „Prädikatenlogik erster Stufe“ es ist noch deutlich mehr möglich als das Gezeigte
24
java-pe.blogspot.com
05.Juni 2013
Expert Entscheidungstabellen
!
Ziel von Entscheidungstabellen übersichtlich, vollständig und widerspruchsfrei Darstellung komplexer Abhängigkeiten zwischen mehreren Bedingungen und den auszuführenden Aktionen
Rule Set Definition der Eigenschaften und Typen
Rule Table Zusammenhang Bedingungen und Aktionen
25
java-pe.blogspot.com
05.Juni 2013
Expert Entscheidungstabellen
!
Ziel von Entscheidungstabellen übersichtlich, vollständig und widerspruchsfrei Darstellung komplexer Abhängigkeiten zwischen mehreren Bedingungen und den auszuführenden Aktionen
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory .newKnowledgeBuilder();
KnowledgeBuilder
Au
sfü
hru
ng
Erstellung der Knowledge Base
kbuilder.add(ResourceFactory. newClassPathResource( "/dt_example.xls", ResourceType.DTABLE, dtc);
Ressourcen
KnowledgeBase kbase = KnowledgeBaseFactory. newKnowledgeBase();
kbase.addKnowledgePackages (kbuilder. getKnowledgePackages());
KnowledgeBase
!
26
java-pe.blogspot.com
05.Juni 2013
Expert Domänenspezifische Sprachen für Regeln
Regel in domänenspezifischer Sprache
When the value of a SensorValue is greater than 50.0 then show an error dialog with the message “Critical value identified“
Regel in DRL
rule "Critical value" when SensorValue ( value > 50.0 ) then System.err.println("Critical value identified"); end
! Transformation von DSL formulierten Regeln in DRL
Formulierung der Transformationsregeln
Bedingung
Konsequenz / Aktion
27
java-pe.blogspot.com
05.Juni 2013
Expert Domänenspezifische Sprachen für Regeln
! Transformation von DSL formulierten Regeln in DRL
Formulierung der Regel in Domain Specific Language Rules
Au
sfü
hru
ng
Erstellung der Knowledge Base
Kn
ow
led
geB
uild
er Ressourcen
Kn
ow
led
geB
ase
(optional) nur für das PlugIn benötigt
!
28
java-pe.blogspot.com
05.Juni 2013
Expert Anfragenunterstützung
! Queries ermöglichen die Abfrage von geschlussfolgerten Informationen
Gesucht sind alle Sensoren, die „outside“ bei 30.0 eingesetzt werden können
Festlegung Name und Parameter
Collection-Support (contains)
29
java-pe.blogspot.com
05.Juni 2013
Anfrageparametrisierung durch Instanz eines Environments
Expert Anfragenunterstützung
! Queries ermöglichen die Abfrage von geschlussfolgerten Informationen
Gesucht sind alle Sensoren, die „outside“ bei 30.0 eingesetzt werden können
30
java-pe.blogspot.com
05.Juni 2013
Expert Zusammenfassung
Funktionalitäten
JSR-94, schnelle Rete Implementierung
Formulierung von domänenspezifischen Sprachen für die Regelerstellung wird unterstützt
weitreichende Unterstützung der Regelmodellierung in Entscheidungstabellen umgesetzt (bisher kein .xlsx)
Prädikatenlogik erster Ordnung, komplexe Formulierungen
• Rule-Engine
• Rule-Language
• Decision Tables
• DSL / DSLR
• Queries Query-Schnittstelle vorhanden, Abfrage der Faktenlage nach Schlussfolgerung
aber, … • Spring • Functions • XML RL • Drools API • Guvnor • Fusion • …