23.04.2010
Alles geregelt – JBoss Drools
In den letzten Tage hatte ich mal Gelegenheit mich in ein Expertensystem einzuarbeiten. Expertensysteme als Teile der künstlichen Intelligenz sind ein Thema, das ich immer wieder in einigen Artikeln gefunden habe, das aber nach wie vor nicht so richtig im “main stream” angekommen ist.
Ein Kunde wollte einen Konfigurator bauen, der es ermöglicht nur sinnvolle Produktvarianten zu bauen (also Beispielsweise nicht ein DVD und eine BlueRay Laufwerk für einen Schacht auszuwählen) aber trotzdem sehr viele Varianten zulässt. Mein erster Versuch arbeitete mit Ein- und Ausschlusslisten, ich musste aber schnell feststellen dass das weder eine brauchbare Performance lieferte, noch hinreichend alle Anforderungen abdecket.
Also informierte ich mich über Expertensystem und bin dabei auf jBPM und JBoss Drools gestoßen, spannender weise kommen die beiden verbreitestesn Systeme im OpenSource Bereich beide von JBoss, Konkurrenz belebt das Geschäft. Alle Systeme arbeiten mit Regeln und Fakten. Die Regeln können dabei in einer bestimmten Regelsprache abgebildet werden (müssen also nicht direkt Programmiert werden), die Fakten können entweder als Ausgangsbasis in das System hinein gegeben werden oder entstehen als Konsequenzen aus Regeln. Mit Hilfe solcher Systeme kann man dann ohne Programmieraufwand und mit relativ wenig Code komplexe Probleme abbilden. Es existieren verschiedene Algorithmen mit unterschiedlichen Vor- und Nachteilen, die in der Einführung recht gut erklärt werden. Das reicht von komplexen Preisregeln bis hin zur Lösung von Sudoko Rätseln.
Noch bin ich in der Evaluierung, aber ein paar Erkenntnisse kristallieren sich schon heraus:
- JBoss Drools scheint ausgereift und für den Produktiven Einsatz geeignet zu sein
- Expertenwissen lässt sich mit Hilfe von Regeln unabhängig von der Programmierung zur Verfügung stellen
- das Erstellen der Regeln erfordert neben einer Einarbeitung in die Syntax eine gerade für nicht Techniker eher ungewöhnliche Denkweise
- auch bei einer Wissenbasis mit einigen hundert Fakten und einige Dutzend Regeln scheint das System performant zu arbeiten