8. část: Business Rules I.

Petr Vašíček, IBA CZ

V nadcházejících dvou dílech se budeme zabývat tzv. business rules (též business pravidla nebo pravidla podnikání). V prvním z těchto dvou článků si stanovíme úsek v našem modelovém příkladě, který budeme transformovat na business pravidlo. Podíváme se také, jaké nástroje můžeme se zvoleným běhovým prostředím použít a vybereme z nich vhodného kandidáta podle našich potřeb.

Úvod do Business Rules

Business rules neboli pravidla podnikání jsou deklarativně definované příkazy tvaru „JESTLIŽE je splněna určitá podmínka TAK udělej určenou akci“. V nejčastěji uváděném příkladě se určuje míra slevy podle platební historie či typu zákazníka, pravidla je však možno použít v zásadě jakémkoliv případě, kde je potřeba nějaké rozhodnutí, ať již jde o pravidlo validační (jsou vstupní údaje validní?) či transformační (pokud vyhovují zadané podmínce, proveď následující operaci).

Business pravidla jsou typicky seskupována do množin (Business Ruleset). Například pro proces příjímání nového zaměstnance a rozhodování o typu HW, který mu bude přidělen, může množina pravidel (ruleset) obsahovat pravidla jako „pokud je administrativní pracovník, dostane pracovní stanici“, „pokud je programátor a zároveň jeho pozice je senior developer, dostane notebook“ apod.

Business pravidla tedy pokrývají určitá rozhodnutí, jež jsou součástí procesu. Business procesy se čas od času mohou měnit – ať již na základě požadavku na faktickou změnu v procesu, či jeho optimalizací na základě výsledků monitorování. Tento proces (návrh změny, validace, aktualizace modelu, implementace, testování, nasazení) však bývá poměrně zdlouhavý, přitom business pravidla jsou dynamičtější než samotný proces a v určitých případech se jejich zadání může měnit velice často. Namísto jejich deklarace přímo v procesu se tedy vyplatí uchovávat je v externím repozitáři, ke kterému proces přistupuje prostřednictvím nějakého nástroje. Ten umožňuje přijmout vstupní data, načíst z repozitáře příslušná pravidla, ty vyhodnotit a výsledek zaslat zpět. Tento nástroj se nazývá Business Rules Engine (BRE).


Kliknutím zvětšíte obrázek v novém okně.

Ilustrace 1: Architektura BRMS

Pro integraci v SOA je potřeba aby Business Rules Engine umožňoval vystavit business pravidla jako webové služby a nepostradatelná je i webová administrace, jež umožní okamžitou změnu pravidel a je přehledná i pro netechnické pracovníky. Tento pokročilejší systém se nazývá BRMS (Business Rules Management systém) a bývá obvykle součástí pokročilejších BPMS.

Trendem při modelování business procesu je právě transformovat všechna místa, jež by mohla být předmětem změny, do business pravidel. To umožní flexibilní změnu chování procesu bez nutnosti jeho znovunasazení. Samotná změna pravidla pak obnáší pouze přenastavení potřebných parametrů a nasazení pravidla, což je obvykle záležitostí jednoho kliknutí. Změna se projeví okamžitě a všechny instance procesů, co od té chvíle projdou rozhodovacím bodem, se budou řídit novým nastavením.

Pravidla pracují s různými objekty a atributy, které se vyskytují v business procesu a je obvykle možné navázat je i na okolní prostředí, jako datum, čas, dny v týdnu, organizační struktura ve firmě apod.

Limit schvalování žádosti

Vraťme se nyní k našemu příkladu schvalování žádostí a zaměřme se na okamžik rozhodování, kdy se podle ceny objednávky určí, zda ji bude po technickém oddělení schvalovat i finanční ředitel. Prahová hodnota (tzv. threshold) je nastavena na 40.000 Kč. Tato hodnota může typicky být předmětem změny. Finanční ředitel bude chtít například nastavit, že chce schvalovat již objednávky nad 20 tisíc Kč. Nebo naopak může (například díky monitorování) vyjít najevo, že poměrně velká část objednávek se pohybuje těsně nad hranicí 40 tisíc Kč. V takovém případě může finanční ředitel naznat, že při zvýšení limitu na 45 tisíc Kč dojde k výraznému snížení jeho práce na objednávkách a také zrychlení procesu schvalování objednávek. Přitom riziko, že firma nevhodně vydá prostředky pro nákup zboží, vzroste jen nepatrně.

Kliknutím zvětšíte obrázek v novém okně.

Ilustrace 2: Výsek BPMN diagramu s rozhodováním o ceně objednávky

Hraniční hodnota ceny objednávky může tedy být často se měnící veličina v našem procesu. Pokud bychom chtěli tuto hodnotu změnit, museli bychom otevřít vývojové prostředí, příslušný BPEL projekt, provést změnu v BPEL kódu, validovat jeho správnost a provést deploy do běhového prostředí. To s sebou nese riziko chybně provedené změny, problémy při znovunasazení procesu či nekompatibilitu s již běžícími instancemi staré verze procesu. Navíc to není typ úkonu, který očekáváme u netechnického pracovníka. Řešením tedy bude umístit rozhodovací bod mimo proces a transformovat jej do business pravidla, což umožní jeho flexibilní změnu v reálném čase.

