2. 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. 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. 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. 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. 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
8. 8
java-pe.blogspot.com
05.Juni 2013
BeispielszenarioExpert
! 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. 9
java-pe.blogspot.com
05.Juni 2013
Attribute
SensorId (Wer), Wert (Was), Zeitpunkt
(Wann)
Fakt Sensorwerte
Modellierung und AusführungExpert
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. 10
java-pe.blogspot.com
05.Juni 2013
Modellierung und AusführungExpert
Modellierung
notwendig
Paket und Import
optional
Regel
Angabe beliebig vieler
Regeln möglich
Ausführung
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. 11
java-pe.blogspot.com
05.Juni 2013
Modellierung und AusführungExpert
StatefulKnowledgeSession ksession =
kbase.newStatefulKnowledgeSession();
StatefulSession
Ausführung
Erstellung und Aktualisierung einer Session
SensorValue<Double> v = simulator.nextValue();
ksession.insert(v);
Update session
Regelnfeuern
ksession.fireAllRules()
? Wie können wir den kritischen Wert ausgeben?
Variablen
Fakten und Eigenschaften
können Variablen
zugewiesen und somit
wiederverwendet werden
12. 12
java-pe.blogspot.com
05.Juni 2013
Kommunikation mit der Applikation
Globale Variablen und ListenerExpert
! 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. 13
java-pe.blogspot.com
05.Juni 2013
Kommunikation mit der Applikation
Globale Variablen und ListenerExpert
! 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. 14
java-pe.blogspot.com
05.Juni 2013
Kommunikation mit der Applikation
Globale Variablen und ListenerExpert
! 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. 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
FactHandlerExpert
Knowledge Session
Fakten
Working Memory
insert(fact)
:FactHandler
?
16. 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
FactHandlerExpert
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. 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. 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?
naiverAnsatz
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. 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?
AbbildungalsFakt
…
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. 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?
SingletonPointInTime
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. 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. 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. 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. 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. 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
Ausführung
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. 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. 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
Ausführung
Erstellung der Knowledge Base
KnowledgeBuilder
Ressourcen
KnowledgeBase
(optional) nur für das PlugIn benötigt
!
29. 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. 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
• …