Drools

Drools
Basisdaten

Hauptentwickler Drools Team
Entwickler Red Hat
Aktuelle Version 8.41.0[1]
(5. Juli 2023)
Betriebssystem Cross-platform
Programmier­sprache Java
Kategorie Business-Rule-Engine
Lizenz ASL 2
http://www.drools.org/

Drools ist ein Geschäftsregel-Managementsystem[2] und ermöglicht die Entwicklung und den Einsatz von auf Geschäftsregeln basierenden Anwendungen. Für die softwarebasierte Abwicklung einer Aufgabe in Unternehmen ermöglicht es, komplexe Entscheidungslogik von der Anwendungslogik zu trennen und die Geschäftsregeln unabhängig von der zugrunde liegenden Anwendung zu verwalten und anzupassen.

Drools ist eine freie Software bzw. Software-Lösung und in der Programmiersprache Java geschrieben. Das System stellt eine Grundausstattung einer Business-Rule-Engine (BRE), eine Webanwendung (Drools Workbench) und ein Eclipse-IDE-Plugin für die Entwicklung zur Verfügung.[3] Die Software wird in Expertensystemen eingesetzt. Drools ist ein regelbasiertes System und kann selbst auf unterschiedliche Ereignisse reagieren.

Softwarestandard

Das Business-Rule-Management-System verwendet den JSR-94-Standard (Java Specification Request 94) für die Erstellung, Wartung und Einhaltung von Geschäftsprozessen innerhalb von Organisationen. Dieser Standard definiert eine einfache Programmierschnittstelle, um eine Rule-Engine mit einer Java-Plattform zu verknüpfen.

Projekt

Drools wird durch die JBoss-Community veröffentlicht. Es gibt eine Community-Version und eine Variante als Unternehmenssoftware. Zweck des Projektes ist es, eine umfassende Plattform für das Business-Rules-Management zur Verfügung zu stellen, um Unternehmensressourcen und komplexer Ereignisverarbeitung (CEP, Complex Event Processing) zu optimieren. Es ermöglicht den Unternehmen, eine anspruchsvolle Entscheidungslogik in Geschäftsanwendungen abzubilden, da sich die zugrundeliegenden Business-Rules durch Aussagenlogik schnell den Marktgegebenheiten anpassen können.[4]

Komponenten der Enterprise-Version:[5]

  • JBoss Rule Engine – Drools Expert: Dieses Tool nutzt den Rete-Algorithmus und die Drools Rule Language (DRL), um Regeln zu erstellen und anzuwenden.
  • Complex Event Processing (Drools Fusion): Mit diesem Tool kann man komplizierte Ereignisse und deren Zusammenhänge überwachen und steuern. Es hilft dabei, Muster in Ereignisströmen zu erkennen und darauf zu reagieren.
  • Drools Workbench mit Business Performance Management-Anwendungsmöglichkeiten; eine Benutzeroberfläche, die es ermöglicht, Geschäftsprozesse zu modellieren, zu verwalten und auszuführen.
  • Business Resource Planner (OptaPlanner): Dieses Tool hilft bei der automatischen Planung und Optimierung von Geschäftsregeln, wie z. B. bei der Personalplanung oder der Routenoptimierung.
  • Entwicklerwerkzeuge: Diese sind Software-Tools, die Entwicklern helfen, Anwendungen zu erstellen und Geschäftsregeln zu integrieren.
  • Business Rule Management und Monitoring: Dies umfasst die Verwaltung und Überwachung der Geschäftsregeln, um sicherzustellen, dass sie korrekt und effizient funktionieren.
  • Wartungspläne (Support), also Unterstützung und Service, um sicherzustellen, dass die Software reibungslos läuft und bei Problemen schnell Hilfe verfügbar ist.

Komponenten der Community-Version:[2]

  • Drools Workbench: Eine Benutzeroberfläche, die es ermöglicht, Geschäftsregeln zu erstellen, zu verwalten und zu testen.
  • Drools Expert (Business-Rule-Management): Dieses Tool hilft Unternehmen, ihre Entscheidungsprozesse durch das Definieren und Verwalten von Regeln zu automatisieren.
  • Drools Fusion: Ein Tool zur Verarbeitung komplexer Ereignisse. Es hilft dabei, Muster und Zusammenhänge in einer Vielzahl von Ereignissen zu erkennen und darauf zu reagieren. Zum Beispiel kann es erkennen, wenn mehrere Sensoren in einer Fabrik ungewöhnliche Werte melden, und dann automatisch Maßnahmen ergreifen.
  • jBPM (Java Business Process Management): Dieses Tool wird verwendet, um Geschäftsprozesse und Workflows zu modellieren und zu automatisieren. Es hilft Unternehmen, ihre Arbeitsabläufe zu organisieren und zu steuern,
  • OptaPlanner: Ein Tool zur Optimierung von Planungsaufgaben. Es hilft dabei, die besten Lösungen für komplexe Planungsprobleme zu finden, wie z. B. die Einsatzplanung von Mitarbeitern oder die Routenplanung für Lieferungen.

Regelwerk

Beschreibung

