S problematikou business rules (obchodných pravidiel) sa v našich končinách nestretáva veľké množstvo programátorov. Rozhodli sme sa preto priblížiť vám knihu, v ktorej sa praktickým a jednoduchým spôsobom dozviete, čo business rules sú a na čo sa používajú. V ďalšej časti knižky sa dočítate o konkrétnej open source implementácii systému obchodných pravidiel Drools od spol. JBoss (patrí pod spol. Red Hat).
Úvod do business rules
Aj keď názov napovedá, že business rules majú niečo spoločné s podnikovou sférou, technológia sa zakladá na technológiách expertných systémov, dnes už menej známej podoblasti umelej inteligencie. Principiálny rozdiel medzi expertnými systémami a klasickými programovacími paradigmami bol v spôsobe vyjadrenia výpočtu. Kým napríklad pri štruktúrovanom programovaní vytvárame algoritmus (t. j. postupnosť krokov výpočtu), základom expertných systémov je modelovanie dát. Táto časť je podobná ako pri objektovo orientovanom programovaní – v starších expertných systémoch sa používala rámcová reprezentácia (rámec si môžeme zjednodušene predstaviť ako množinu dvojíc tvaru hodnota: atribút, pričom väčšina rámcových systémov podporovala dedičnosť, rozdelenie typových a individuálnych rámcov a iné vzťahy medzi rámcami).
Čo však principiálne odlišuje klasické algoritmické programovanie od expertných systémov, je aj jadrom business rules – výpočet nie je postupnosť krokov, ale súbor pravidiel (typu ak – tak). Postupnosť krokov určuje tzv. produkčný systém, ktorý dynamicky, v závislosti od vstupných dát produkuje postup riešenia.
Produkčný systém (alebo business rules časť produkčného systému) má tri základné dátové štruktúry:
1. Pracovnú pamäť (working memory), ktorá obsahuje dáta (či už rámce, alebo objekty, ako je to v prípade systému Drools)
2. Bázu znalostí (knowledge base) – súbor pravidiel typu ak – tak
3. Agendu – dátová štruktúra, v ktorej sa ukladá vyprodukovaný riešiaci postup, teda pravidlá pripravené na „odpálenie“ (firing)
Produkcia výpočtu je väčšinou relatívne zložitá a existujú rôzne algoritmy na plnenie agendy. Technickými detailmi čitateľov nebudeme zaťažovať, predpokladáme, že vás zaujíma, na čo je táto technológia dobrá.
Business rules sa snažia v podnikovom prostredí riešiť zásadný problém so zložitými biznis procesmi. Často tieto procesy obsahujú výnimky a riešenie nemožno jednoducho algoritmicky uchopiť. Uvedieme jeden častý príklad využitia tejto technológie: schvaľovanie úveru. Pri bežnom spôsobe schválenia sa posudzujú rôzne faktory a tie ovplyvňujú ochotu organizácie dať zákazníkovi úver. Pravidlo môže vyzerať napríklad takto: „Ak má zákazník viac ako 35 rokov a má uzavretú životnú poistku, ktorej suma je viac ako milión eur, zvýš pravdepodobnosť pridelenia úveru o 20 %.“ Prípadne takto: „Ak mal zákazník v minulosti úver, ktorý nebol schopný splácať, zamietni žiadosť.“ Súbor týchto pravidiel sa vloží do bázy znalostí, ktorá ostáva nemenná počas behu aplikácie. Do pracovnej pamäte sa postupne ukladajú fakty (objekty alebo rámce reprezentujúce jednotlivé žiadosti). Produkčný systém vyprodukuje riešiaci postup a aplikáciou pravidiel dostaneme výstup. Nezaujíma nás, v akom poradí sa pravidlá spracujú. Ak sú navzájom závislé, závislosti sa uplatnia automaticky.
Výhoda tohto prístupu je v tom, že je jednoduchšie robiť v tomto systéme úpravy. Ak sa už počas používania rozhodneme, že napríklad pri pravidle o životnej poistke treba túto poistku dokladovať, možno pridať ďalšie pravidlo, ktorá hovorí, že ak dostal zákazník body na základe životnej poistky a bez týchto bodov by žiadosť o úver nebola schválená, treba poistku vydokladovať.
To môžeme robiť bez toho, aby sme zmenili existujúce pravidlá a pochopili celý biznis proces (bude pravdepodobne veľmi zložitý). Dokonca možno túto prirodzenú požiadavku jednoducho implementovať a priamo ju z reči biznis analytika pretransformovať na jednoduché pravidlo.
Kniha
Publikácia sa v úvodnej kapitole venuje otázkam, ktoré sme načrtli v predchádzajúcej časti: čo sú business rules, kedy je vhodné použiť ich a kedy budú skôr na príťaž. V druhej kapitole sa dozvieme, ako si môžeme tento systém zadarmo stiahnuť a nainštalovať. Pozornosť sa tu venuje aj vývojovým nástrojom a inštalácii webového rozhrania na správu pravidiel (Business Rules Management System) Guvnor.
Nasledujúce tri kapitoly sa zaoberajú podrobným príkladom a rôznymi možnosťami písania pravidiel (vrátane úvodu do jazyka MVEL, ktorý sa dá v akčných častiach použiť namiesto jazyka Java).
V ďalšej časti sa dozvieme, ako môžeme testovať pravidlá. Špeciálne táto časť je pre vývoj pravidiel veľmi podstatná – nemožno použiť klasický debugger (hoci vývojové nástroje obsahujú podobný nástroj, ktorý sleduje vykonávanie pravidiel). Keďže je však vývojová paradigma iná (postup riešenia je produkovaný na základe pravidiel a vstupných dát), je vhodné používať testovacie nástroje, ktoré sa zameriavajú na dáta.
Ôsma kapitola sa zaoberá dátami a pravidlami v MS Excel. Na rozdiel od ich programovania v Jave alebo MVEL sa akcie zapisujú formou tabuľky. Tým sa kniha dostáva k podstatnej časti – tvorbe doménovo špecifických jazykov (Domain Specific Languages), ktoré si môžu používatelia definovať. Potom možno pravidlá písať v jazyku, ktorý je pre danú doménu najjednoduchší. V prípade jazyka na doménu „schvaľovanie úverov“ by opis pravidiel nebol pravdepodobne veľmi odlišný od nášho slovného opisu. Deviata kapitola sa snaží vysvetliť, ako naučiť Drools „rozumieť“ tomuto jazyku (t. j. ako interpretovať doménovo závislý jazyk).
Desiata kapitola sa zaoberá deploymentom a zasadzuje business rules do kontextu podnikového prostredia. Hovorí o tom, ako spojiť deployment Java EE aplikácie s business rules, ako majú produkčné servery získavať pravidlá a pod. Táto kapitola je obzvlášť užitočná pre programátorov pracujúcich v prostredí Java Enterprise Edition.
Jedenásta a dvanásta kapitola sa zaoberajú podrobnejšími konceptmi. Prvá z nich vysvetľuje koncept fungovania produkčného systému. Umožní vám pozrieť sa na pracovnú pamäť, vysvetľuje, ako funguje vyhodnocovanie konfliktov (conflict resolution) a algoritmus RETE, ktorého autorom je Dr. Charles Forgy a je prevažne implementovaný z jeho známych prác v tejto oblasti v rokoch 1974 – 1979. Kapitola sa vracia k ladeniu a umožňuje nahliadnuť aj do interných dátových štruktúr algoritmu RETE (a to dokonca aj počas vývoja). Myslíme si, že táto kapitola je podstatná a bez jej plného pochopenia nemožno písať bezchybné a efektívne aplikácie pomocou rule engines. Posledná kapitola obsahuje informácie o rozšírenej funkcionalite, ktorú však nie je nevyhnutné naštudovať v prípade, že konkrétne časti nebudete v praxi potrebovať.
Záver
Kniha tvorí príjemný úvod do Business Rules enginu Drools, a to prevažne časti Drools Expert. Ostatným súčastiam Drools (Drools Flow, Solver) sa venuje iba okrajovo. Je vhodná najmä pre ľudí, ktorí nemajú s business rules žiadne skúsenosti a radi by sa naučili prakticky programovať pomocou tejto znova aktuálnej technológie.
Vydavateľ: Packt Publishing, www.packtpub.com, ISBN: 978-1-847196-06-4
O autorovi
Juraj Bednár pracuje ako Chief Technological Officer v spoločnosti Digmia. Venuje sa prevažne open - source technológiam (Linux, Solaris, Java, ...) a VoIP.
Zdroj: Infoware