A Drools egy üzleti szabálymenedzselő rendszer (BRMS). Fő része egy előrefelé következtetéseken alapuló szabálymotor, ismertebb nevén termelési szabályrendszer. A feladatok végrehajtására a RETE algoritmus egy fejlesztett változatát használja.

Üzleti szabálymotorja és enterprise keretrendszere támogatja a JSR-94 szabványt a készítéshez, karbantartáshoz és az üzleti stratégia betartásához egy szervezetben, alkalmazásban vagy szolgáltatásban.

Történet A Drools Projektet Bob McWhirter indította 2001-ben, a SourceForge oldalon regisztrálva. A Drools 1.0-t sosem adták ki, mivel nagyon hamar kiderültek a nyers erő módszer alapú lineáris keresés korlátai, s így elkezdtek dolgozni a Drools 2.0-n, melyet a RETE algoritmusra építettek, a projektet pedig áthelyezték a Codehaus oldalra. A 2.0 fejlesztési ciklusa során a Codehaus-nál Nobi Y lett a projektvezető. Az ő nevéhez fűződik a végleges 2.0 kiadás. Ezen a ponton lett a projekt vezető a Java alapú nyílt forráskódú szabálymotorok között, erős közösséggel. Ekkor kezdődött az igény a kereskedelmi szolgáltatásokra is. 2005 októberében a Drools beolvadt a JBoss rendszerbe, mint a JEMS ajánlásuk része és átnevezték JBoss Rules-ra. 2006-ban a JBoss-t magát megvette a Red Hat. A JBoss-ból származó pénzügyi háttérrel lehetségessé vált a JBoss Rules újraírása egy teljes és fejlettebb RETE implementációval és grafikus felülettel. 2007 közepén visszakapta a Drools nevet, mivel az emberek még két év után is következetesen Drools-nak hívták és zavaró volt úgy hivatkozni rá, mint "Drools a.k.a. JBoss Rules" vagy "Drools (JBoss Rules)". A Drools 5.0-t 2009. május 19-én adták ki. Fő célja az volt, hogy megvalósítsa a komplex eseményfeldolgozást (egy Fusion nevű modulban) és a munkafolyamat képességeket (egy Flow nevű modulban).

Technológia

A Drools egy szabálymotor, mely Charles Forgy RETE algoritmusára alapul, a Java nyelvre szabva. A RETE algoritmus adaptálása objektumorientált felülettel lehetőséget ad az üzleti szabályok természetesebb kifejezésére az üzleti objektumok tekintetében. A Drools-t Java nyelven írták, de képes futni mind Java-n, mind .NET-en.

Úgy tervezték, hogy lehetőséget adjon más nyelvi implementációk csatlakoztatásához. Jelenleg szabályokat Java, MVEL, Python és Groovy nyelveken lehet írni. A Drools emellett lehetőséget ad deklaratív programozásra és elég rugalmas ahhoz, hogy összekapcsolja a problématér szemantikáját a szakterület-specifikus nyelvvel. Ehhez XML-t használ, amit egy, a problématérre definiált séma ír le. A szakterület-specifikus nyelvek XML elemei és attribútumai reprezentálják a problémateret.

JBoss Rules

A JBoss Rules egy előrefelé következtető szabálymotort tartalmazó következtető motor, mely a Drools-on alapul. A JBoss Rules a Drools üzleti változata. Ez azt jelenti, hogy az adott ágra vonatkozó több éves terméktámogatást tartalmaz, hibajavításokkal és bővítésekkel. Egy ideig el is hagyták a Drools nevet, hogy megpróbálják a JBoss Rules márkát alapítani mind a projektnek, mind a termék. Azonban két évvel később a közösség még mindig Drools-nak hívta, így a projekt nevét visszaszerezte a közösség. A termék neve megmaradt JBoss Rules.

JBoss Enterprise BRMS

A JBoss Enterprise BRMS egy üzleti szabálykezelő rendszer (BRMS) és következtető motor üzleti stratégiák és szabályok megtekintésére, fejlesztésére és a változások kezelésére. A JBoss Enterprise BRMS a Drools egy üzleti kiadása, vállalati szintű terméktámogatással. A JBoss Rules ugyan szintén üzleti változat, de igazán a JBoss Enterprise BRMS tekinthető a zászlóshajónak.

Az enterprise változat részei: JBoss Enterprise Web Platform – a szoftver infrastruktúra, csak BRMS komponensek futtatásához JBoss Enterprise Application Platform vagy JBoss Enterprise SOA Platform - a szoftver infrastruktúra, csak BRMS komponensek futtatásához Business Rules Engine - Drools Expert a RETE algoritmus és a Drools Rule Language felhasználásával Business Rules Manager – Drools Guvnor Business Rules Repository – Drools Guvnor

A Drools és a Guvnor nyílt JBoss közösségi projektek. Mivel elég érett rendszerek, betették őket az üzleti csomagba.

A JBoss közösségi változat részei: Drools Guvnor (üzleti szabály menedzselő) – központi tárhely a Drools Knowledge Bases számára Drools Expert (szabálymotor) – a szabályok használatával következtet Drools Flow (folyamat/munkafolyamat), vagy jBPM 5 – munkafolyamatok és üzleti folyamatok számára Drools Fusion (eseményfeldolgozás/időbeli következtetés) – komplex eseményfeldolgozáshoz Drools Planner (automata tervező) – optimalizálja az automata tervezést, beleértve az NP-nehéz problémákat.

Példa

Ez a példa egy egyszerű szabályt mutat be (pl. egy .java.drl fájlból), ami egy Drools-ban megvalósított Fibonacci számítás része. A szabály bemenete a Fibonacci osztály egy példánya, tartalmaz feltételt és a feltétel következményét. Érdemes megjegyezni, hogy a Java kód közvetlenül beírható a következmény szakaszba a szabály szintaxisán belül. Ezt a Java Szemantikus Modul és a Janino teszi lehetővé.

<rule name="Recurse" salience="10"> <parameter identifier="f"> <class>Fibonacci</class> </parameter> <java:condition>f.getValue() == -1</java:condition> <java:consequence> System.err.println( "recurse for " + f.getSequence() ); drools.assertObject( new Fibonacci( f.getSequence() - 1 ) ); </java:consequence> </rule>

Kapcsolódó rendszerek

CLIPS: szabad hozzáférésű szoftvereszköz szakértői rendszerek készítéséhez. d3web: ingyenes, nyílt forráskódú platform tudás alapú rendszerekhez (szakértői rendszerek). JESS: szabálymotor a Java platformhoz. A CLIPSprogramozási nyelv bővítménye. Prolog: általános célú logikai programozási nyelv.

Fordítás

Hivatkozások

További információk Drools - Hivatalos oldal

Kategória:Java API-k Kategória:Szabad szoftverek Kategória:Red Hat