130605 blog - drools

30
java-pe.blogspot.com 05.Juni 2013 Business Logic Integration Platform Introducing Drools Expert

Upload: java-pe

Post on 24-Jun-2015

403 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: 130605   blog - drools

java-pe.blogspot.com

05.Juni 2013

Business Logic Integration Platform

Introducing Drools Expert

Page 2: 130605   blog - drools

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

Page 3: 130605   blog - drools

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

Page 4: 130605   blog - drools

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

Page 5: 130605   blog - drools

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)

Page 6: 130605   blog - drools

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

Page 7: 130605   blog - drools

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)

Page 8: 130605   blog - drools

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

!

Page 9: 130605   blog - drools

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

!

Page 10: 130605   blog - drools

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

Page 11: 130605   blog - drools

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

Page 12: 130605   blog - drools

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

?

Page 13: 130605   blog - drools

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

!

Page 14: 130605   blog - drools

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

Page 15: 130605   blog - drools

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

?

Page 16: 130605   blog - drools

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

Page 17: 130605   blog - drools

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

Page 18: 130605   blog - drools

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

! !

Page 19: 130605   blog - drools

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

?

Page 20: 130605   blog - drools

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

Page 21: 130605   blog - drools

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

!

Page 22: 130605   blog - drools

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)

Page 23: 130605   blog - drools

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

Page 24: 130605   blog - drools

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

Page 25: 130605   blog - drools

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

!

Page 26: 130605   blog - drools

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

Page 27: 130605   blog - drools

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

!

Page 28: 130605   blog - drools

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)

Page 29: 130605   blog - drools

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

Page 30: 130605   blog - drools

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 • …