Regelbasierte Systeme mit JBoss Drools

  • 9,299 views
Uploaded on

TechTalk von Carsten Bochner (04.11.2008)

TechTalk von Carsten Bochner (04.11.2008)

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
9,299
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
0
Comments
0
Likes
4

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Regelbasierte Systeme mit JBoss Drools Carsten Bochner Tech Talk, DLR Köln-Porz, 04.11.2008
  • 2. Einordnung von regelbasierten Systemen
    • Unterbereich der Künstlichen Intelligenz
    • Wissensbasiertes System mit regelbasiertem
    • Schließen
    • Deklaratives Programmieren durch Regeldefinition
      • Regeln beschreiben Was wir erreichen wollen
      • Wie dies erreicht wird ermittelt Regelmaschine
    • Seit mehreren Jahrzehnten im Einsatz
      • Früher: Expertensysteme
      • Heute: Business Rule Management Systeme
  • 3. Grundkonzept regelbasierter Systeme
    • Bildquelle: www.syngenio.de
    Regeln : WENN Fakt1 UND Fakt2 DANN FunctionX Beispiel: WENN Flugzeug landet UND Fahrwerk eingefahren DANN fahrwerkAusfahren()
  • 4. Warum Regeln und Regelsysteme?
    • Der Mensch denkt eher in Regeln als in Algorithmen!
    • Regeln gibt es überall!
    • Regeln sind daher für jeden leicht zu verstehen,
    • zu erweitern und zu pflegen!
  • 5. Regelsysteme - Motivation und Vorteile
    • Trennung von Logik und Anwendung
      • Fachlogik wird gekapselt (Regelbasis)
      • Hohe Erweiterbarkeit und Flexibilität
    • Regeln sind leichter zu verstehen und zu warten
    • Schwere Probleme deklarativ oft einfacher zu lösen
    • Hohe Nachvollziehbarkeit der Lösungsfindung
    • Oftmals schnell und gut skalierbar
      • Effiziente Algorithmen (RETE, LEAPS) verfügbar
      • Kompilierte Regeln vor der Ausführung
      • Schnelles Fakten / Regeln - Matching
  • 6. Einsatz von Regelsystemen
    • Rule Engines einsetzen wenn:
      • Problem für imperative Algorithmen ungeeignet
        • Problem zu komplex
        • Problem / Lösung nicht vollständig verstanden
      • Fachlogik ändert sich häufig
      • Dömänenexperten sollen Wissen einpflegen, können jedoch nicht Programmieren
    • Wann nicht einsetzen?
      • Klassische Rule Engines nicht geeignet um Workflows und Prozessketten zu steuern
  • 7. Herausforderungen bei Regelsystemen
    • Ungewohntes Programmierparadigma
    • Ungewohnte Syntax
    • Hohe Flexibilität –> neue Regeln im Produktivsystem
    • Gegebenenfalls sehr hohe Anzahl Regeln
    • Konsequenzen von Regeln schwer zu überschauen
    • Black Box
    • Testen der Regeln
    • Wenige Standards – viele proprietäre Sprachen
    • Umstellung von Entwicklungs- und Betriebsprozess
    • Optimierte handgeschriebene Algorithmen schneller
  • 8. Marktüberblick: Rule-Engines (Auswahl)
    • Stand: April 2008
  • 9. JBoss Drools
    • Objektorientierte Regelplattform (100% Java)
    • Fakten durch JavaBeans repräsentiert
    • Open Source, seit 2006 JBoss Projekt
    • Aktuell Version 4.0.7
    • In wenigen Wochen erscheint JBoss Drools 5
    BRMS/BPMS (Web 2.0) Regelmaschine (Core Lib) Complex event processing Prozesse & Workflows (Eclipse)
  • 10. JBoss Drools – Regeln definieren
    • Customer und Ticket stellen Fakten dar
    • Fakten durch import einbinden (z.B. import de.dlr.rules.Customer)
    • Fakten durch JavaBeans repräsentiert
    • Diese haben z.B. Methoden wie getSubscription, getCustomer, getStatus, setStatus etc…
    • Drools regelt Datenzugriff über diese Methoden selbst
    • Betrachtung aller relevanten Fakten des Working Memory
    • (Siehe Trouble Ticket Example in der Drools Dokumentation)
  • 11. JBoss Drools – Rule Engine starten I
    • //read in the source
    • final Reader source = new InputStreamReader(InputStreamReader( TroubleTicketExampleWithDSL. class .getResourceAsStream( " ticketing.drl " ) ););
    • final PackageBuilder builder = new PackageBuilder();
    • //this will parse and compile in one step
    • builder.addPackageFromDrl( source );
    • //get the compiled package (which is serializable)
    • final Package pkg = builder.getPackage();
    • //add the package to a rulebase (deploy the rule package).
    • final RuleBase ruleBase = RuleBaseFactory. newRuleBase ();
    • ruleBase.addPackage( pkg );
  • 12. JBoss Drools – Rule Engine starten II
    • final StatefulSession workingMemory = ruleBase.newStatefulSession();
    • // create and add facts to working memory
    • final Customer cust1 = new Customer( „ Peter Pan ", " Silver " );
    • final Ticket tick1 = new Ticket( cust );
    • workingMemory.insert( cust1 );
    • workingMemory.insert( tick1 );
    • workingMemory.fireAllRules();
    • workingMemory.dispose();
  • 13. JBoss Drools – DSL erstellen
  • 14. JBoss Drools – DSL verwenden
  • 15. JBoss Drools – BRMS I
  • 16. JBoss Drools – BRMS II
  • 17.  
  • 18. Drools Eclipse Plugin – Live Demo
  • 19. Weitere Quellen
    • Links:
      • http://www.jboss.org/drools/
      • http://blog.athico.com/
      • http://www.codeodor.com/index.cfm/2007/9/10/Rules-based-Programming-with-JBoss-RulesDrools/1600
    • Bücher und Paper:
      • Expert Systems: Principles and Programming Joseph Giarratano, Gary D. Riley ISBN: 0534384471
      • Business Rules and Information Systems: Aligning IT with Business Goals Tony Morgan ISBN: 0201743914
      • Rete: A fast algorithm for the many pattern/many object pattern match problem by Charles L. Forgy Artificial Intelligence, Volume 19, Issue 1, September 1982, Pages 17-37