Drools

A Wikipédiából, a szabad enciklopédiából
Drools
Fejlesztő Red Hat
Legfrissebb stabil
kiadás
5.3.0
(2011. október 21.)
Legfrissebb fejlesztői kiadás ismeretlen +/-
Operációs rendszer keresztplatformos
Kategória szabálymotor
Licenc ASL 2
A Drools weboldala

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[szerkesztés | forrásszöveg szerkesztése]

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)". [forrás?] 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).[1]

Technológia[szerkesztés | forrásszöveg szerkesztése]

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[szerkesztés | forrásszöveg szerkesztése]

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. [forrás?]

JBoss Enterprise BRMS[szerkesztés | forrásszöveg szerkesztése]

A JBoss Enterprose 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.[2] 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.[3]

Az enterprise változat részei: [4]

  • 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[5]
  • 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:[6]

  • 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[szerkesztés | forrásszöveg szerkesztése]

Ez a példa [7] 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[szerkesztés | forrásszöveg szerkesztése]

  • 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.

Források[szerkesztés | forrásszöveg szerkesztése]

  • Ez a szócikk részben vagy egészben a Drools című angol Wikipédia-szócikk ezen változatának fordításán alapul. Az eredeti cikk szerkesztőit annak laptörténete sorolja fel.

Hivatkozások[szerkesztés | forrásszöveg szerkesztése]

Külső hivatkozások[szerkesztés | forrásszöveg szerkesztése]