Drools Tutorial: Pravidlo ArchiTektura a diagram
โก Chytrรฉ shrnutรญ
Drools je open-source systรฉm pro sprรกvu obchodnรญch pravidel napsanรฝ v Java kterรฝ oddฤluje obchodnรญ logiku od aplikaฤnรญho kรณdu. Tento zdroj vysvฤtluje pravidla, algoritmus Rete, architekturu a komponenty Drools, Eclipse nastavenรญ pluginu a pลรญklad pravidla Hello World.

Co je Drools?
Slintรก je open-source software pro sprรกvu obchodnรญch pravidel (BRMS) napsanรฝ v Java kterรฝ uลพivatelลฏm poskytuje ลadu funkcรญ, jako je Business Rule Engine, tvorba webu, aplikace pro sprรกvu pravidel a bฤhovรก podpora pro modely rozhodovacรญho modelu a notace. Vyuลพรญvรก pokroฤilรฝ implementaฤnรญ systรฉm algoritmu porovnรกvรกnรญ vzorลฏ sรญtฤ.
Drools byl vydรกn pod licencรญ Apache 2.0 a je kompatibilnรญ s jakรฝmkoli JVM a je k dispozici takรฉ v centrรกlnรญm รบloลพiลกti Maven.
Nรกstroj Drools vรกm pomลฏลพe oddฤlit a zdลฏvodnit logiku a data nalezenรก v obchodnรญch procesech. Podporuje dopลednรฉ a zpฤtnรฉ ลetฤzenรญ zaloลพenรฉ na principu slintรกnรญ.
Sliny jsou rozdฤleny na dvฤ ฤรกsti:
- Authoring โ Zahrnuje vรฝvoj souborลฏ pravidel.
- Runtime โ Zahrnuje vytvoลenรญ pracovnรญ pamฤti a manipulaci s aktivacรญ.
Co je pravidlo?
Pravidla jsou souฤรกstรญ znalostรญ, kterรฉ se ฤasto vyjadลujรญ jako: โKdyลพ nastanou specifickรฉ podmรญnky, proveฤte nฤjakรฉ รบkolyโ.
Nejdลฏleลพitฤjลกรญ ฤรกstรญ pravidla je to kdy ฤรกst. Jednou kdy ฤรกst je spokojenรก, pak souฤรกst je spuลกtฤna.
Syntaxe:
When <Condition is true> Then <Take desired Action>
Metoda porovnรกvรกnรญ vzorลฏ
Metoda porovnรกvรกnรญ vzorลฏ vรกm pomลฏลพe porovnat novรก nebo starรก fakta s produkฤnรญmi pravidly. Doplลuje jej Inference Engine.
Algorithms pro porovnรกvรกnรญ vzorลฏ se pouลพรญvajรญ:
- Algoritmus Rete
- Algoritmus skokลฏ
- Lineรกrnรญ algoritmus
- Algoritmus oลกetลenรญ
Algoritmus, kterรฝ Drools vฤtลกinou pouลพรญvรก, je vลกak Rete Algorithm.
Algoritmus Rete
Algoritmus Rete je uลพiteฤnรฝ algoritmus porovnรกvรกnรญ vzorลฏ, kterรฝ vรกm umoลพลuje implementovat systรฉmy produkฤnรญch pravidel. Pomรกhรก vรกm obฤtovat pamฤลฅ pro zvรฝลกenรญ rychlosti. S pomocรญ sdรญlenรญ uzlลฏ takรฉ sniลพuje nebo odstraลuje specifickรฉ typy redundance. Uklรกdรก ฤรกsteฤnรฉ shody pลi provรกdฤnรญ spojenรญ mezi rลฏznรฝmi typy faktลฏ.
Motor pravidla slintรกnรญ
Motor pravidla slintรกnรญ je pลรญstup zaloลพenรฝ na pravidlech k implementaci systรฉmu Expert v softwaru Drools. Modul pravidel poskytuje expertnรญ systรฉmy, coลพ jsou systรฉmy zaloลพenรฉ na znalostech, kterรฉ vรกm pomรกhajรญ rozhodovat se, co dฤlat a jak to dฤlat. Shromaลพฤuje znalosti do znalostnรญ bรกze, kterou lze pouลพรญt pro uvaลพovรกnรญ.
Sada nรกstrojลฏ Drools
Nynรญ v tomto tutoriรกlu Drools Rule Engine se dozvรญme o Drools Tool Suite. Zde je pฤt typลฏ nรกstrojลฏ, kterรฉ jsou souฤรกstรญ sady Drools:
- Slintรก Guvnor: Je to centralizovanรฉ รบloลพiลกtฤ pro Drools KnowledgeBase.
- Tok slin: Nabรญzรญ workflow a obchodnรญ procesy.
- Slintรกnรญ Fusion: Nรกstroj pouลพรญvanรฝ pro komplexnรญ zpracovรกnรญ udรกlostรญ
- Drools Expert nebo Rules Engine: Uลพiteฤnรฝ nรกstroj pro provรกdฤnรญ uvaลพovรกnรญ.
- Plรกnovaฤ slin: Nabรญzรญ automatizovanรฉ plรกnovรกnรญ, kterรฉ zahrnuje NP-tvrdรฉ plรกnovacรญ problรฉmy.
Dลฏleลพitรฉ komponenty v Drools
Nynรญ se v tomto tutoriรกlu Drools seznรกmรญme s dลฏleลพitรฝmi souฤรกstmi Drools.
Zde jsou zรกkladnรญ pojmy pouลพรญvanรฉ v Drools:
- Fakta โ Fakt pลedstavujรญ data, kterรก slouลพรญ jako vstup pro pravidla
- Pracovnรญ pamฤลฅ โ Storage with Facts, kde se pouลพรญvajรญ pro porovnรกvรกnรญ vzorลฏ. Lze jej upravovat, vklรกdat a odebรญrat.
- Sezenรญ znalostรญ โ Tato komponenta obsahuje vลกechny prostลedky potลebnรฉ pro pravidlo stลelby. Zde jsou vลกechna fakta vloลพena do jedinรฉ relace a potรฉ jsou spuลกtฤna odpovรญdajรญcรญ pravidla.
- Znalostnรญ bรกze โ Pลedstavuje znalosti v ekosystรฉmu Drools. Uklรกdรก tvorbu zdrojลฏ, kde se nachรกzejรญ pravidla.
- Modul โ Toto je modul, kterรฝ uklรกdรก vรญce bรกzรญ znalostรญ, kterรฉ mohou mรญt rลฏznรฉ relace
Architecture of Drools

