Drools

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen

Drools
Basisdaten

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

Drools ist eine freie Software bzw. Software-Lösung, die in der Programmiersprache Java geschrieben ist und ein Business-Rule-Management-System (BRMS, übersetzt etwa „Produktionsregelsystem“) implementiert.[2] Drools 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[Bearbeiten | Quelltext bearbeiten]

Das Business-Rule-Management-System verwendet den JSR-94-Standard (Java Specification Request 94) für 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[Bearbeiten | Quelltext bearbeiten]

Drools wird durch die JBoss-Community veröffentlicht. Es gibt eine Community-Version und eine Enterprise-BRMS-Version. 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]

KIE (Knowledge is Everything) ist der Schirm, unter dem Drools und andere verwandte Produkte wie OptaPlanner, jBPM, Guvnor, Drools WB, KIE WB und UberFire von JBoss gesammelt werden. KIE wird auch als Sammelbegriff für die gemeinsamen Aspekte des Systems (einheitlicher Bau, Bereitstellung und Nutzung für Geschäftsprozesse) verwendet.

Komponenten der Enterprise-Version:[5]

  • JBoss Rule Engine – Drools Expert verwendet den Rete-Algorithmus und die Drools Rule Language (DRL)
  • Complex Event Processing (Drools Fusion) – wird für komplexe Ereignissteuerungen verwendet
  • Drools Workbench mit BPM-Anwendungsmöglichkeiten
  • Business Resource Planner (OptaPlanner) – optimiert automatisiertes Planen der Business Rules
  • Entwicklerwerkzeuge
  • Business Rule Management und Monitoring
  • Wartungspläne (Support)

Komponenten der Community-Version:[2]

  • Drools Workbench
  • Drools Expert (Business-Rule-Management)
  • Drools Fusion – wird für komplexe Ereignissteuerungen verwendet
  • jBPM – Prozesse und Workflow
  • OptaPlanner – optimiert automatisiertes Planen

Regelwerk[Bearbeiten | Quelltext bearbeiten]

Beschreibung[Bearbeiten | Quelltext bearbeiten]

Regeln besitzen eine „Wenn…Dann…“–Struktur und bestehen aus Bedingung und Konsequenz. Sie besitzen daher eine Prämisse - Left-Hand-Side (LHS) - und Konklusion - Right-Hand-Side (RHS).[6] Die Konsequenz einer Regel wird als Aktion bezeichnet. Die Bedingung einer Regel prüft Fakten, über welche die Regel angewendet wird. Wird eine Bedingung bestätigt, spricht man über das „Feuern“ einer Regel.

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[Bearbeiten | Quelltext bearbeiten]

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 ist eine Datei mit einer .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, Attributen (optional) und den Bestandteilen einer Regel (LHS und RHS). Attribute sind Hinweise darauf, wie sich eine Regel verhalten soll. LHS ist der bedingte Teil einer Regel, die einer bestimmten Grammatik folgt. RHS ist grundsätzlich ein Block, der den dialektspezifischen Code ausführt, sobald eine Regel „feuert“.

rule
"name"


attributes

    when

LHS

    then

RHS

end

Programmbeispiele[Bearbeiten | Quelltext bearbeiten]

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.

Weblinks[Bearbeiten | Quelltext bearbeiten]

Einzelnachweise[Bearbeiten | Quelltext bearbeiten]

  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.