Petr Vašíček, IBA CZ
Minule jsme si představili grafickou notaci BPMN, jež je de facto standardem pro modelování business procesů, a uvedli jsme si nejčastěji používané elementy této notace včetně jejich vysvětlení na jednoduchém příkladu. V tomto díle budeme již modelovat proces popsaný v druhé části našeho seriálu. Začneme tvorbou modelu na vysoké úrovni a budeme dále zpřesňovat subproces znázorňující založení objednávky. Cílem bude uvést model do tvaru, který bude převeditelný do jazyka pro popis procesů na vykonatelné úrovni, v našem případě do jazyka BPEL (Business Process Executional Language).
Každý proces je možné vyjádřit různými typy diagramů a s různou mírou přesnosti podle toho, k jakému účelu bude sloužit. Jinak vypadá diagram, sloužící k hrubému náhledu na proces, a jinak diagram, jenž bude předlohou pro implementaci procesu v jazyce BPEL.
Neexistuje žádná specifická metodika, se kterou je BPMN spjato a která by popisovala, jakým způsobem se mají procesy modelovat a jakým postupem modely zpřesňovat. Obvyklé je však začít u modelu procesu na vysoké úrovni, tedy sekvenci subprocesů, a následně modelovat tyto jednotlivé subprocesy. Nejprve lze vytvořit hrubý model subprocesu a pak jej dále zjemňovat, přidávat aktivity, uspořádávat elementy do plaveckých drah atd.
V tomto díle se pokusíme nastínit jeden z možných způsobů, kterým toho lze docílit. Zopakujme tedy, že našim cílem bude vyjádřit proces ve tvaru, ve kterém ho budeme moci co nejsnáze převést do spustitelné podoby, tedy implementovat v jazyce BPEL. U minulého dílu seriálu se rozvinula zajímavá diskuze zejména ohledně názvosloví aktivit a událostí a bude určitě přínosem, pokud se i tentokrát podělíte o svoje názory a zkušenosti.
Tvorba high-level modelu
Diagram procesu na vysoké úrovni, tzv. high-level diagram, je zobrazen jako sekvence subprocesů. Jak bylo napsáno v minulém díle, subproces je aktivita, pod kterou se skrývá samostatný proces se svým počátkem a koncem. Tento subproces je zinicializován z high-level procesu v okamžiku, kdy do něj vstoupí tok procesu. Poté, co subproces skončí, pokračuje high-level proces sekvenčním tokem, vedoucím z grafického objektu, značícího subproces.
V našem seriálu se budeme věnovat pouze jednomu samostatnému procesu (Založit objednávku), jenž již nebude dekomponován na další subprocesy. Nyní se ale podívejme, jak by mohl vypadat high-level proces, kde Založit objednávku je jedním ze subprocesů:
Proces začíná požadavkem na vytvoření objednávky a následuje první subproces, Založit objednávku. Výsledkem tohoto subprocesu je mimo jiné to, zda byla objednávka schválena či nikoliv. Pokud byla zamítnuta, high-level proces je ukončen, v opačném případě pokračuje dál třemi zaznačenými subprocesy.
Modelování subprocesu
Soustřeďme se nyní na samostatný proces Založit objednávku. Ten začne požadavkem na vytvoření objednávky od Objednatele. Touto událostí by odstartoval uvedený high-level proces, my ji ale budeme chtít přesunout do procesu Založit objednávku, abychom ten mohli později implementovat jako samostatný proces bez implementování high-level procesu.
Budeme se tedy držet popisu, který jsme uvedli ve druhém díle seriálu. Po vytvoření objednávky probíhá její posouzení technickým oddělením. Pokud ji schválí, dojde k rozhodnutí podle ceny objednávky. V případě, že je nižší než 40.000 Kč, je objednávka přímo schválena, v opačném případě je navíc předána ke schválení finančnímu řediteli. Budeme nyní modelovat jen hrubý diagram procesu a využijeme tedy pouze základních grafických elementů notace BPMN – startovních a ukončovacích událostí, aktivit, rozhodovací brány a sekvenčního toku.
Uspořádání aktivit do plaveckých drah
V procesu vystupují tři aktoři – Objednatel, Technické oddělení a Finanční ředitel. Nyní budeme chtít uspořádat aktivity v procesu tak, abychom z diagramu mohli určit, kdo v něm provádí jakou činnost. K tomuto účelů slouží plavecké dráhy (swimlanes). Vytvoříme tedy jeden pool (v diagramu je pouze jeden proces), ten můžeme pojmenovat např. workflow, tedy „tok práce“. V něm vytvoříme plaveckou dráhu pro každého aktora, v diagramu tak budeme mít jeden pool, rozdělený na tři plavecké dráhy.
Zahrnutí systémových akcí do procesu
Naším cílem je převést proces na nižší úroveň, abychom jej mohli později snáze implementovat. Budeme tedy chtít zpřesnit proces zobrazení aktivit, jenž ukazují interakci s backendovou částí systému, v našem případě tedy např. modulem pro správu objednávek. Pokud uživatel vytvoří objednávku, budeme ji chtít zřejmě v systému uložit. Pokud je objednávka předána ke schválení nějaké roli, budeme to u ní chtít zachytit. A pokud je objednávka schválena či zamítnuta, chceme tento příznak u objednávky nastavit. Do diagramu přidáme novou plaveckou dráhu – Objednávkový modul. V ní vytvoříme zmíněné systémové akce (můžeme označit jako Service Task).
Vyjádření spustitelného procesu
Podívejme se nyní, jakým způsobem je proces „umístěn“ ve vyvíjeném systému. V prvním díle seriálu můžete na druhém obrázku vidět, že BPM vrstva se nachází mezi backendovou a prezentační vrstvou. Na následujícím obrázku jsou vybrány komponenty, na kterých můžeme vidět jakým způsobem proces interaguje se zbytkem systému. Uprostřed vidíme schéma nějakého procesu. Z jedné strany k němu přistupuje webová aplikace, tedy uživatelé. Na straně druhé proces komunikuje s moduly systému a využívá jejich funkcionality.
Nyní tedy potřebujeme proces dostat do tvaru, kdy bude na jedné straně komunikovat s uživateli a na straně druhé s backendovými moduly systému. Protože BPEL neumí řešit lidskou interakci s procesem, budou veškeré lidské akce „vytknuty“ z procesu a každá taková akce bude v procesu zaznačena přijmutím zprávy (message start/intermediate event) od účastníka procesu reprezentujícího právě lidské uživatele systému.
V procesu tak budeme mít tři účastíky, reprezentované třemi pooly – Uživatelé, Objednávkový modul a samotný proces, u něhož však nebudeme ohraničení poolu zobrazovat. První dva zmíněné pooly budou typu „blackbox“, nebude v nich tedy zobrazen jejich vlastní proces, pouze komunikace s hlavním procesem.
Vidíme, že takto vyjádřený proces skutečně interaguje na jedné straně s uživateli a na druhé s backendovou částí systému. Jeho rozhraní tvoří tři operace – vytvoření objednávky, rozhodnutí technického oddělení a rozhodnutí finančního ředitele. Tyto tři operace budou volány uživateli z webové aplikace. Na druhé straně proces volá rozhraní objednávkového modulu, jenž musí nabízet minimálně tři operace – vytvoření objednávky, nastavení schvalovatele a změnu stavu objednávky.
Takto specifikovaný proces již můžeme poměrně snadno převést do spustitelné podoby jeho implementací v nějakém jazyce pro popis vykonatelných procesů. V našem případě tedy do jazyka WS-BPEL. Proces bychom mohli ještě dále zpřesňovat, typicky odchytáváním výjimek a zaznačením chybového toku, specifikováním vypršení limitu (timeout) při čekání na rozhodnutí apod., ale pro jednoduchost již necháme proces v této formě.
V příštím díle
V příštím díle si představíme standard pro zápis spustitelných procesů, XML jazyk BPEL, ve kterém budeme dnes namodelovaný proces implementovat. Budeme poprvé pracovat s vývojovým nástrojem NetBeans a ukážeme si, jakým způsobem v něm lze implementovat navržený proces a ten pak nasadit do běhového prostředí (v našem případě BPEL engine v platformě OpenESB).
4. část: Modelování procesu
Téma: BPM prakticky (seriál), BPMS, Modely
Subscribe to:
Komentáře k příspěvku (Atom)
22 Comments:
Zatím jsem si to jen prolítl a nenamodeloval, ale vypadá to přehledně a srozumitelně!
Tohle mi připadá geniální! Jsem byznys analytik a konečně vidím, jak se na proces dívat konzistentně i z pohledu IT. Ještě bych prosil vysvětlit, zda model se swimlines podle uživatelů a model se swimlines podle komponent mají být namodelovány paralelně a pokud ano, jak udržet jejich vzájemnou konzistenci.
Díky a velmi!!! chválím.
K Jindrovi:
Z příkladu velmi dobře vyplývá, že je třeba jinak modelovat z pohledu byznysu (což je práce pro byznys analytika) a jinak z pohledu IT služeb (což je práce pro IT analytika). Oba pohledy jsou nutné a běžný modelovací nástroj samozřejmě umožní využívat stejné objekty ve více modelech.
Omlouvám se předem za asi hloupou otázku, ale zatím jsem modelovala jen v arisu a BPMN se učím:
Má být objekt počáteční události u přehledového modelu celého procesu shodný s počáteční událostí u subprocesu? Tedy - jde o stejnou definici objektu? Nebo je to tady jedno?
Také mám dotaz - kde lze v modeleru nastavit, aby všechny aktivity byly stejné velikosti?Automaticky se mi mění velikost objektu podle délky názvu a nevypadá to pěkně.
Chtěla jsem se zeptat, zda je opravdu metodicky správné, že rozhodovací gataway nenásleduje přímo za aktivitou? V našem případě gateway "Levnější než 40K?" následuje za jinou gateway "Schváleno?".
Ptám se proto, že jsem myslela, že se rozhodovací gateway vyhodnocuje již v aktivitě, která ji předchází. Nemělo by to být správně nemodelováno tak, že z aktivity "Posoudit objednávku" vychází 2 konektory paralelně k oběma gateway?
Modeluji to v savvionu a ten mi vyhodil uvedený konstrukt jako chybu.
Gateway nemusí nutně následovat po nějaké aktivitě. Gateway v tomto případě vyhodnocuje podmínku "cena levnější než 40k". Cena je známá již od začátku procesu, proto není třeba žádné další aktivity před rozhodováním o ceně.
Při převodu do BPEL se Data-based Gateway mapuje na element IF-ELSE a těch může být za sebou či v sobě vnořených libovolně mnoho.
Zkoušel jsem v Savvionu naklikat za sebou dvě "decision" a proces mi vyhodnotí jako validní, i jej dovolí simulovat.
Nejsem si jist, jestli BP-VA umoznuje nastavit default velikost pro aktivity, lze ji ale upravit manualne na pozadovanou velikost (u kazde aktivity).
Co se týče počáteční události u nadřazeného procesu a prvního subprocesu, ta je jiná. Uživatel by zaslal zprávu nadřazenému procesu a ten zase zprávu svému subprocesu, kterou jej odstartuje.
V našem případě ale nebudeme nadřazený proces implementovat a soustředíme se pouze na založení objednávky, proto v našem případě zasílá uživatel zprávu přímo tomuto procesu.
Ad Jindra
Ještě bych prosil vysvětlit, zda model se swimlines podle uživatelů
Predpokladám, že bolo myslené podľa rolí, nie používateľov. Rola = Objednatel, užívatel = Jožko Púčik, riaditeľ obchodného odd.
Je dôležité, aby sme to diferencovali.
FJ
Opravdu jsem myslel role - či jak zde bylo také používáno - actory. Omlouvám se za nepřesné vyjádření.
Namodelovat subproces jsem zvládla bez obtíží:) Tak už se jen těším, jak ho ještě polozautomatizujeme!
Asi jsem těžce v zajetí "procesního" pohledu na model. Nemám problém s pochopením kromě posledního obrázku. Z toho už vůbec není patrné, jak proces ve skutečnosti běží. Jde tedy opravdu jen o technickou dekompozici a musím vždy mít předchozí (procesní) obrázek a pokud chci využít BPEL to pak překlopit do takovéhoto technologicky pojatého modelu?
Asi jsem tupa, ale pořád nevím, zda a jak jsou na sobě závislé modely 4 a 5. Evidentně jde o 2 různé pohledy na totéž. Jak se udrží jejich vzájemná konzistence? Jak poznám v modelu 4 (zřejmě IT nezávislém modelu), že se něco změnilo v modelu 5? Promítne se do něj, když nějak změním procesní logiku v modelu 5? Nebo se to musí hlídat ručně?
Promítnou se do něj změny, které uděláš přímo do objektů, které využíváš v obou diagramech. Jak bys chtěl hlídat společnou logiku, když jde o jiný pohled?
Takže když předám procesní model IT analytikovi a on vytvoří IT pohled na proces, musím ho logicky (tj. ručně) zkontrolovat, že mi nezměnil proces jako takový. Porozuměl jsem to u dobře?
Si. Což jest snadné, když byznys a IT analytik jedno jsou:)
!!!Dovoluji si autory seriálu upozornit, že zkušební licence na Visual Paradigm už většině z nás vypršela, ačkoliv bylo slíbeno, že to stihneme....!!!
Co s tím?
Stáhněte si novou licenci VPBA, stačí zadat jiný email.
Díííky. Funguje to.
Nebude už pokračování? Už se nemůžu dočkat!
Taky už se těším na pokračování. Zvlášť na pochopení, proč jsme museli "procesní pohled" překreslit do "komponentového". Tady bude totiž asi jádro neporozumění lidí z byznysu a IT lidí.
Post a Comment