Zde je pracovnรญ systรฉm architektury Drools:
Krok 1) Pravidla se naฤรญtajรญ do databรกze pravidel, kterรก jsou neustรกle k dispozici.
Krok 2) Fakta se uklรกdajรญ do pracovnรญ pamฤti, kde je pak lze upravit nebo pลepracovat.tracted.
Krok 3) Proces porovnรกvรกnรญ novรฝch nebo existujรญcรญch skuteฤnostรญ s produkฤnรญmi pravidly se nazรฝvรก porovnรกvรกnรญ vzorลฏ, kterรฉ provรกdรญ modul pravidel.
Krok 4) Agenda umoลพลuje ลรญdit exekuฤnรญ pลรญkaz kolidujรญcรญch pravidel pomocรญ strategie ลeลกenรญ konfliktลฏ.
Vlastnosti Drool
Zde jsou dลฏleลพitรฉ funkce Drool:
- Pomรกhรก oddฤlit aplikaci od dynamickรฉ logiky
- Deklarativnรญ programovรกnรญ
- Centralizace znalostรญ
- Rychlost a ลกkรกlovatelnost
- Oddฤlte logiku od aplikace
- Srozumitelnรก pravidla
Jak pลidat pluginy Drools Eclipse
Nynรญ v tomto tutoriรกlu Drools se nauฤรญme, jak pลidat plugin Drools Eclipse.
Krok 1) Kliknฤte na โDistribution ZIPโ pro integraci jBPM
Pลejรญt https://www.drools.org/download/download.html a kliknฤte na โDistribuฤnรญ ZIPโ pro integraci jBPM. Po staลพenรญ, napล.tracnapiลกte si to na pevnรฝ disk.
Krok 2) Nainstalujte novรฝ software
In Eclipse, vyberte Instalovat novรฝ software.
Krok 3) Kliknฤte na tlaฤรญtko Pลidat
Kliknutรญm na tlaฤรญtko Pลidat pลidรกte software.
Krok 4) Prochรกzet sloลพku
Na dalลกรญ obrazovce kliknฤte na Mรญstnรญ a vyberte sloลพku โorg.drools.updatesite/โ a potรฉ kliknฤte na OK.
Krok 5) Kliknฤte na tlaฤรญtko Dalลกรญ
Na strรกnce opravy instalace kliknฤte na tlaฤรญtko Dalลกรญ.
Krok 6) Pลijmฤte licenฤnรญ smlouvu
Pลijmฤte licenฤnรญ smlouvu a klepnฤte na tlaฤรญtko Dalลกรญ.
Krok 7) Restart Eclipse
Software se stรกhne a budete poลพรกdรกni o restartovรกnรญ eclipse.
Krok 8) Proces instalace dokonฤen
In Windows > v nabรญdce Preferences (Pลedvolby), uvidรญte moลพnost Drools oznaฤujรญcรญ, ลพe je nainstalovรกna.
Pลรญklad programu slintรกnรญ Hello World
Nรญลพe je uveden pลรญklad Drools pro program Hello World:
package com.sample import com.sample.DroolsTest.Message; rule "Hello World" when m : Message( status ** Message.Hello, myMessage : message ) then System.out.println( myMessage ); m.setMessage( "Goodbye cruel world" ); m.setStatus( Message.GOODBYE ); update( m ); end rule "GoodBye" when Message( status ** Message.GOODBYE, myMessage : message ) then System.out.println( myMessage ); end
Co je zpฤtnรฉ vs. dopลednรฉ ลetฤzenรญ?
Dopลednรฝ ลetฤzovรฝ motor kontroluje fakta a vyvozuje konkrรฉtnรญ zรกvฤr.
Podรญvejme se na scรฉnรกล systรฉmu lรฉkaลskรฉ diagnostiky. Pokud se pacientovy symptomy uloลพรญ jako fakta do pracovnรญ pamฤti, pak je snadnรฉ diagnostikovat jeho onemocnฤnรญ.
Motor s pลednรญm ลetฤzem
Zpฤtnรฝ ลetฤzovรฝ motor mรก stanovenรฝ cรญl a motor se mu snaลพรญ vyhovฤt.
Zvaลพte stejnรฝ scรฉnรกล lรฉkaลskรฉ diagnรณzy. Pลedpoklรกdejme, ลพe jde o epidemii urฤitรฉ nemoci. Tato umฤlรก inteligence by mohla pลedpoklรกdat, ลพe danรฝ jedinec mฤl onemocnฤnรญ, a pokusit se na zรกkladฤ dostupnรฝch informacรญ urฤit, zda je jeho diagnรณza sprรกvnรก.
Zpฤtnฤ ลetฤzovรฝ motor
Proฤ pouลพรญvat Drools Rule Engine?
Zde jsou hlavnรญ dลฏvody pro pouลพitรญ modulu pravidel Drools:
- Pravidla jsou snadno srozumitelnรก pro vรฝvojรกลe a obchodnรญ analytici.
- Pravidla jsou snadno udrลพovatelnรก.
- Rule Engine pouลพรญvรก algoritmus Rete, kterรฝ ลรญkรก, ลพe vรฝkon motoru nikdy nezรกvisรญ na poฤtu pravidel.
- Pravidla lze upravovat a nasazovat, aniลพ by bylo nutnรฉ aplikaci vypnout.
- Externalizuje obchodnรญ logiku z pomฤrnฤ statickรฉ kรณdovรฉ zรกkladny.
- Pravidla jsou vyvรญjena v mรฉnฤ komplikovanรฝch formรกtech, takลพe obchodnรญ analytik mลฏลพe snadno pลeฤรญst a ovฤลit skupinu pravidel.
- Pravidla umoลพลujรญ vytvoลit sklad znalostรญ, kterรฝ je spustitelnรฝ ve formฤ.
- Nรกstroje jako Eclipse vรกm pomohou spravovat pravidla, zรญskat okamลพitou odpovฤฤ, ovฤลovรกnรญ a podporu obsahu.
Nevรฝhody modulu Rules Engine
Zde jsou nevรฝhody/nevรฝhody pouลพรญvรกnรญ modulu pravidel:
- Znalost tรฉto metody programovรกnรญ vyลพaduje od vรฝvojรกลลฏ velkรฉ รบsilรญ pลi uฤenรญ
- Modul pravidel nenรญ bezpeฤnou metodou k ลeลกenรญ problรฉmลฏ.
- Potลebuje pochopit fungovรกnรญ nรกstroje pro pravidla, aby spotลebovรกval vรญce pamฤti.
- Existuje ลกirokรก sada pravidel pro sloลพitรฉ vฤtvenรญ.
Pravidla se mohou ฤasem mฤnit a vstoupรญ v platnost se zmฤnami kรณdu