Výběr vhodného nástroje

Do našeho BPMS můžeme integrovat takřka jakýkoliv systém pro správu business pravidel, otázkou je pouze kolik úsilí chceme na tuto integraci vynaložit. I kdybychom vzali jednoduchý engine, který bude schopen vyhodnocovat pravidla na základě nějakého vstupu, není nijak velký problém napsat pro něj vlastní prezentační vrstvu a konektory pro webové služby, aby mohl pravidla využívat i proces zapsaný v jazyce WS-BPEL. Nic nebrání ani vytvoření vlastního BRE. Rozhodně je však lepší vzít nějaký již osvědčený produkt, kterých je na poli open source několik.

OpenRules

Jedním z těchto je OpenRules, jenž používá jako základní nástroj pro zadávání dat Excel. Jedná se o jednoduché prostředí s krátkou dobou potřebnou pro jeho zvládnutí. Pravidla jsou v OpenRules definována v rozhodovacích tabulkách, jenž jsou dobře zpracované a přehledné, nicméně problém může nastat se specifikací komplexnějších pravidel. Rovněž není zajištěna podpora databází, tu je třeba si případně doimplementovat. Také absence webového rozhraní by vyžadovala větší pracnost při integraci v našem řešení.

OpenLexicon

Dalším, a velmi populárním, open source nástrojem pro řízení business pravidel je OpenLexicon. Ten poskytuje přehledné webové rozhraní pro správu pravidel a jejich množin, zorientuje se v něm poměrně snadno i netechnický uživatel. Upravení pravidla má okamžitou platnost bez nutnosti rekompilace, což bývá často považováno za stěžejní funkci. Co se týče využití systému pro externí aplikaci, nabízí OpenLexicon přístup přes webovou službu.

Drools

Jako poslední variantu si uvedeme Drools, což je nástroj pro business pravidla od Jboss. Drools poskytuje pokročilý editor pravidel na bázi Eclipse, nabízí ovšem i velice dobře vypadající webové rozhraní pro editaci a tvorbu nových pravidel. Webová aplikace je doporučena k nasazení na JBoss AS, ale fungovat by měla na kterémkoliv aplikačním serveru či servletovém kontejneru. Největším problémem Drools při nasazení do SOA architektury je problematičtější vystavování pravidel jako webových služeb. To je třeba nyní dělat manuálně, automatické vystavení webové služby pro nové pravidlo je plánováno do budoucna.
Vhodné varianty z tohoto krátkého přehledu jsou dvě. Jednou z nich je OpenLexicon, jehož použití si ovšem necháme na pokračování seriálu s Intalio BPMS a zvolíme druhou možnost, kterou je Drools. To má o něco přívětivější uživatelské rozhraní, jediné co budeme muset řešit navíc je jakýsi prostředník, který jednotlivá pravidla zpřístupní přes operace webové služby. To z důvodu, abychom mohli k pravidlům přistupovat z BPEL procesu. Vytvoření tohoto prostředníka ale není nic složitého, navíc získáme lepší kontrolu nad komunikací s BRMS, můžeme operaci volat pouze s parametry, které budeme opravdu potřebovat apod.

Kliknutím zvětšíte obrázek v novém okně.

Ilustrace 3: Ukázka prostředí Drools BRMS

Implementaci tohoto „prostředníka“ detailně popisovat nebudeme, jedná se o jednoduchou webovou službu, která jednoduše přijme vstup s parametry pro dané pravidlo, získá od Drools balíček s tímto pravidlem a pomocí jednoduché funkce, kterou Drools poskytuje, pravidlo s příslušnými vstupními hodnotami vyhodnotí a výsledek vrátí jako odpověď.

V příštím díle

V následujícím díle si ukážeme, jak vytvořit ve zvoleném nástroji požadované pravidlo a jak nástroj pro podporu business rules do systému zakomponovat, abychom mohli toto pravidlo používat. Jak se změna v reálném čase provádí ukážeme opět pomocí přehledného video screencastu. Podíváme se také, jak lze přizpůsobit vizuální stránku editace pravidel do již existující enterprise aplikace.

6 Comments:

Anonymní said...

Výborně! Tohle je velmi srozumitelné, bezvadné jsou anotace programů pro BR. Děkuji.

Anonymní said...

A kedy sa mozme tesit na dalsie casti?

Anonymní said...

Také si říkám, že se seriál nějak zasekl...

Anonymní said...

Diky za zajimavy blog

Anonymní said...

to, co jsem hledal, diky

Anonymní said...

Diky za zajimavy blog

ISSN 1802-5676  | Copyright © 2003-2008 BPS Business Process Services