Regeln folgen einer „Wenn…Dann…“–Struktur und bestehen aus einer Bedingung und einer Konsequenz. Die Bedingung, auch als Prämisse oder Left-Hand-Side (LHS) bezeichnet, prüft Fakten, auf die die Regel angewendet wird. Die Konsequenz, auch Konklusion oder Right-Hand-Side (RHS)[6] genannt, wird als Aktion bezeichnet. Wenn die Bedingung erfüllt ist, spricht man davon, dass die Regel feuert.

Werden solche Regeln ohne die Verwendung von Business-Rule-Management-Systemen direkt in den Quelltext geschrieben, führt dies zu Problemen in der Wartung und Lesbarkeit der Software. Um diesen Problemen vorzubeugen und auch eine Konfliktlösung zu realisieren, werden Business-Rule-Management-Systeme verwendet. Klare Vorteile einer Business-Rule-Engine sind die explizit formulierten Regeln mit Hilfe der Aussagenlogik sowie die deklarative Herangehensweise der Business-Rule-Engine.

Bedingung:
Mensch.hunger = true;

Konsequenz:
Mensch.essen();

Drools Rule Language

Drools besitzt eine eigene „native“ Regelsprache.[7] Die Grammatik dieser Sprache soll leicht verständlich sein und bezieht sich nur auf die Abfrage von Regeln und Bedingungen eines Objektes.

Eine Regeldatei nutzt die .drl-Erweiterung. In einer .drl-Datei können sich mehrere Regeln, Abfragen und Funktionen, Ressourcendeklarationen wie Importe sowie globale und lokale Attribute befinden. Es ist auch möglich, Regeln auf mehrere .drl-Dateien aufzuteilen. Eine Aufteilung von Regeln über mehrere Dateien kann bei der Verwaltung einer großen Anzahl von Regeln helfen.

Eine .drl-Datei ist eine einfache Textdatei mit folgendem Aufbau:

package
package-name


imports


globals


functions


queries


rules

Eine Drools-Regel besteht aus einem Namen, optionalen Attributen und den Regelbestandteilen LHS und RHS. Attribute geben an, wie sich die Regel verhalten soll. LHS (Left-Hand-Side) ist der bedingte Teil der Regel und folgt einer bestimmten Grammatik. RHS (Right-Hand-Side) ist ein Block, der dialektspezifischen Code ausführt, sobald die Regel ausgelöst wird.

rule
"name"


attributes

    when

LHS

    then

RHS

end

Programmbeispiele

Dieses Beispiel[8] zeigt eine einfache Regel über die Zulassung einer Person zu einer Fahrprüfung. Es untersucht eine Bedingung der Instanz Applicant und setzt die Variable valid je nach Ergebnis der Bedingung true oder false.

public class Applicant {
    private String name;
    private int age;
    private boolean valid;
    // getter and setter methods here
}
package com.company.license

rule "Is of valid age"
when
    $a : Applicant( age < 18 )
then
    $a.setValid( false );
end

Zuerst muss die Klasse Applicant erstellt werden. Nachdem das Datenmodell erstellt ist, wird eine Regel formuliert. Diese Regel besagt, dass eine Person, die unter 18 Jahre alt ist, den Wert false zugewiesen bekommt.

Wenn eine Instanz von Applicant in die Business-Rule-Engine eingefügt wird, wird sie gegen die Einschränkungen der Regeln ausgewertet. In diesem Fall gibt es zwei Einschränkungen für eine Regel. Es sind zwei, da der Typ Applicant die erste Objekttypeinschränkung und Alter < 18 die zweite Feldbeschränkung ist.

Eine Objekttypbeschränkung inklusive ihrer Feldbeschränkungen wird als Muster bezeichnet. Wenn eine eingefügte Instanz sowohl die Objekttypbeschränkung als auch alle Feldbeschränkungen erfüllt, wird angenommen, dass sie übereinstimmt. Das $a ist eine Bindungsvariable, die es uns erlaubt, auf das übereinstimmende Objekt zu verweisen. Das Dollarzeichen $ ist optional, aber es hilft, Variablennamen von Feldnamen zu unterscheiden.

  • Drools blog
  • JBoss Rules
  • Drools.NET
  • Mark Proctor
  • JBoss Drools vs JBoss Rules
  • Give your business logic a framework with Drools
  • Drools wiki
  • Realtime intelligence using Drools Fusion
  • Drools State of the Union presentation at JBossWorld 2009
  • Drools Rule editor in Flex
  • How to code rules in Drools

Einzelnachweise

  1. Release 8.41.0. 5. Juli 2023 (abgerufen am 1. August 2023).
  2. a b Drools - Business Rules Management System (Java™, Open Source). Abgerufen am 11. April 2021. 
  3. Drools – Drools – Business Rules Management System (Java™, Open Source). Abgerufen am 13. Mai 2017 (englisch). 
  4. Red Hat Decision Manager. Abgerufen am 11. April 2021. 
  5. JBoss Enterprise BRMS Component Details am 13. Mai 2017.
  6. Rainer Endl: Regelbasierte Entwicklung betrieblicher Informationssysteme: Gestaltung flexibler Informationssysteme durch explizite Modellierung der Geschäftslogik. BoD – Books on Demand, 2004, ISBN 3-89936-263-2 (google.de [abgerufen am 13. Mai 2017]). 
  7. Drools Documentation. Abgerufen am 15. Mai 2017. 
  8. Chapte 6. User Guide. Abgerufen am 11. April 2021.