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.

  • โš™๏ธ Zรกkladnรญ definice: Drools je JavaSystรฉm BRMS zaloลพenรฝ na platformฤ› .NET, kterรฝ spouลกtรญ obchodnรญ pravidla pomocรญ algoritmu porovnรกvรกnรญ vzorลฏ Rete.
  • ๐Ÿ“œ Struktura pravidel: Pravidlo se ล™รญdรญ formรกtem kdy-pak a spustรญ akce pouze tehdy, kdyลพ jeho podmรญnky odpovรญdajรญ faktลฏm v pracovnรญ pamฤ›ti.
  • ๐Ÿ—๏ธ Archistruktura: Pravidla se naฤtou do databรกze pravidel, fakta se dostanou do pracovnรญ pamฤ›ti a engine je porovnรก a spustรญ pomocรญ agendy.
  • ๐Ÿ”Œ Eclipse Setup: Plugin Drools se nainstaluje do Eclipse prostล™ednictvรญm ZIP distribuฤnรญho balรญฤku jBPM a dialogovรฉho okna Instalace novรฉho softwaru.
  • ๐Ÿ”„ Reลพimy ล™etฤ›zenรญ: Drools podporuje dopล™ednรฉ ล™etฤ›zenรญ od faktลฏ k zรกvฤ›rลฏm a zpฤ›tnรฉ ล™etฤ›zenรญ od cรญle zpฤ›t k faktลฏm.

Drools Tutorial

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

Motor pravidla slintรกnรญ Architecture
Motor pravidla slintรกnรญ Architecture

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.

Pล™idejte pluginy Drools Eclipse

Krok 2) Nainstalujte novรฝ software
In Eclipse, vyberte Instalovat novรฝ software.

Pล™idejte pluginy Drools Eclipse

Krok 3) Kliknฤ›te na tlaฤรญtko Pล™idat
Kliknutรญm na tlaฤรญtko Pล™idat pล™idรกte software.

Pล™idejte pluginy Drools Eclipse

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.

Pล™idejte pluginy Drools Eclipse

Krok 5) Kliknฤ›te na tlaฤรญtko Dalลกรญ
Na strรกnce opravy instalace kliknฤ›te na tlaฤรญtko Dalลกรญ.

Pล™idejte pluginy Drools Eclipse

Krok 6) Pล™ijmฤ›te licenฤnรญ smlouvu
Pล™ijmฤ›te licenฤnรญ smlouvu a klepnฤ›te na tlaฤรญtko Dalลกรญ.

Pล™idejte pluginy Drools Eclipse

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ล™idejte pluginy Drools Eclipse

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รญ.

Zpฤ›tnรฉ vs. dopล™ednรฉ ล™etฤ›zenรญ

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รฉ vs. dopล™ednรฉ ล™etฤ›zenรญ

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

Nejฤastฤ›jลกรญ dotazy

Ano. Drools je vydรกn pod licencรญ Apache 2.0 a je zcela zdarma a s otevล™enรฝm zdrojovรฝm kรณdem. Bฤ›ลพรญ na jakรฉmkoli JVM a je k dispozici prostล™ednictvรญm Maven Central Repository pro snadnou integraci do projektลฏ.

Pravidla Drools jsou psรกna v DRL (Drools Rule Language), coลพ je deklarativnรญ syntax zaloลพenรฝ na struktuล™e โ€žkdyลพ-pakโ€œ. Pravidla lze takรฉ vytvรกล™et pomocรญ rozhodovacรญch tabulek, modelลฏ DMN nebo domรฉnovฤ› specifickรฝch jazykลฏ pro firemnรญ uลพivatele.

Pravidlovรฝ engine externalizuje logiku do udrลพovatelnรฝch pravidel, kterรก se mฤ›nรญ bez nutnosti opฤ›tovnรฉho nasazenรญ aplikace. Pevnฤ› โ€‹โ€‹zakรณdovanรก logika if-else je rozptรฝlenรก v kรณdovรฉ zรกkladnฤ›, hลฏล™e se aktualizuje a neลกkรกluje se dobล™e s rostoucรญm poฤtem podmรญnek.

Drools implementuje expertnรญ systรฉmy, klasickou vฤ›tev umฤ›lรฉ inteligence, kรณdovรกnรญm lidskรฝch znalostรญ do pravidel. Engine uvaลพuje o faktech, aby dospฤ›l k zรกvฤ›rลฏm, a podporuje ล™etฤ›zenรญ dopล™edu a zpฤ›t podobnฤ› jako symbolickรฉ rozhodovacรญ systรฉmy umฤ›lรฉ inteligence.

Ano. Asistenti s umฤ›lou inteligencรญ dokรกลพรญ navrhovat pravidla pro dennรญ spotล™ebu (DRL) z poลพadavkลฏ v otevล™enรฉm jazyce, detekovat konfliktnรญ nebo redundantnรญ pravidla a navrhovat optimalizace. Tรฝmy i nadรกle ovฤ›ล™ujรญ vygenerovanรก pravidla, aby zajistily sprรกvnou obchodnรญ logiku a spolehlivรฉ provedenรญ.

Shrลˆte tento pล™รญspฤ›vek takto: