<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-638164731243339634</id><updated>2011-11-28T02:29:50.097+01:00</updated><category term='Modely'/><category term='BPMS'/><category term='BPM prakticky (seriál)'/><title type='text'>BPM prakticky</title><subtitle type='html'>&lt;a href="http://www.procesy.cz/"&gt;www.procesy.cz&lt;/a&gt;  * Technické a IT aspekty implementace BPM (zejména) v malých a středních podnicích</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://bpm-sme.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/638164731243339634/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://bpm-sme.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>vk</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://3.bp.blogspot.com/-9ISibY5RKgY/TgWjFov5gMI/AAAAAAAAB7k/uPmzzlv2Rrk/s220/kalenda1.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>9</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-638164731243339634.post-4827426989166997489</id><published>2008-08-02T17:20:00.006+02:00</published><updated>2008-08-02T17:38:07.958+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BPM prakticky (seriál)'/><title type='text'>8. část: Business Rules I.</title><content type='html'>&lt;em&gt;Petr Vašíček, IBA CZ&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Úvod do Business Rules&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;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).&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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).&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp2.blogger.com/_Ns4jFXT4KpE/SJR9mN9YNSI/AAAAAAAABQ0/OoYiW0Sfg1M/s1600-h/architektura_big.png" target="_blank"&gt;&lt;img id="BLOGGER_PHOTO_ID_5229943162819589410" style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; CURSOR: pointer; BORDER-BOTTOM: medium none" alt="Kliknutím zvětšíte obrázek v novém okně." src="http://bp2.blogger.com/_Ns4jFXT4KpE/SJR9mN9YNSI/AAAAAAAABQ0/OoYiW0Sfg1M/s400/architektura_big.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Ilustrace 1: Architektura BRMS&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Limit schvalování žádosti&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;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ě.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp1.blogger.com/_Ns4jFXT4KpE/SJR9yIAXi6I/AAAAAAAABQ8/WeoztA52jVY/s1600-h/bpmn.png" target="_blank"&gt;&lt;img id="BLOGGER_PHOTO_ID_5229943367379946402" style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; CURSOR: pointer; BORDER-BOTTOM: medium none" alt="Kliknutím zvětšíte obrázek v novém okně." src="http://bp1.blogger.com/_Ns4jFXT4KpE/SJR9yIAXi6I/AAAAAAAABQ8/WeoztA52jVY/s400/bpmn.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Ilustrace 2: Výsek BPMN diagramu s rozhodováním o ceně objednávky&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Výběr vhodného nástroje&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;strong&gt;OpenRules&lt;/strong&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Jedním z těchto je &lt;a href="http://www.openrules.com/" target="_blank"&gt;OpenRules&lt;/a&gt;, 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í.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;strong&gt;OpenLexicon&lt;/strong&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Dalším, a velmi populárním, open source nástrojem pro řízení business pravidel je &lt;a href="http://www.openlexicon.org/" target="_blank"&gt;OpenLexicon&lt;/a&gt;. 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.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;strong&gt;Drools&lt;/strong&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Jako poslední variantu si uvedeme &lt;a href="http://www.drools.org/" target="_blank"&gt;Drools&lt;/a&gt;, 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.&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp1.blogger.com/_Ns4jFXT4KpE/SJR94UZmVqI/AAAAAAAABRE/y92Wt23nx1Q/s1600-h/droolsdemo_big.png" target="_blank"&gt;&lt;img id="BLOGGER_PHOTO_ID_5229943473786214050" style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; CURSOR: pointer; BORDER-BOTTOM: medium none" alt="Kliknutím zvětšíte obrázek v novém okně." src="http://bp1.blogger.com/_Ns4jFXT4KpE/SJR94UZmVqI/AAAAAAAABRE/y92Wt23nx1Q/s400/droolsdemo_big.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Ilustrace 3: Ukázka prostředí Drools BRMS&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;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ěď.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;V příštím díle&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/638164731243339634-4827426989166997489?l=bpm-sme.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bpm-sme.blogspot.com/feeds/4827426989166997489/comments/default' title='Komentáře k příspěvku'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=638164731243339634&amp;postID=4827426989166997489&amp;isPopup=true' title='Počet komentářů: 6'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/638164731243339634/posts/default/4827426989166997489'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/638164731243339634/posts/default/4827426989166997489'/><link rel='alternate' type='text/html' href='http://bpm-sme.blogspot.com/2008/08/8-business-rules.html' title='8. část: Business Rules I.'/><author><name>vk</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://3.bp.blogspot.com/-9ISibY5RKgY/TgWjFov5gMI/AAAAAAAAB7k/uPmzzlv2Rrk/s220/kalenda1.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_Ns4jFXT4KpE/SJR9mN9YNSI/AAAAAAAABQ0/OoYiW0Sfg1M/s72-c/architektura_big.png' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-638164731243339634.post-4999317026948679807</id><published>2008-06-20T14:11:00.004+02:00</published><updated>2008-06-20T14:53:13.986+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BPM prakticky (seriál)'/><title type='text'>7. část: Testování a spuštění procesu</title><content type='html'>&lt;em&gt;Petr Vašíček, IBA CZ&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;V tomto díle si ukážeme, jak proces, jež jsme implementovali v posledním díle, otestovat a jaké možnosti skýtá jeho ladění (debugging). Dále představíme webovou aplikaci, pomocí které může uživatel s procesem interagovat. Projdeme si také různé scénáře životního cyklu objednávky a vysvětlíme si, jaké události při nich v procesu probíhají.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Testování procesu&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Abychom mohli proces otestovat, musíme jej nejprve nasadit na server. Jak již bylo popsáno dříve, BPEL modul je přidán do tzv. kompozitní aplikace (souhrný projekt, skládající se z jednoho či více modulů), která je následně nasazena do běhového prostředí. Pro založení aplikace vybereme v prostředí NetBeans „New Project -&gt; Service Oriented Architecture -&gt; Composite Application“, zvolíme název (například „OrderingCA“) a dokončíme. Do kompozitní aplikace vložíme hotový BPEL modul pomocí „Add JBI Module...“, vše ostatní se již provede za nás. Z kontextového menu projektu pak vybereme „Deploy“ pro nasazení na aplikační server Glassfish. Pokud nechcete kompozitní aplikaci vytvářet, můžete si ji jako kompletní projekt stáhnout z &lt;a href="http://www.ibacz.eu/Serial-o-BPM-7-dil"&gt;této adresy&lt;/a&gt;. Jsou v ní obsaženy i všechny testy, bude ovšem zřejmě nutné specifikovat v nastavení cestu k umístění BPEL modulu, pokud nebudou oba projekty ve stejném adresáři.&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;Nyní již můžeme vytvořit testy. Proces má celkem tři vstupní operace, budou nám tedy stačit tři testy. V každém z nich definujeme vstup do dané operace pomocí SOAP zpráv v XML formátu a požadovaný výstup, podle kterého se zkontroluje skutečný výstup, který nám testovaná operace vrátí. Pokud se výstupy shodují, je test vyhodnocen jako úspěšný. Musíme mít však na paměti, že u operace, která nám pokaždé vrátí jinou zprávu (například naše operace &lt;em&gt;createOrder&lt;/em&gt; vrací identifikátor nově založené objednávky, který je pochopitelně vždy jiný), se výstupy shodovat nebudou a výsledek operace tak musíme zkontrolovat sami.&lt;br /&gt;Při vytvoření testu je připravena vstupní zpráva, do které doplníme požadované hodnoty. Při testování operace &lt;em&gt;createOrder&lt;/em&gt; vyplníme identifikátor osoby, která objednávku zakládá, identifikátor položky a kvantitu. Příklad vyplněné vstupní zprávy lze vidět na následujícím obrázku:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp2.blogger.com/_Ns4jFXT4KpE/SFumOSz8NxI/AAAAAAAABOE/cGUii8bOop0/s1600-h/1-testCase_big.png" target="_blank"&gt;&lt;img style="cursor:pointer; border:none;" src="http://bp2.blogger.com/_Ns4jFXT4KpE/SFumOSz8NxI/AAAAAAAABOE/cGUii8bOop0/s400/1-testCase_big.png" border="0" alt="Kliknutím obrázek zvětšíte v novém okně."id="BLOGGER_PHOTO_ID_5213943758109554450" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Pokud tento test spustíme, je vytvořena objednávka na zboží s identifikátorem „1“ - notebook. Objednatelem je v tomto případě Jan Novák (identifikátor „1“ v tabulce uživatelů) a zboží je objednáno v množství dvou kusů. Odpověď na tuto zprávu obsahuje jediný parametr, a to sice identifikátor nově vytvořené objednávky. Výstupní SOAP zpráva tedy vypadá takto:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp1.blogger.com/_Ns4jFXT4KpE/SFumHM5sUNI/AAAAAAAABN8/uzTqEK_hsVo/s1600-h/2-testCaseOutput_big.png" target="_blank"&gt;&lt;img style="cursor:pointer; border:none;" src="http://bp1.blogger.com/_Ns4jFXT4KpE/SFumHM5sUNI/AAAAAAAABN8/uzTqEK_hsVo/s400/2-testCaseOutput_big.png" border="0" alt="Kliknutím obrázek zvětšíte v novém okně."id="BLOGGER_PHOTO_ID_5213943636263981266" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Podobně vytvoříme testy i na zbylé dvě operace, &lt;em&gt;techDecide&lt;/em&gt; a &lt;em&gt;findirDecide&lt;/em&gt;. V obou případech vyplníme ve vstupní zprávě identifikátor objednávky a typ rozhodnutí (approve/decline) a ve výstupní zprávě je pouze příznak zpracování požadavku, pravdivostní hodnota „true“. Otestování jednoho scénáře procesu tak může vypadat následovně:&lt;ol&gt;&lt;li&gt;Spustíme test na operaci &lt;em&gt;createOrder&lt;/em&gt; z výše uvedenými parametry (2x notebook). Vrátí se nám identifikátor nové zprávy. V databázi můžeme zkontrolovat, že se skutečně založil záznam s objednávkou.&lt;/li&gt;&lt;li&gt;Spustíme test na operaci &lt;em&gt;techDecide&lt;/em&gt;, jako parametry uvedeme identifikátor objednávky a rozhodnutí o objednávce „approve“.&lt;/li&gt;&lt;li&gt;Jelikož byla objednávka na 2 notebooky o ceně 30.000, je celková cena vyšší jak 40.000 a je vyžadováno schválení finančním ředitelem. Proces nyní tedy čeká na zavolání operace &lt;em&gt;findirDecide&lt;/em&gt;, jíž předáme stejné parametry jako předchozí operaci. V databázi pak můžeme zkontrolovat, že je již objednávka ve stavu „APPROVED“.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;strong&gt;Ladění procesu&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;Ladění procesu (tzv. debugging) nám poskytne cenné informace o běhu procesu a umožňuje jednoduše vystopovat a lokalizovat chyby, které v něm nastávají. Pomocí debuggingu můžeme proces postupně „odkrokovat“ a zjistit jak se chová, kterou větví prochází apod. Rovněž máme přístup k proměnným, které jsou v procesu použity a můžeme sledovat, jak se v nich mění hodnoty po provedení různých akcí.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp2.blogger.com/_Ns4jFXT4KpE/SFumBI-lX3I/AAAAAAAABN0/ZyJvBoO928Q/s1600-h/3-debugging_big.png" target="_blank"&gt;&lt;img style="cursor:pointer; border:none;" src="http://bp2.blogger.com/_Ns4jFXT4KpE/SFumBI-lX3I/AAAAAAAABN0/ZyJvBoO928Q/s400/3-debugging_big.png" border="0" alt="Kliknutím obrázek zvětšíte v novém okně."id="BLOGGER_PHOTO_ID_5213943532131540850" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Ilustrace 1: Ladění BPEL procesu v NetBeans IDE&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;V prostředí NetBeans můžeme ladění využít, pokud jsme nastartovali server v debuggovacím módu a připojili BPEL debugger (pomocí „Attach debugger“). Do procesu zaznačíme body přerušení (tzv. breakpoints), na kterých se nám proces automaticky zastaví. Při spuštění procesu, ať už testováním nebo standardní cestou přes klientskou aplikaci, je pak umožněno jeho ladění. Pokud proces projde bodem přerušení, je jeho tok pozastaven dokud uživatel neprovede nějakou akci. Touto akcí může být pokračování běhu (resume) nebo posunutí k dalšímu kroku (step). V okamžiku, kdy je proces přerušen jej můžeme podle potřeby zkoumat, např. prohlížet hodnoty v proměnných. To je zvláště přínosné při testování (i neúplného) procesu, lokalizaci chyb a podobných činnostech.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Klientská aplikace&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Poslední ze základních komponent systému, která nám chybí, je klientská aplikace. Ta podle zásad SOA přistupuje k funkcionalitě backendu a procesu přes webové služby. Ve skutečnosti aplikace nepozná, zda se za webovou službou skrývá BPEL, modul v Javě nebo jinak zapsaná business logika. Díky tomu je například možné zaměnit implementaci služby za jinou, aniž bychom museli provádět rozsáhlejší změny v klientské aplikaci (tedy za předpokladu, že zachováme rozhraní této služby). Klientská aplikace může být buďto desktopová (tlustý klient) nebo častěji webová (tenký klient). Díky univerzálnímu přístupu přes webové služby může být naprogramována v libovolném jazyce. Vhodným řešením pro firemní webovou aplikaci postavenou na principech BPM a SOA může být například portál.&lt;br /&gt;&lt;br /&gt;Nyní se vraťme k našemu příkladu. Abyste si proces založení objednávky mohli vyzkoušet v praxi, připravili jsme pro vás jednoduchou webovou aplikaci, jež využívá webové služby vystavené procesem a backendem. Stáhnout si ji můžete opět z &lt;a href="http://www.ibacz.eu/Serial-o-BPM-7-dil"&gt;této adresy&lt;/a&gt;. Při instalaci postupujte podobně jako v případě backendového modulu – ve webové administrační konzoli vyberete záložku Web Applications, zvolte Deploy, zadejte cestu k souboru &lt;em&gt;OrderingWeb.war&lt;/em&gt; a potvrďte.&lt;br /&gt;&lt;br /&gt;Aplikace umožňuje proklikat základní scénáře s vytvořením objednávky a následným schválením či zamítnutím uživatele systému z technického oddělení, popřípadě finančním ředitelem, pokud je objednávka na zboží nad 40.000 a projde prvním schvalovacím krokem. Při provedení nějaké akce je zavolána webová služba, kterou implementuje BPEL, je provedena sekvence činností definovaných v procesu a je zaslána odpověď zpět klientovi. Jak práce s webovou aplikací probíhá a co se děje během ní v procesu je názorně zachyceno na videu, které můžete shlédnout na &lt;a href="http://www.ibacz.eu/Serial-o-BPM-7-dil"&gt;této adrese&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp3.blogger.com/_Ns4jFXT4KpE/SFul5wXze7I/AAAAAAAABNs/LVkrv63DfYI/s1600-h/4-screencast_big.png" target="_blank"&gt;&lt;img style="cursor:pointer; border:none;" src="http://bp3.blogger.com/_Ns4jFXT4KpE/SFul5wXze7I/AAAAAAAABNs/LVkrv63DfYI/s400/4-screencast_big.png" border="0" alt="Kliknutím obrázek zvětšíte v novém okně."id="BLOGGER_PHOTO_ID_5213943405267352498" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Ilustrace 2: Náhled video prezentace webové aplikace&lt;br /&gt;&lt;/em&gt;&lt;br /&gt;V systému jsou připraveni tři uživatelé:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Jan Novák – role: zaměstnanec&lt;/li&gt;&lt;li&gt;Jiří Technik – role: zaměstnanec, technické oddělení&lt;/li&gt;&lt;li&gt;Josef Ředitel – role: zaměstnanec, finanční ředitel&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Na videu probíhá scénář, kdy uživatel Jan Novák objedná 6 ks LCD monitorů o celkové ceně 60.000 Kč. Následně se přihlásí do systému Jiří Technik jako zástupce technického oddělení. V seznamu objednávek ke schválení vidí novou objednávku a nechá ji schválit. Proces pak postupuje přes rozhodovací bod, kdy je cena objednávky porovnána s částkou 40.000 Kč. Jelikož je objednávka dražší, je předána k rozhodnutí finančnímu řediteli. Ten se přihlásí, nechá objednávku schválit a tím je objednávka označena za schválenou.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Scénáře běhu procesu&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Pojďme se nyní podívat blíže na to, co probíhá v životním cyklu procesu. V následující tabulce můžete vidět posloupnost operací které probíhají v jednotlivých komponentách systému při výše popsaném scénáři. Každá komponenta vlevo vždy volá operaci komponenty v tabulce napravo od ní. V závorce za popisem akce je uveden název této operace:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp2.blogger.com/_Ns4jFXT4KpE/SFulzL2pgkI/AAAAAAAABNk/ItFC2qKncYE/s1600-h/5-tabulka.jpg" target="_blank"&gt;&lt;img style="cursor:pointer; border:none;" src="http://bp2.blogger.com/_Ns4jFXT4KpE/SFulzL2pgkI/AAAAAAAABNk/ItFC2qKncYE/s400/5-tabulka.jpg" border="0" alt="Kliknutím obrázek zvětšíte v novém okně."id="BLOGGER_PHOTO_ID_5213943292385395266" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Uvažujme nyní odlišný scénář – technické oddělení ve druhém kroku objednávku zamítne. Posloupnost operací je tedy stejná až do kroku č. 6. V sedmém kroku vyhodnotí proces objednávku jako zamítnutou a proběhne tedy posloupnost kroků:&lt;br /&gt;&lt;br /&gt;7. BPEL: Vyhodnocení rozhodnutí – zamítnuto&lt;br /&gt;8. BPEL: Změna stavu objednávky na DISPPROVED (&lt;em&gt;setOrderState&lt;/em&gt;)&lt;br /&gt;9. Backend: Nastavení stavu objednávky v DB&lt;br /&gt;&lt;br /&gt;Nyní si vezmeme ještě třetí variantu scénáře – objednávka je pouze na 3 ks LCD monitorů a její celková cena je tedy 30.000 Kč. Posloupnost bude nyní stejná jako v prvním případě až do kroku č. 9, po kterém dojde k odlišnému vyhodnocení podmínky, týkající se ceny objednávky. Posloupnost kroků tedy proběhne následovně:&lt;br /&gt;10. BPEL: Vyhodnocení ceny objednávky – pod 40.000 Kč&lt;br /&gt;11. BPEL: Změna stavu objednávky na APPROVED (&lt;em&gt;setOrderState&lt;/em&gt;)&lt;br /&gt;12. Backend: Nastavení stavu objednávky v DB&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;V příštím díle&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;Příště se budeme zabývat tzv. business rules (též business pravidla nebo pravidla podnikání). Podíváme se, jaké nástroje například můžeme se zvoleným běhovým prostředím použít a ukážeme si, jak nástroj pro podporu business rules do systému zakomponovat. Součástí bude opět krátké video, které ukáže změnu pravidla v našem procesu a to, jak se změna při procházení scénáře projeví.&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/638164731243339634-4999317026948679807?l=bpm-sme.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bpm-sme.blogspot.com/feeds/4999317026948679807/comments/default' title='Komentáře k příspěvku'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=638164731243339634&amp;postID=4999317026948679807&amp;isPopup=true' title='Počet komentářů: 10'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/638164731243339634/posts/default/4999317026948679807'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/638164731243339634/posts/default/4999317026948679807'/><link rel='alternate' type='text/html' href='http://bpm-sme.blogspot.com/2008/06/7-testovani-spusteni-procesu.html' title='7. část: Testování a spuštění procesu'/><author><name>vk</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://3.bp.blogspot.com/-9ISibY5RKgY/TgWjFov5gMI/AAAAAAAAB7k/uPmzzlv2Rrk/s220/kalenda1.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_Ns4jFXT4KpE/SFumOSz8NxI/AAAAAAAABOE/cGUii8bOop0/s72-c/1-testCase_big.png' height='72' width='72'/><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-638164731243339634.post-4135154038314919740</id><published>2008-05-23T11:58:00.004+02:00</published><updated>2008-05-23T20:06:30.394+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BPM prakticky (seriál)'/><title type='text'>6. část: Implementace procesu v BPEL</title><content type='html'>&lt;em&gt;Petr Vašíček, IBA CZ&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;V tomto díle si nejprve představíme backendovou část aplikace, která obsahuje funkcionalitu pro práci s objednávkami. Ukážeme si pro představu diagram tříd a rozhraní webové služby, kterou tento modul poskytuje. Uvedeme instrukce pro stažení a deploy backendového modulu na aplikační server, abychom webovou službu mohli využít z business procesu.&lt;br /&gt;&lt;br /&gt;Ve druhé části rozdělíme BPMN proces založení objednávky do několika úseků, které následně převedeme do jazyka BPEL. Nebudeme se zabývat přílišnými detaily při implementaci procesu ani si uvádět návod jak přesně tento konkrétní proces v prostředí NetBeans „naklikat“, místo toho nastíníme obecný postup při tvorbě BPEL dokumentu z BPMN modelu, jak vše napojit na webové služby a úspěšně nasadit a spustit v aplikačním serveru. BPEL modul i kompozitní aplikaci samozřejmě nabídneme ke stažení, abyste si mohli příklad vyzkoušet v praxi.&lt;br /&gt;&lt;br /&gt;Tento díl je již hodně o IT, BPEL a programování v Java EE. Podle ohlasů na předchozí díly se dá očekávat, že mu část čtenářů nebude rozumět (hlavně vyhranění „procesáři“), takže nevěšte hlavu a berte to jako ilustraci toho, co se v IT musí udělat, než se BPMN „omalovánce“ vdechne život.&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;strong&gt;Objednávkový modul&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Backendová část naší aplikace bude implementována pomocí Enterprise Java Beans 3.0, tedy standardu pro vývoj distribuovaných aplikací v jazyce Java. V projektu budeme pracovat se čtyřmi entitními beany (v praxi databázovými tabulkami). Nyní si uvedeme o jaké půjde a jaké vlastnosti (sloupce tabulky) budou kromě identifikátoru (primárního klíče) mít: &lt;ul&gt;&lt;li&gt;&lt;em&gt;UserEntity&lt;/em&gt; – uživatel systému; u něj budeme z důvodu jednoduchost evidovat pouze jeho jméno a množinu jeho rolí, ve skutečném systému by byla řada vlastností samozřejmě daleko širší.&lt;/li&gt;&lt;li&gt;&lt;em&gt;RoleEntity&lt;/em&gt; – uživatelská role; má název (např. „Technické oddělení“), unikátní textový identifikátor („tech“) a množinu uživatelů, jež do této role spadají. Každý uživatel může mít žádnou, jednu nebo více těchto rolí.&lt;/li&gt;&lt;li&gt;&lt;em&gt;ItemEntity&lt;/em&gt; – položka katalogu; vedeme u ní název a cenu. U ceny budeme pro zjednodušení počítat, že jde vždy o jednu měnu, v našem případě koruny.&lt;/li&gt;&lt;li&gt;&lt;em&gt;OrderEntity&lt;/em&gt; – objednávka; budeme u ní evidovat položku ke které se vztahuje a její kvantitu, datum založení, stav (nová, schválená, zamítnutá), uživatele, který ji objednal a roli, která v daném okamžiku rozhoduje o schválení. Jedna objednávka bude v našem případě pouze na jednu položku s možností vzít více kusů (tedy kvantita větší než 1). &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;a href="http://bp1.blogger.com/_Ns4jFXT4KpE/SDaqyyXiHTI/AAAAAAAABDo/2AD9ygsou7E/s1600-h/1-class_diagram_big.png" target="_blank"&gt;&lt;img id="BLOGGER_PHOTO_ID_5203534208963845426" style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; CURSOR: pointer; BORDER-BOTTOM: medium none" alt="Kliknutím obrázek zvětšíte v novém okně." src="http://bp1.blogger.com/_Ns4jFXT4KpE/SDaqyyXiHTI/AAAAAAAABDo/2AD9ygsou7E/s400/1-class_diagram_big.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Ilustrace 1: Diagram tříd objednávkového modulu&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Při určení rozhraní webové služby, kterou bude modul poskytovat můžeme vycházet z potřeb business procesu a webové aplikace. Když se podíváme na BPMN diagram vidíme tři typy akcí jež proces volá na backendu – uložení objednávky, nastavení role k posuzování objednávky a označení stavu objednávky. Kromě těchto tří metod budeme ve webové službě potřebovat implementovat i metody pro webovou aplikaci – získání informací o uživateli, položce a objednávce, získání seznamu všech uživatelů, položek a objednávek a seznam objednávek podle zakladatele a schvalovatele. Místo entit bude modul vracet tzv. data transfer objekty (DTO), jenž budou mít veškeré vlastnosti, které budeme u entit ve webové aplikaci potřebovat. V rozhraní webové služby se tedy budou nacházet následující operace:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp2.blogger.com/_Ns4jFXT4KpE/SDaqsCXiHSI/AAAAAAAABDg/-RCDj7yAKgA/s1600-h/2-ws_interface_big.png" target="_blank"&gt;&lt;img id="BLOGGER_PHOTO_ID_5203534092999728418" style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; CURSOR: pointer; BORDER-BOTTOM: medium none" alt="Kliknutím obrázek zvětšíte v novém okně." src="http://bp2.blogger.com/_Ns4jFXT4KpE/SDaqsCXiHSI/AAAAAAAABDg/-RCDj7yAKgA/s400/2-ws_interface_big.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Ilustrace 2: Rozhraní webové služby objednávkového modulu&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Nyní si popíšeme, jak provést deploy modulu na aplikační server. Nejprve si stáhněte &lt;a href="http://www.ibacz.eu/Serial-o-BPM-6-dil" target="_blank"&gt;z této adresy&lt;/a&gt; distribuční Java archív &lt;em&gt;OrderingModule.jar&lt;/em&gt;. Pro jeho nasazení na server nejprve server spusťte z prostředí NetBeans aplikační server Glassfish (Services -&gt; Servers -&gt; Glassfish V2 -&gt; Start). Následně otevřete administrační konzoli serveru (na adrese &lt;a id="k_su34" href="http://localhost:4848/" goog_docs_charindex="3798"&gt;http:/localhost:4848/&lt;/a&gt;, přihlašovací údaje admin / adminadmin), na pravé straně vyberte z nabídky Applications -&gt; EJB Modules a v hlavní části webové stránky zvolte „Deploy“. V části „Location“ vyberte umístění staženého Java archívu a zvolte „OK“.&lt;br /&gt;&lt;br /&gt;V současné chvíli by již měly být v databázi připravené tabulky pro jednotlivé entity. V záložce Services v prostředí NetBeans vyberte „Databases“, nalezněte databázi s názvem sample (název zdroje „jdbc:derby://localhost:1527/sample“ a z kontextového menu zvolte „Connect...“. V záložce „Tables“ můžete zkontrolovat existenci tabulek ITEMENTITY, ORDERENTITY, ROLEENTITY, USERENTITY, a USERENTITY_ROLEENTITY. Nyní ještě potřebujeme naplnit tabulku rolí, uživatelů a položek testovacími údaji. Stáhněte si z &lt;a href="http://www.ibacz.eu/Serial-o-BPM-6-dil" target="_blank"&gt;této adresy&lt;/a&gt; sql skript pro naplnění těchto tabulek. Po kliknutí pravým tlačítkem na databázi &lt;em&gt;sample&lt;/em&gt; vyberte „Execute Command...“, do textového pole vložte obsah staženého souboru &lt;em&gt;create.sql&lt;/em&gt; a spusťte příkaz ikonkou se zelenou šipkou v pravé horní části obrazovky. Po provedení příkazu by měly být tabulky naplněny, což můžete zkontrolovat zvolením „View Data...“ v kontextových nabídkách jednotlivých tabulek.&lt;br /&gt;&lt;br /&gt;Jako poslední zkontrolujeme správné nasazení webové služby modulu. Otevřeme v prohlížeči adresu &lt;a id="k_su41" href="http://localhost:8080/OrderWSService/OrderWS?wsdl" goog_docs_charindex="5070"&gt;http://localhost:8080/OrderWSService/OrderWS?wsdl&lt;/a&gt; a měli bychom uvidět definici webové služby ve formátu XML, včetně definice všech operací, které jsme si uvedli výše. Nyní je tedy ze strany backendového modulu vše připraveno a můžeme začít s implementací samotného procesu.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Implementace procesu &lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Jako předlohu pro tvorbu BPEL dokumentu si vezmeme proces namodelovaný pomocí notace BPMN ze 4. dílu. Rozdělíme si jej do tří částí, které budeme postupně převádět do implementační formy. První úsek jsme již částečně naimplementovali minule, pouze jsme vynechali vazbu na webovou službu backendu. Proces bude mít celkem tři vstupy, to znamená, že webová služba, která bude představovat rozhraní procesu, bude mít tři operace – vytvoření objednávky (&lt;em&gt;createOrder&lt;/em&gt;), rozhodnutí technického oddělení (&lt;em&gt;techDecide&lt;/em&gt;) a rozhodnutí finančního ředitele (&lt;em&gt;findirDecide&lt;/em&gt;).&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp1.blogger.com/_Ns4jFXT4KpE/SDaqkyXiHRI/AAAAAAAABDY/JVHZfNxJshA/s1600-h/3-diagram_big.png" target="_blank"&gt;&lt;img id="BLOGGER_PHOTO_ID_5203533968445676818" style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; CURSOR: pointer; BORDER-BOTTOM: medium none" alt="" src="http://bp1.blogger.com/_Ns4jFXT4KpE/SDaqkyXiHRI/AAAAAAAABDY/JVHZfNxJshA/s400/3-diagram_big.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Ilustrace 3: BPMN proces rozdělený na jednotlivé části &lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Po vytvoření BPEL modulu a BPEL procesu v něm je třeba vytvořit WSDL soubor, jež slouží k popisu webové služby procesu a který bude definovat zmíněné tři operace, dále pak XSD soubor, jenž popisuje použité datové typy. Postup tvorby těchto souborů si uvádět nebudeme, budou ale k dispozici hotové spolu s celým projektem. Nyní již zbývá pouze naimportovat WSDL a XSD soubor k webové službě backendu. Z kontextové nabídky BPEL projektu vybereme New -&gt; Other a pak z kategorie XML zvolíme External WSDL Document(s) a stiskneme tlačítko „Next“. Do textového boxu zkopírujeme adresu, na které se nachází definice webové služby objednávkového modulu, tedy &lt;a id="k_su55" href="http://localhost:8080/OrderWSService/OrderWS?wsdl" goog_docs_charindex="6660"&gt;http://localhost:8080/OrderWSService/OrderWS?wsdl&lt;/a&gt; a stiskneme „Finish“.&lt;br /&gt;&lt;br /&gt;Nyní již máme v projektu všechny potřebné soubory a k začátku implementace procesu nám chybí pouze vytvořit v BPEL dokumentu odkazy na obě použité webové služby, tedy partner linky. Otevřeme tedy (příp. vytvoříme) soubor startOrder.bpel a do okna, které se otevře, přetáhneme oba WSDL soubory, tedy &lt;em&gt;startOrder.wsdl&lt;/em&gt; a &lt;em&gt;OrderWS.wsdl&lt;/em&gt;. První partner link můžeme pojmenovat například „Interface“ (rozhraní procesu) a druhý „OrderModule“ (webová služba objednávkového modulu).&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;První část&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;První část je v obrázku ohraničen červenou čárou. Proces je odstartován přijetím požadavku na vytvoření objednávky, tedy v BPMN objekt &lt;em&gt;Start Message Event&lt;/em&gt;. V BPELu je alternativou k tomuto objektu aktivita &lt;em&gt;Receive&lt;/em&gt;, tu tedy umístíme na začátek procesu a navážeme ji na operaci &lt;em&gt;createOrder&lt;/em&gt; v partner linku &lt;em&gt;Interface&lt;/em&gt;. Následně musí proces provést dvě aktivity – vytvořit objednávku (uložit ji do databáze) a nastavit jako schvalovatele technické oddělení. Tyto aktivity, tedy vyvolání webových služeb, lze v BPELu realizovat pomocí objektu &lt;em&gt;Invoke&lt;/em&gt;. První task (nazveme jej „Create“) zavolá operaci &lt;em&gt;createOrder&lt;/em&gt; v partner linku &lt;em&gt;OrderModule&lt;/em&gt; a předá ji data, která zaslal uživatel. Druhá pak volá operaci &lt;em&gt;setApprover&lt;/em&gt; a té předá unikátní textový identifikátor dané role, tedy v našem případě „tech“. Nakonec vrátíme uživateli odpověď, jež obsahuje ID nově vytvořené objednávky. To provedeme pomocí BPEL aktivity &lt;em&gt;Reply&lt;/em&gt;. Pro manipulaci s proměnnými využijeme dvou aktivit typu &lt;em&gt;Assign&lt;/em&gt; – &lt;em&gt;AssignOrderDetails&lt;/em&gt; a &lt;em&gt;AssigntTechApprover.&lt;/em&gt; Jak vypadá první část lze vidět na následujícím obrázku:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp1.blogger.com/_Ns4jFXT4KpE/SDaqeyXiHQI/AAAAAAAABDQ/FGtfBppx5SU/s1600-h/4-part1_big.png" target="_blank"&gt;&lt;img id="BLOGGER_PHOTO_ID_5203533865366461698" style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; CURSOR: pointer; BORDER-BOTTOM: medium none" alt="Kliknutím obrázek zvětšíte v novém okně." src="http://bp1.blogger.com/_Ns4jFXT4KpE/SDaqeyXiHQI/AAAAAAAABDQ/FGtfBppx5SU/s400/4-part1_big.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Ilustrace 4: První část BPEL procesu&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Druhá část&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;V druhé části procesu zpracujeme rozhodnutí technického oddělení a na jeho základě označíme objednávku za schválenou či zamítnutou. Rozhodování finančního ředitele si necháme až do poslední části. V BPMN modelu je na začátku druhého úseku objekt typu &lt;em&gt;Message Intermediate Event&lt;/em&gt;, který mapujeme do aktivity &lt;em&gt;Receive&lt;/em&gt; (pojmenujeme „&lt;em&gt;ReceiveTechDecision&lt;/em&gt;“) a spojíme jí s operací &lt;em&gt;techDecide&lt;/em&gt; v partner linku &lt;em&gt;Interface&lt;/em&gt;. To znamená, že pokud webový klient zavolá tuto operaci a proces čeká v aktivitě &lt;em&gt;ReceiveTechDecision&lt;/em&gt;, tak bude přijata zaslaná zpráva (obsahující identifikátor objednávky a rozhodnutí technického oddělení) a proces bude pokračovat dále.&lt;br /&gt;&lt;br /&gt;Nyní budeme chtít uživateli vrátit zprávu (operace &lt;em&gt;techDecide&lt;/em&gt; je typu request – response), to učiníme opět pomocí aktivity &lt;em&gt;Reply&lt;/em&gt; a obsahem této zprávy bude pouze pravdivostní hodnota „true“. Dále následuje v BPMN diagramu &lt;em&gt;Data-based Exclusive Decision&lt;/em&gt;, tedy rozhodnutí na základě dat, jež je v BPELu zastoupeno aktivitou &lt;em&gt;If&lt;/em&gt;. Tu tedy vložíme do procesu a pomocí BPEL mapperu (editor pro přiřazení proměnných) navolíme podmínku pro první větev rozhodování. Můžeme využít vizuálních prvků a pomocí nich navolit podmínku „ReceiveTechDecision.type = approve“ tak, jak je to vidět na následujícím obrázku:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp0.blogger.com/_Ns4jFXT4KpE/SDaqWiXiHPI/AAAAAAAABDI/7gSdotVWscU/s1600-h/5-part2_if_big.png" target="_blank"&gt;&lt;img id="BLOGGER_PHOTO_ID_5203533723632540914" style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; CURSOR: pointer; BORDER-BOTTOM: medium none" alt="Kliknutím obrázek zvětšíte v novém okně." src="http://bp0.blogger.com/_Ns4jFXT4KpE/SDaqWiXiHPI/AAAAAAAABDI/7gSdotVWscU/s400/5-part2_if_big.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Ilustrace 5: Rozhodnutí technického oddělení&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Pokud tedy technické oddělení objednávku schválilo, proces projde první větví, v opačném případě druhou. Podle toho musíme označit objednávku za schválenou či zamítnutou. Do první větve tedy umístíme aktivitu &lt;em&gt;AssignApproved&lt;/em&gt; a do druhé &lt;em&gt;AssignDeclined&lt;/em&gt;, ve kterých přiřadíme příslušný konečný stav objednávky. V BPMN diagramu máme označení objednávky za schválenou či zamítnutou ve dvou aktivitách, po nichž následuje konec procesu (&lt;em&gt;End Event&lt;/em&gt;). Při převodu do BPELu můžeme buďto ponechat obě aktivity zvlášť (jedna &lt;em&gt;Invoke&lt;/em&gt; aktivita v každé větvi), nebo je sloučit do jedné (jeden &lt;em&gt;Invoke&lt;/em&gt; po sloučení větví), s tím, že v jednotlivých větvích přiřadíme příznak schválení či zamítnutí do vstupní zprávy volané operace webové služby backendu &lt;em&gt;SetOrderState&lt;/em&gt;. My zvolíme druhou možnost a pod sloučení větví přidáme &lt;em&gt;Invoke&lt;/em&gt; aktivitu &lt;em&gt;SetFinalOrderState&lt;/em&gt;, která zavolá příslušnou operaci v objednávkovém modulu a nechá změnit stav objednávky podle předchozího určení. Druhá část je tedy hotova, pokračování implementovaného procesu opět můžete vidět na obrázku.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp1.blogger.com/_Ns4jFXT4KpE/SDaqPyXiHOI/AAAAAAAABDA/g3YfzLhcbRU/s1600-h/6-part2_big.png" target="_blank"&gt;&lt;img id="BLOGGER_PHOTO_ID_5203533607668423906" style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; CURSOR: pointer; BORDER-BOTTOM: medium none" alt="Kliknutím obrázek zvětšíte v novém okně." src="http://bp1.blogger.com/_Ns4jFXT4KpE/SDaqPyXiHOI/AAAAAAAABDA/g3YfzLhcbRU/s400/6-part2_big.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Ilustrace 6: Druhá část BPEL procesu&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Třetí část&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Nyní by byl proces kompletní, pokud bychom chtěli, aby o objednávce rozhodovalo pouze technické oddělení. Proces tedy upravíme tak, aby v určitém případě musel rozhodovat i finanční ředitel. Poslední část procesu je v BPMN modelu ohraničena zelenou čárou. Prvním elementem je rozhodování podle částky, což už víme, že je v BPELu realizováno pomocí aktivity &lt;em&gt;If&lt;/em&gt;. Nejprve ovšem musíme cenu objednávky zjistit. Jelikož je v objednávce pouze jeden druh zboží, získáme informace o něm včetně ceny zavoláním operace &lt;em&gt;GetItemDTO&lt;/em&gt; ve webové službě backendu. Tato operace nám vrátí cenu objednané položky, kterou znásobíme objednanou kvantitou (tu zadal uživatel při vytváření objednávky) a tak získáme celkovou cenu objednávky. Vyvolání zmíněné operace i rozhodovací prvek vložíme do té větve, která značí případ, kdy objednávka byla schválena technickým oddělením (ve druhé větvi ponecháme pouze aktivitu AssignDeclined). Celkovou cenu objednávky porovnáme s částkou 40.000, čímž se nám proces rozdělí do dvou větví – když je částka větší a když je stejná nebo menší. Následující obrázek ukazuje, jak vypadá výraz, podle kterého se vyhodnocuje rozhodnutí o ceně objednávky:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp0.blogger.com/_Ns4jFXT4KpE/SDaqJiXiHNI/AAAAAAAABC4/NcSrG-Ncv8M/s1600-h/7-part3_if_big.png" target="_blank"&gt;&lt;img id="BLOGGER_PHOTO_ID_5203533500294241490" style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; CURSOR: pointer; BORDER-BOTTOM: medium none" alt="Kliknutím obrázek zvětšíte v novém okně." src="http://bp0.blogger.com/_Ns4jFXT4KpE/SDaqJiXiHNI/AAAAAAAABC4/NcSrG-Ncv8M/s400/7-part3_if_big.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Ilustrace 7: Rozhodnutí podle ceny objednávky&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Zbytek procesu si již popíšeme stručně, jelikož rozhodnutí finančního ředitele je obdobou předchozího rozhodnutí technického oddělení. Nejprve tedy nastavíme objednávku k posouzení vyvoláním operace &lt;em&gt;setApprover&lt;/em&gt; a čekáme na přijetí rozhodnutí v &lt;em&gt;Receive&lt;/em&gt; aktivitě na operaci &lt;em&gt;findirDecide&lt;/em&gt;. Následně provedeme obdobné rozhodnutí podle schválení či zamítnutí objednávky, jako v předchozím případě. Pozor si musíme dát na to, aby v každém z možných průchodů procesem (celkem jsou čtyři) byl správně určen konečný stav objednávky. Následující obrázek ukazuje kompletní proces implementovaný v jazyce BPEL tak, jak jej umožňuje vizualizovat BPEL designer v prostředí NetBeans IDE. Kompletní projekt, který obsahuje veškeré potřebné soubory, si můžete stáhnout z &lt;a href="http://www.ibacz.eu/Serial-o-BPM-6-dil" target="_blank"&gt;této adresy&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp3.blogger.com/_Ns4jFXT4KpE/SDaqCSXiHMI/AAAAAAAABCw/xVe4MMiSLXw/s1600-h/8-part3_big.png" target="_blank"&gt;&lt;img id="BLOGGER_PHOTO_ID_5203533375740189890" style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; CURSOR: pointer; BORDER-BOTTOM: medium none" alt="Kliknutím obrázek zvětšíte v novém okně." src="http://bp3.blogger.com/_Ns4jFXT4KpE/SDaqCSXiHMI/AAAAAAAABCw/xVe4MMiSLXw/s400/8-part3_big.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Ilustrace 8: Kompletní BPEL proces&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;V příštím díle&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Příště si ukážeme, jak implementovaný proces otestovat a jaké možnosti skýtá jeho ladění (debugging). Dále představíme webovou aplikaci, pomocí které může uživatel s procesem interagovat. Projdeme si také různé scénáře životního cyklu objednávky a vysvětlíme si, jaké události při nich v procesu probíhají.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/638164731243339634-4135154038314919740?l=bpm-sme.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bpm-sme.blogspot.com/feeds/4135154038314919740/comments/default' title='Komentáře k příspěvku'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=638164731243339634&amp;postID=4135154038314919740&amp;isPopup=true' title='Počet komentářů: 12'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/638164731243339634/posts/default/4135154038314919740'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/638164731243339634/posts/default/4135154038314919740'/><link rel='alternate' type='text/html' href='http://bpm-sme.blogspot.com/2008/05/6-implementace-procesu-v-bpel.html' title='6. část: Implementace procesu v BPEL'/><author><name>vk</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://3.bp.blogspot.com/-9ISibY5RKgY/TgWjFov5gMI/AAAAAAAAB7k/uPmzzlv2Rrk/s220/kalenda1.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_Ns4jFXT4KpE/SDaqyyXiHTI/AAAAAAAABDo/2AD9ygsou7E/s72-c/1-class_diagram_big.png' height='72' width='72'/><thr:total>12</thr:total></entry><entry><id>tag:blogger.com,1999:blog-638164731243339634.post-2554721933068593142</id><published>2008-04-15T22:08:00.010+02:00</published><updated>2008-05-23T11:59:43.662+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BPMS'/><category scheme='http://www.blogger.com/atom/ns#' term='BPM prakticky (seriál)'/><category scheme='http://www.blogger.com/atom/ns#' term='Modely'/><title type='text'>5. část: Tvorba BPEL modulu</title><content type='html'>&lt;em&gt;Petr Vašíček, IBA CZ&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;V tomto díle si povíme něco o jazyce BPEL a začneme modelovat proces založení objednávky, jež jsme modelovali v díle minulém. Rovněž tedy poprvé použijeme vývojové prostředí NetBeans a ukážeme si, jak v něm založit BPEL projekt a jakým způsobem jej nasadit na server.&lt;br /&gt;&lt;br /&gt;O jazyce BPEL uvedeme pouze základní informace a budeme se spíše soustředit na samotné modelování procesu. V článku také nabídneme odkazy na materiály, které mohou poskytnout podrobnější informace či přímo specifikaci jazyka BPEL včetně přesného popisu jeho jednotlivých elementů. Uvedeme i odkazy na tutoriály k NetBeans IDE, na jehož podrobnější popis by rovněž nebylo v seriálu místo.&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;strong&gt;Úvod do jazyka BPEL&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;WS-BPEL, celým názvem Web Services – Business Process Executional Language (výslovnost uváděna jako „bipple“ či „B-pel“), je jazyk na bázi XML (eXtensible Markup Language), jež slouží pro zápis business procesů na vykonatelné úrovni. Proces implementovaný pomocí BPEL je nasazen do běhového prostředí, které je schopno jej interpretovat. Tímto prostředím může být buďto samostatný procesní server, modul v aplikačním serveru apod. V našem případě jde o plug-in (tzv. service engine) do implementace podnikové sběrnice OpenESB, kterou v našem prostředí použijeme. Komponenta má název WS-BPEL Service Engine a nasazení implementovaných business procesů lze provádět pohodlně přímo z vývojového prostředí NetBeans, které budeme používat.&lt;br /&gt;&lt;br /&gt;Hlavní funkcí BPELu je orchestrace webových služeb, tedy řízení souhry funkcionality, kterou nabízí backendová část systému, či více systémů. Tato funkcionalita je dekomponována do operací, jež je možné volat přes webovou službu. Na druhé straně BPEL sám stojí za webovou službou, která definuje jeho rozhraní, tj. vstupní operace. Pro každý vstup do procesu (v BPMN objekt Start / Intermediate MessageEvent) je tedy ve webové službě, která popisuje rozhraní BPELu, jedna operace. Dá se tedy říci, že BPEL implementuje webovou službu. Přitom aplikace, která webovou službu používá, neví, zda se za ní skrývá proces, či zda je implementována např. EJB modulem. BPEL je rovněž nezávislý na platformě, implementace pro něj existují na platformě Java EE, .NET a jiných platformách. Proces implementovaný v jazyce BPEL pomocí jednoho nástroje by také mělo být možné přenést a spustit v nástroji jiném. Někteří výrobci BPMS ale používají svá vlastní rozšíření jazyka BPEL, která tuto přenositelnost zněmožňují.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp3.blogger.com/_Ns4jFXT4KpE/SAUNzrL6XiI/AAAAAAAAAts/XobPghPoFj8/s1600-h/1-orchestrace_big.png" target="_blank"&gt;&lt;img id="BLOGGER_PHOTO_ID_5189569327031541282" style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; MARGIN: 0px 10px 10px 0px; BORDER-LEFT: medium none; CURSOR: pointer; BORDER-BOTTOM: medium none" alt="Kliknutím zvětšíte obrázek v novém okně." src="http://bp3.blogger.com/_Ns4jFXT4KpE/SAUNzrL6XiI/AAAAAAAAAts/XobPghPoFj8/s400/1-orchestrace_big.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;První verze jazyka BPEL, pojmenovaného jako BPEL4WS, vznikla v červenci 2002 a spojila myšlenku jazyků WSFL od IBM a XLANG od spol. Microsoft. Kromě těchto dvou společností se na původním návrhu podílela i BEA. V květnu 2003 byl revidovaný návrh předložen organizaci pro rozvoj strukturovaných informačních standardů OASIS a BPEL4WS ve verzi 1.1 si začal získávat velkou podporu na poli modelování procesů. Jen o něco později byl uveden další jazyk pro definování spustitelných procesů, BPML 1.0, ten ale zejména díky silné podpoře pro konkurenční BPEL ze strany velkých hráčů na trhu neuspěl. Dnes není takřka využíván, přestože oproti BPELu toho má více co nabídnout (řeší např. business pravidla, lidskou interakci s procesem apod.). Současná verze 2.0 byla představena v prosinci 2005 a ratifikována v dubnu 2007 a nese již pozměněný název WS-BPEL 2.0. Oproti předchozí verzi představuje několik nových BPEL aktivit, přejmenovává některé existující a obsahuje několik dalších menších změn.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Struktura BPEL dokumentu&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;NetBeans IDE, stejně jako většina ostatních BPEL návrhářů, poskytuje grafické uživatelské rozhraní pro modelování procesu v jazyce BPEL. Je tedy možné celý proces „naklikat“ a kódem procesu se nezabývat. Čas od času je ovšem zapotřebí nahlédnout do XML kódu a provést nějaké úpravy, zejména při řešení chyb. Kromě toho nění úplně od věci se v procesu zapsaném v jazyce BPEL orientovat, a proto si krátce představíme strukturu BPEL dokumentu.&lt;br /&gt;&lt;br /&gt;Základní struktura dokumentu je zobrazena na následujícím obrázku. Kořenový element &lt;em&gt;{process}&lt;/em&gt; (pozor - u všech elementů jde o &lt;strong&gt;ostré závorky &lt;/strong&gt;&lt;...&gt; - na tomto webu je pouze nejsme schopni s příslušnými elementy zobrazit) zahrnuje všechny ostatní XML elementy. Pomocí atributů tohoto elementů určíme název procesu a jmenné prostory (namespaces). Následuje element &lt;em&gt;{import}&lt;/em&gt;, kterým definujeme odkazy na použité externí soubory, typicky popisovače webové služby, WSDL dokumenty. Pomocí elementů &lt;em&gt;{partnerlink}&lt;/em&gt; specifikujeme účastníky procesu, tedy kromě WS rozhraní samotného procesu i WS modulů, které použijeme. Následuje definice proměnných v elementu &lt;em&gt;{variables}&lt;/em&gt; a korelačních množin pomocí &lt;em&gt;{correlationsets}&lt;/em&gt;. Pak se již nachází hlavní sekvence událostí, obsažená v XML elementu &lt;em&gt;{sequence}&lt;/em&gt;, do které již umísťujeme BPEL aktivity, specifikující tok procesu.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp2.blogger.com/_Ns4jFXT4KpE/SAUNtbL6XhI/AAAAAAAAAtk/T4bPdqPHITI/s1600-h/2-struktura_big.PNG" target="_blank"&gt;&lt;img id="BLOGGER_PHOTO_ID_5189569219657358866" style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; MARGIN: 0px 10px 10px 0px; BORDER-LEFT: medium none; CURSOR: pointer; BORDER-BOTTOM: medium none" alt="Kliknutím zvětšíte obrázek v novém okně." src="http://bp2.blogger.com/_Ns4jFXT4KpE/SAUNtbL6XhI/AAAAAAAAAtk/T4bPdqPHITI/s400/2-struktura_big.PNG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;BPEL aktivity&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Objekty, které v jazyce BPEL reprezentují události či defunují tok procesu, se nazývají BPEL aktivity. Aktivitami se tedy neoznačuje pouze nějaká činnost, jako tomu je v BPMN, nýbrž všechny elementy jazyka, jež značí nějakou akci či strukturu procesu. Následující výčet zahrnuje deset nejčastěji používaných BPEL aktivit. &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Základní aktivity&lt;/strong&gt; (basic activities):&lt;br /&gt;&lt;em&gt;Receive &lt;/em&gt;- zastaví proces a čeká na příchod specifikované zprávy&lt;br /&gt;&lt;em&gt;Reply &lt;/em&gt;- zašle zprávu jako odpověď na dříve přijatou zprávu&lt;br /&gt;&lt;em&gt;Invoke &lt;/em&gt;- vyvolá WS operaci typu one-way nebo request-response&lt;br /&gt;&lt;em&gt;Assign &lt;/em&gt;- manipulace s proměnnými&lt;br /&gt;&lt;em&gt;Exit &lt;/em&gt;- okamžitě ukončí vykonávání instance business procesu&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Strukturované aktivity &lt;/strong&gt;(structured activities):&lt;br /&gt;&lt;em&gt;Sequence &lt;/em&gt;- obsahuje aktivity, jež jsou spouštěny sekvenčně&lt;br /&gt;&lt;em&gt;Flow &lt;/em&gt;- obsahuje aktivity, jež jsou spouštěny paralelně&lt;br /&gt;&lt;em&gt;If-else&lt;/em&gt; - vybere jednu větev podle pravdivostního výrazu&lt;br /&gt;&lt;em&gt;Pick &lt;/em&gt;- zastaví proces a čeká na příchod první z více definovaných událostí&lt;br /&gt;&lt;em&gt;While &lt;/em&gt;- obsažené aktivity jsou opakovány, dokud platí určitý predikát&lt;br /&gt;&lt;br /&gt;Pro získání více informací o těchto a ostatních BPEL aktivitách, lze doporučit tyto zdroje:&lt;br /&gt;&lt;blockquote&gt;&lt;a href="http://docs.oasis-open.org/wsbpel/2.0/wsbpel-v2.0.pdf" target="_blank"&gt;Specifikace WS-BPEL 2.0&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.radikalfx.com/bpel/" target="_blank"&gt;Guide to BPEL&lt;/a&gt;&lt;br /&gt;&lt;a href="http://charltonb.typepad.com/weblog/2003/08/bpel4ws_activit.html" target="_blank"&gt;BPEL Activities&lt;/a&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;strong&gt;NetBeans BPEL a CA projekt&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Nyní se dostáváme k samotnému vytvoření našeho projektu. K tomu budeme potřebovat vývojové prostředí NetBeans IDE. Pokud jej máte nainstalováno (odkaz ke stažení jsme uvedli ve druhém díle), můžete jej nyní spustit. Základní informace o tomto nástroji včetně několika jednoduchých tutoriálů lze najít &lt;a href="http://www.netbeans.org/"&gt;zde&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Nejprve založíme v NetBeans projekt, který bude obsahovat implementovaný proces a soubory, popisující účastníky procesu, tedy definice datových typů (soubory XSD) a popisovače webových služeb (soubory WSDL). Z nabídky zvolíme File -&gt; New Project -&gt; Service Oriented Architecture -&gt; BPEL Module, jako název projektu zvolíme „OrderingBPEL“, vybereme umístění a dokončíme tlačítkem „Finish“. Máme tedy vytvořený BPEL modul, ve kterém budeme mít samotný proces a k němu přidružené soubory.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp1.blogger.com/_Ns4jFXT4KpE/SAUNjLL6XgI/AAAAAAAAAtc/RSh-awcc848/s1600-h/3-netbeans1_big.png" target="_blank"&gt;&lt;img id="BLOGGER_PHOTO_ID_5189569043563699714" style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; MARGIN: 0px 10px 10px 0px; BORDER-LEFT: medium none; CURSOR: pointer; BORDER-BOTTOM: medium none" alt="Kliknutím zvětšíte obrázek v novém okně." src="http://bp1.blogger.com/_Ns4jFXT4KpE/SAUNjLL6XgI/AAAAAAAAAtc/RSh-awcc848/s400/3-netbeans1_big.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Druhým projektem, který budeme potřebovat, je kompozitní aplikace. Tato aplikace je souhrný projekt, skládající se z jednoho či více JBI modulů. BPEL modul je právě příkladem JBI modulu. Kompozitní aplikace s jedním či více moduly je pak nasazena na JBI server, v našem případě do OpenESB. Kompozitní aplikaci vytvoříme z File -&gt; New Project -&gt; Service Oriented Architecture -&gt; Composite Application, jako jméno nastavíme OrderingCA. Pro přidání JBI modulu klikneme pravým tlačítkem myši na kořenový uzel nově vytvořeného projektu a vybereme „Add JBI Module“. Vybereme adresář, ve kterém máme BPEL modul a tvorba kompozitní aplikace je hotova. Až budeme mít hotový BPEL projekt, provedeme pak jednoduše deploy kompozitní aplikace na server pomocí „Deploy“ v kontextové nabídce projektu.&lt;br /&gt;&lt;br /&gt;Účelem seriálu ovšem není návod pro modelování v BPEL, nebudeme si tedy uvádět jak vytvářet XSD a WSDL soubory, ani se dopodrobna zabývat postupem a přesným nastavením při tvorbě BPEL dokumentu. Spíše se budeme snažit ukázat, jak obecně modelování probíhá a jak funguje nasazení a vykonání procesu. Pro zájemce u návod tvorby BPELu v NetBeans můžeme doporučit následující tutoriály:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;a href="http://www.netbeans.org/kb/60/soa/bpel-guide.html"&gt;Dev Guide to the BPEL Designer&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.netbeans.org/kb/60/soa/helloworldca.html"&gt;Hello World Composite Application&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.netbeans.org/kb/60/soa/synchsample.html"&gt;Developing Synchronous Process&lt;/a&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;strong&gt;Implementace první části procesu&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Nyní si vytvoříme první krok procesu založení objednávky. Nebudeme v této chvíli ještě využívat webovou službu backendového modulu, tu zapojíme až v příštím díle. Předpokládáme, že již máme vytvořen XSD a WSDL soubor pro náš proces. Rozhraní procesu tvoří tři operace, z nichž zatím implementujeme tu první, a to sice createOrder. Do procesu vložíme aktivity Receive a Reply a spojíme je s touto operací. Mezi ně vložíme aktivitu Assign a v ní přiřadíme do návratové proměnné aktivity Reply zatím testovací hodnotu „123“.&lt;br /&gt;&lt;br /&gt;Nyní máme hotový testovací BPEL a můžeme nasadit kompozitní aplikaci na server. V projektu OrderingCA zvolíme „Deploy“ a v záložce Services -&gt; Servers -&gt; Glassfish V2 -&gt; JBI -&gt;Service Assemblies můžeme zkontrolovat, že aplikace OrderingCA je skutečně nasazená na serveru.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp0.blogger.com/_Ns4jFXT4KpE/SAUNS7L6XfI/AAAAAAAAAtU/uIY2JEUSbmg/s1600-h/4-netbeans2_big.png" target="_blank"&gt;&lt;img id="BLOGGER_PHOTO_ID_5189568764390825458" style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; MARGIN: 0px 10px 10px 0px; BORDER-LEFT: medium none; CURSOR: pointer; BORDER-BOTTOM: medium none" alt="Kliknutím zvětšíte obrázek v novém okně." src="http://bp0.blogger.com/_Ns4jFXT4KpE/SAUNS7L6XfI/AAAAAAAAAtU/uIY2JEUSbmg/s400/4-netbeans2_big.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Když jsme nasadili proces na server, můžeme otestovat vstupní operaci createOrder. Podle návodu na netbeans.org vytvoříme v kompozitní aplikaci test case a pro tuto operaci a spustíme jej volbou „Run“ v kontextové nabídce testu. V uložené SOAP odpovědi „Output.xml“ můžeme zkontrolovat, že v elementu newOrderId se opravdu nachází hodnota „123“.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;V příštím díle&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Příště si nejprve představíme backendovou část aplikace, která obsahuje funkcionalitu pro práci s objednávkami. Pak pomocí NetBeans dotvoříme zbytek procesu a napojíme ho na webovou službu objednávkového modulu. Hotový proces pak otestujeme. Všechny tři vytvořené NetBeans projekty – BPEL modul, kompozitní aplikaci i objednávkový backend - umístíme ke stažení, abyste si mohli příklad sami vyzkoušet i bez nutnosti modelování procesu podle našeho návodu.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/638164731243339634-2554721933068593142?l=bpm-sme.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bpm-sme.blogspot.com/feeds/2554721933068593142/comments/default' title='Komentáře k příspěvku'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=638164731243339634&amp;postID=2554721933068593142&amp;isPopup=true' title='Počet komentářů: 27'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/638164731243339634/posts/default/2554721933068593142'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/638164731243339634/posts/default/2554721933068593142'/><link rel='alternate' type='text/html' href='http://bpm-sme.blogspot.com/2008/04/5-tvorba-bpel-modulu.html' title='5. část: Tvorba BPEL modulu'/><author><name>vk</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://3.bp.blogspot.com/-9ISibY5RKgY/TgWjFov5gMI/AAAAAAAAB7k/uPmzzlv2Rrk/s220/kalenda1.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_Ns4jFXT4KpE/SAUNzrL6XiI/AAAAAAAAAts/XobPghPoFj8/s72-c/1-orchestrace_big.png' height='72' width='72'/><thr:total>27</thr:total></entry><entry><id>tag:blogger.com,1999:blog-638164731243339634.post-2896082532700650648</id><published>2008-03-27T12:44:00.008+01:00</published><updated>2008-05-23T11:59:56.979+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BPMS'/><category scheme='http://www.blogger.com/atom/ns#' term='BPM prakticky (seriál)'/><category scheme='http://www.blogger.com/atom/ns#' term='Modely'/><title type='text'>4. část: Modelování procesu</title><content type='html'>&lt;em&gt;Petr Vašíček, IBA CZ&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;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).&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Tvorba high-level modelu&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;V našem seriálu se budeme věnovat pouze jednomu samostatnému procesu (&lt;em&gt;Založit objednávku&lt;/em&gt;), jenž již nebude dekomponován na další subprocesy. Nyní se ale podívejme, jak by mohl vypadat high-level proces, kde &lt;em&gt;Založit objednávku &lt;/em&gt;je jedním ze subprocesů:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp3.blogger.com/_Ns4jFXT4KpE/R-uJy1xvReI/AAAAAAAAAqw/kQ9e09Z-Q4s/s1600-h/diagram1_big.png" target="_blank"&gt;&lt;img id="BLOGGER_PHOTO_ID_5182387302742050274" style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; MARGIN: 0px 10px 10px 0px; BORDER-LEFT: medium none; CURSOR: pointer; BORDER-BOTTOM: medium none" alt="Kliknutím zvětšíte obrázek." src="http://bp3.blogger.com/_Ns4jFXT4KpE/R-uJy1xvReI/AAAAAAAAAqw/kQ9e09Z-Q4s/s320/diagram1_big.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Modelování subprocesu&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Soustřeďme se nyní na samostatný proces &lt;em&gt;Založit objednávku&lt;/em&gt;. Ten začne požadavkem na vytvoření objednávky od &lt;em&gt;Objednatele&lt;/em&gt;. Touto událostí by odstartoval uvedený high-level proces, my ji ale budeme chtít přesunout do procesu &lt;em&gt;Založit objednávku&lt;/em&gt;, abychom ten mohli později implementovat jako samostatný proces bez implementování high-level procesu.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp2.blogger.com/_Ns4jFXT4KpE/R-uJslxvRdI/AAAAAAAAAqo/8E48ASU1qjU/s1600-h/diagram2_big.png" target="_blank"&gt;&lt;img id="BLOGGER_PHOTO_ID_5182387195367867858" style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; MARGIN: 0px 10px 10px 0px; BORDER-LEFT: medium none; CURSOR: pointer; BORDER-BOTTOM: medium none" alt="Kliknutím zvětšíte obrázek." src="http://bp2.blogger.com/_Ns4jFXT4KpE/R-uJslxvRdI/AAAAAAAAAqo/8E48ASU1qjU/s320/diagram2_big.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Uspořádání aktivit do plaveckých drah&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;V procesu vystupují tři aktoři – &lt;em&gt;Objednatel&lt;/em&gt;, &lt;em&gt;Technické oddělení &lt;/em&gt;a &lt;em&gt;Finanční ředitel&lt;/em&gt;. 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ř. &lt;em&gt;workflow&lt;/em&gt;, 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.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp3.blogger.com/_Ns4jFXT4KpE/R-uJm1xvRcI/AAAAAAAAAqg/HVfgCTt8BSE/s1600-h/diagram3_big.png" target="_blank"&gt;&lt;img id="BLOGGER_PHOTO_ID_5182387096583620034" style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; MARGIN: 0px 10px 10px 0px; BORDER-LEFT: medium none; CURSOR: pointer; BORDER-BOTTOM: medium none" alt="Kliknutím zvětšíte obrázek." src="http://bp3.blogger.com/_Ns4jFXT4KpE/R-uJm1xvRcI/AAAAAAAAAqg/HVfgCTt8BSE/s320/diagram3_big.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Zahrnutí systémových akcí do procesu&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;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 – &lt;em&gt;Objednávkový modul&lt;/em&gt;. V ní vytvoříme zmíněné systémové akce (můžeme označit jako &lt;em&gt;Service Task&lt;/em&gt;).&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp0.blogger.com/_Ns4jFXT4KpE/R-uJhFxvRbI/AAAAAAAAAqY/oQOHc3m5f7A/s1600-h/diagram4_big.png" target="_blank"&gt;&lt;img id="BLOGGER_PHOTO_ID_5182386997799372210" style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; MARGIN: 0px 10px 10px 0px; BORDER-LEFT: medium none; CURSOR: pointer; BORDER-BOTTOM: medium none" alt="Kliknutím zvětšíte obrázek." src="http://bp0.blogger.com/_Ns4jFXT4KpE/R-uJhFxvRbI/AAAAAAAAAqY/oQOHc3m5f7A/s320/diagram4_big.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Vyjádření spustitelného procesu&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp3.blogger.com/_Ns4jFXT4KpE/R-uJb1xvRaI/AAAAAAAAAqQ/nK82Tm-sGQU/s1600-h/diagram4A_process_middle_big.png" target="_blank"&gt;&lt;img id="BLOGGER_PHOTO_ID_5182386907605058978" style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; MARGIN: 0px 10px 10px 0px; BORDER-LEFT: medium none; CURSOR: pointer; BORDER-BOTTOM: medium none" alt="Kliknutím zvětšíte obrázek." src="http://bp3.blogger.com/_Ns4jFXT4KpE/R-uJb1xvRaI/AAAAAAAAAqQ/nK82Tm-sGQU/s320/diagram4A_process_middle_big.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;V procesu tak budeme mít tři účastíky, reprezentované třemi pooly – &lt;em&gt;Uživatelé&lt;/em&gt;, &lt;em&gt;Objednávkový modul &lt;/em&gt;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.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp1.blogger.com/_Ns4jFXT4KpE/R-uJUVxvRZI/AAAAAAAAAqI/pxJUC3c2Nyg/s1600-h/diagram5_big.png" target="_blank"&gt;&lt;img id="BLOGGER_PHOTO_ID_5182386778756040082" style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; MARGIN: 0px 10px 10px 0px; BORDER-LEFT: medium none; CURSOR: pointer; BORDER-BOTTOM: medium none" alt="Kliknutím zvětšíte obrázek." src="http://bp1.blogger.com/_Ns4jFXT4KpE/R-uJUVxvRZI/AAAAAAAAAqI/pxJUC3c2Nyg/s320/diagram5_big.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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ě.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;V příštím díle&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;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).&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/638164731243339634-2896082532700650648?l=bpm-sme.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bpm-sme.blogspot.com/feeds/2896082532700650648/comments/default' title='Komentáře k příspěvku'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=638164731243339634&amp;postID=2896082532700650648&amp;isPopup=true' title='Počet komentářů: 22'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/638164731243339634/posts/default/2896082532700650648'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/638164731243339634/posts/default/2896082532700650648'/><link rel='alternate' type='text/html' href='http://bpm-sme.blogspot.com/2008/03/4-modelovani-procesu.html' title='4. část: Modelování procesu'/><author><name>vk</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://3.bp.blogspot.com/-9ISibY5RKgY/TgWjFov5gMI/AAAAAAAAB7k/uPmzzlv2Rrk/s220/kalenda1.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_Ns4jFXT4KpE/R-uJy1xvReI/AAAAAAAAAqw/kQ9e09Z-Q4s/s72-c/diagram1_big.png' height='72' width='72'/><thr:total>22</thr:total></entry><entry><id>tag:blogger.com,1999:blog-638164731243339634.post-1894247338769679257</id><published>2008-03-18T20:13:00.009+01:00</published><updated>2008-05-23T12:00:11.435+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BPMS'/><category scheme='http://www.blogger.com/atom/ns#' term='BPM prakticky (seriál)'/><category scheme='http://www.blogger.com/atom/ns#' term='Modely'/><title type='text'>3. část: Úvod do BPMN</title><content type='html'>&lt;em&gt;Petr Vašíček, IBA CZ&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;V minulém díle jsme si popsali proces založení objednávky, který budeme v rámci seriálu modelovat a implementovat. Ještě před tím si však představíme notaci BPMN, ve které bude modelování probíhat. Tento článek můžete brát jako takový jemný úvod do této notace. Komplexnější pohled na BPMN a detailnější návod pro modelování v něm by vystačil na samostatný seriál, proto si v dnešním díle uvedeme alespoň jeho základy. Závěrem uvedeme několik odkazů na dokumenty, ze kterých je možno získat podrobnější znalosti.&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;strong&gt;Pár slov o BPMN&lt;/strong&gt;&lt;br /&gt;Business Process Modeling Notation (BPMN) je grafická notace (soubor grafických objektů a pravidel, podle nichž mohou být mezi sebou spojovány), která slouží k modelování procesů. Za jejím vznikem stojí iniciativa BPMI (Business Process Management Initiative), jejímž primárním cílem bylo v tomto případě vytvořit notaci, která bude čitelná všemi účastníky životního cyklu procesu (business analytici, techničtí vývojáři, analytici monitorující procesy atd.). Díky BPMN se úspěšně podařilo zmenšit komunikační mezeru mezi návrhem a implementací procesu a díky desítkám nástrojů, které jej používají, se stalo de facto standardem pro modelování procesů.&lt;br /&gt;&lt;br /&gt;Dalším cílem BPMI bylo představit notaci, jež bude na jednu stranu jednoduchá na pochopení a používání, na druhé straně ale nabídne možnost modelovat i komplexní business procesy. Důležité bylo rovněž definovat převod mezi návrhem procesu v BPMN a jeho implementací v BPEL, BPML, či jiném jazyce pro spouštění procesů. BPMN definuje, jak převádět jednotlivé elementy a sekvence těchto elementů do jazyka BPEL. Je tedy možné (manuálně) model procesu do jeho spustitelné podoby převést. Díky poměrné volnosti modelování v BPMN není možné vygenerovat BPEL automaticky, některé BPMS nástroje však tuto funkci nabízejí, a to za cenu určitých omezení při samotném modelování procesu.&lt;br /&gt;&lt;br /&gt;V současné chvíli je BPMN ve verzi 1.1, jež byla formálně přijata v lednu 2008. Daleko používanější ovšem zůstává verze 1.0 (únor 2006), která se od novější verze liší pouze v několika kosmetických změnách. Verze 2.0, která by měla přinést zásadnější změny, je očekávána koncem roku 2008 či spíše během roku 2009.&lt;br /&gt;&lt;br /&gt;BPMN definuje jediný diagram, tzv. Business Process Diagram (BPD). Ten je tvořen sítí grafických objektů, zejména aktivitami a zobrazením toku informací mezi nimi. Jednotlivé grafické objekty jsou od sebe dobře odlišené, což přispívá k přehlednosti diagramu. Jasně dány jsou tvary těchto objektů, které je třeba dodržovat, je ovšem možné volit pro ně vlastní barvy, například z odlišovacích účelů. V určitých případech lze použít v diagramu i vlastní grafický objekt, ten se však nesmí překrývat s žádným již existujícím a rovněž by neměl ovlivňovat samotný tok procesu, pouze jej upřesňovat, či poskytovat nějaké dodatečné informace.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Grafické elementy&lt;/strong&gt;&lt;br /&gt;Business Process Diagram obsahuje čtyři základní druhy grafických elementů, jež se ještě dále dělí na další podtypy. Nejastěji používané druhy ilustruje následující obrázek:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp1.blogger.com/_Ns4jFXT4KpE/R-AUh0YQfZI/AAAAAAAAAow/LgCK7uN8YLM/s1600-h/Graficke_objekty_big.png" target"_blank"&gt;&lt;img style="margin:0 10px 10px 0;cursor:pointer; border: none;" src="http://bp1.blogger.com/_Ns4jFXT4KpE/R-AUh0YQfZI/AAAAAAAAAow/LgCK7uN8YLM/s320/Graficke_objekty_big.png" border="0" alt="Kliknutím obrázek zvětšíte."id="BLOGGER_PHOTO_ID_5179162142704696722" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Následuje výpis základních informací o jednotlivých typech grafických objektů:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Flow Objects&lt;/strong&gt; (Tokové objekty)&lt;br /&gt;Objekty, které souvisí s tokem informací v procesu.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Event &lt;/em&gt;(Událost)&lt;ul&gt;&lt;li&gt;značí se kroužkem&lt;/li&gt;&lt;li&gt;přímo ovlivňují tok procesu&lt;/li&gt;&lt;li&gt;události, jimiž proces začne, skončí, či které nastanou v jeho průběhu&lt;/li&gt;&lt;/ul&gt;&lt;em&gt;Activity &lt;/em&gt;(Aktivita)&lt;ul&gt;&lt;li&gt;obdélník s kulatými rohy&lt;/li&gt;&lt;li&gt;znázorňuje činnost či práci&lt;/li&gt;&lt;li&gt;může být buďto atomická (tzv. Task) nebo v sobě může obsahovat samostatný proces, pak se tato aktivita nazývá subprocesem&lt;/li&gt;&lt;/ul&gt;&lt;em&gt;Gateway &lt;/em&gt;(Brána)&lt;ul&gt;&lt;li&gt;značí se čtvercem či kosočtvercem, stojícím na špici&lt;/li&gt;&lt;li&gt;označuje rozbíhání či souběh toků procesu, např. rozhodování či paralelní zpracování&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Connecting Objects&lt;/strong&gt; (Spojovací objekty)&lt;br /&gt;Objekty, které slouží k spojení tokových objektů navzájem či s artefakty.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Sequence Flow &lt;/em&gt;(Sekvenční tok)&lt;ul&gt;&lt;li&gt;nepřerušovaná čára s vyplněnou šipkou&lt;/li&gt;&lt;li&gt;určuje sekvenci (pořadí) aktivit&lt;/li&gt;&lt;/ul&gt;&lt;em&gt;Message Flow&lt;/em&gt; (Tok zpráv)&lt;ul&gt;&lt;li&gt;přerušovaná čára s prázdnou šipkou&lt;/li&gt;&lt;li&gt;znázorňuje tok zpráv mezi dvěma účastníky procesu&lt;/li&gt;&lt;/ul&gt;&lt;em&gt;Association &lt;/em&gt;(Asociace)&lt;ul&gt;&lt;li&gt;přerušovaná čára&lt;/li&gt;&lt;li&gt;umožňuje spojit objekt s nějakou dodatečnou informací&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Artifacts &lt;/strong&gt;(Artefakty)&lt;br /&gt;Značí nějaké upřesňující informace pro proces, nemají vliv na jeho tok.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Data Object&lt;/em&gt; (Datový objekt)&lt;ul&gt;&lt;li&gt;značí se obdelníkem s přehnutým rohem (list papíru)&lt;/li&gt;&lt;li&gt;reprezentuje data, se kterými pracují aktivity&lt;/li&gt;&lt;/ul&gt;&lt;em&gt;Group &lt;/em&gt;(Seskupení)&lt;ul&gt;&lt;li&gt;obdélník kreslený přerušovanou čárou&lt;/li&gt;&lt;li&gt;seskupení aktivit za analytických či dokumentačních důvodů&lt;/li&gt;&lt;/ul&gt;&lt;em&gt;Annotation &lt;/em&gt;(Poznámka)&lt;ul&gt;&lt;li&gt;text, jenž je spojen asociací s jiným grafickým objektem&lt;/li&gt;&lt;li&gt;poskytuje dodatečnou textovou informace&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;strong&gt;Swimlanes &lt;/strong&gt;(Plavecké dráhy)&lt;br /&gt;Slouží k zobrazení účastníků procesu či uspořádání činnosti v procesu např. podle rolí.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Pool&lt;/em&gt;&lt;ul&gt;&lt;li&gt;ohraničuje proces, v jeho záhlaví je název poolu&lt;/li&gt;&lt;li&gt;reprezentuje účastníka procesu&lt;/li&gt;&lt;li&gt;v rámci jednoho poolu se nachází právě jeden samostatný proces&lt;/li&gt;&lt;li&gt;komunikace mezi pooly probíhá pomocí zpráv (message flow)&lt;/li&gt;&lt;/ul&gt;&lt;em&gt;Lane &lt;/em&gt;(Dráha)&lt;ul&gt;&lt;li&gt;podčást poolu&lt;/li&gt;&lt;li&gt;slouží k uspořádání a kategorizaci aktivit&lt;/li&gt;&lt;li&gt;může značit např. role, oddělení či funkce organizace&lt;/li&gt;&lt;li&gt;komunikace mezi dráhami probíhá pomocí sekvenčního toku (sequence flow)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Příklad Business process diagramu&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Uveďme příklad procesu jednoduchého aukčního systému. Tok informací v tomto procesu je následující. Nejprve proběhne registrace položky do aukce. Pokud je položka v aukci, může být koupena buďto s okamžitou platností kdykoliv během trvání aukce (tzv. „Buy It Now“), nebo může aukce skončit po určené době. V tom případě je vydražena, pokud byl učiněn alespoň jeden příhoz. V případě, že položka byla vydražena (buďto „Buy It Now“ nebo přihazováním), čeká systém na přijetí platby. Pokud platba přijde do sedmi dní, nechá systém zaslat koupené zboží a proces je ukončen. Pokud položka nebyla vydražena či výherce do sedmi dní nezaplatil, je buď znovu registrována do aukce, nebo je proces ukončen (podle nastavení aukční položky).&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp0.blogger.com/_Ns4jFXT4KpE/R-AUbkYQfYI/AAAAAAAAAoo/R-bDGrvMJ4Y/s1600-h/Aukcni_system_big.png" target"_blank"&gt;&lt;img style="margin:0 10px 10px 0;cursor:pointer; border: none;" src="http://bp0.blogger.com/_Ns4jFXT4KpE/R-AUbkYQfYI/AAAAAAAAAoo/R-bDGrvMJ4Y/s320/Aukcni_system_big.png" border="0" alt="Kliknutím obrázek zvětšíte."id="BLOGGER_PHOTO_ID_5179162035330514306" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Na obrázku můžete vidět, jak by zadaný proces mohl vypadat. Není to samozřejmě jediný možný model tohoto procesu, BPMN poskytuje poměrně velkou volnost při modelování, takže existuje více možností, jak navrhnout stejný proces pomocí této notace. &lt;br /&gt;&lt;br /&gt;Nyní si popíšeme tok v procesu tak, jak jej vidíte na uvedeném obrázku. Začátek procesu je zaznačen zeleným kroužkem. Odtud míří tok procesu do aktivity, jež značí registraci položky do aukce. Poté, co je položka registrována začne běžet aukce. Během ní mohou proběhnout dvě události – buďto někdo koupí položku hned (příjem zprávy „Koupeno hned“), nebo dříve dojde ke skončení aukce vypršením stanovené doby (časová událost typu „Timer“). Je tedy použito rozhodnutí na základě události a proces bude pokračovat větví, ve které nastane událost jako první. Pokud jako první nastane konec aukce, je třeba rozlišit, zda existují na položku nějaké příhozy. Jestli ano, míří tok procesu k čekání na přijetí platby stejně jako v případě, že někdo koupil položku již před skončením aukce díky možnosti „Buy It Now“. K aktivitě „Přijmout platbu“ je připojena událost „Timer“ s popisem „7 dní“. Tím je řečeno, že pokud proces setrvá v této aktivitě sedm dní, bude jeho tok směřovat větví, jež vybíhá z této události. Pokud je do sedmi dní platba přijata, je zboží zasláno výherci aukce – aktivita „Zaslat zboží“ - a proces končí. Pokud položka nebyla koupena nebo platba nedorazila, tok procesu bude ústit do grafického objektu znázorňujícího rozhodnutí na základě informace (tedy jestli má být zboží nasazeno znovu do aukce). Pokud má být položka znovu registrována, míří tok procesu na začátek do první aktivity, v opačném případě proces spěje do ukončovací události (červený kroužek) a je zastaven.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Závěrem&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Účelem tohoto dílu bylo poskytnout jemný úvod do grafické notace Business Process Modeling Notation, kterou budeme používat pro modelování procesu v příštím díle. Uvedli jsme základní informace o této notaci a krátce představili její nejčastěji používané grafické elementy. Na závěr jsme si ukázali jednoduchý proces, na kterém můžeme vidět v praxi některé z grafických objektů. K hlubšímu pochopení, jak tyto objekty používat, a vůbec k lepšímu pochopení konceptu modelování v BPMN můžeme doporučit následující dokumenty:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.omg.org/spec/BPMN/1.1/" target="_blank"&gt;Specifikace BPMN 1.1&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.bpmn.org/Documents/Introduction%20to%20BPMN.pdf" target="_blank"&gt;Úvod do BPMN 1.0&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.bpmn.org/Documents/OMG%20BPMN%20Tutorial.pdf" target="_blank"&gt;BPMN Tutorial&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/638164731243339634-1894247338769679257?l=bpm-sme.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bpm-sme.blogspot.com/feeds/1894247338769679257/comments/default' title='Komentáře k příspěvku'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=638164731243339634&amp;postID=1894247338769679257&amp;isPopup=true' title='Počet komentářů: 21'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/638164731243339634/posts/default/1894247338769679257'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/638164731243339634/posts/default/1894247338769679257'/><link rel='alternate' type='text/html' href='http://bpm-sme.blogspot.com/2008/03/3-uvod-do-bpmn.html' title='3. část: Úvod do BPMN'/><author><name>vk</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://3.bp.blogspot.com/-9ISibY5RKgY/TgWjFov5gMI/AAAAAAAAB7k/uPmzzlv2Rrk/s220/kalenda1.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_Ns4jFXT4KpE/R-AUh0YQfZI/AAAAAAAAAow/LgCK7uN8YLM/s72-c/Graficke_objekty_big.png' height='72' width='72'/><thr:total>21</thr:total></entry><entry><id>tag:blogger.com,1999:blog-638164731243339634.post-332310052331435966</id><published>2008-02-27T21:00:00.003+01:00</published><updated>2008-05-23T12:00:25.860+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BPMS'/><category scheme='http://www.blogger.com/atom/ns#' term='BPM prakticky (seriál)'/><category scheme='http://www.blogger.com/atom/ns#' term='Modely'/><title type='text'>2. část: Nástroje a vzorový proces</title><content type='html'>&lt;em&gt;Petr Vašíček, IBA CZ&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;V tomto díle se podíváme na konkrétní nástroje, které budeme v průběhu seriálu používat, a dozvíme se, jakým způsobem je lze získat. Dále si představíme jednoduchý vzorový proces, se kterým budeme v následujících dílech pracovat. Popíšeme si jeho průběh, účastníky (aktory), kteří v něm vystupují, a pro lepší představu o systému jako celku též zmíníme základní informace o backend a frontend části aplikace.&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;strong&gt;Použité nástroje&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Jako první bude v seriálu představena platforma složená z nástrojů vyvinutých společností Sun Microsystems - OpenESB, NetBeans a aplikační server GlassFish:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;OpenESB&lt;/strong&gt; – podniková sběrnice služeb, jejíž součásti je i běhové prostředí pro BPEL.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;NetBeans&lt;/strong&gt; – vývojové prostředí; budeme v něm modelovat proces ve spustitelném jazyce BPEL a nasazovat jej do běhového prostředí; kromě toho lze pomocí něj vyvíjet i jiné typy java projektů (webové a desktopové aplikace, moduly atp.).&lt;/li&gt;&lt;li&gt;&lt;strong&gt;GlassFish&lt;/strong&gt; – aplikační server, ve kterém běží OpenESB a frontendová i backendová část naší aplikace.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Business Process Visual Architect&lt;/strong&gt; – návrhář procesů z dílny Visual Paradigm (komerční software – viz dále); budeme v něm zakreslovat procesy pomocí grafické notace BPMN.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;V našem vzorovém projektu použijeme komunikační infrastrukturu &lt;strong&gt;OpenESB&lt;/strong&gt;, na níž budeme postupně stavět BPMS infrastrukturu. OpenESB je implementací JBI (integrační standard specifikovaný v JSR-208 - &lt;a href="http://en.wikipedia.org/wiki/Java_Business_Integration" target="_blank"&gt;více informací&lt;/a&gt;) a umožňuje přidávat další funkční celky v podobě JBI pluginů, čímž nám usnadní budování kompletního BPMS řešení. Jedním z důležitých pluginů je právě i WS-BPEL Service Engine pro spouštění procesů zapsaných v jazyce BPEL. Dalším může být například komponenta pro business pravidla či workflow.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp3.blogger.com/_Ns4jFXT4KpE/R8XGqBTUm7I/AAAAAAAAAjM/WpmuEBRUDq8/s1600-h/zivotni_cyklus_bpm_big.png" target="_blank"&gt;&lt;img style="margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://bp3.blogger.com/_Ns4jFXT4KpE/R8XGqBTUm7I/AAAAAAAAAjM/WpmuEBRUDq8/s320/zivotni_cyklus_bpm_big.png" border="0" alt="Klikněte pro zvětšení"id="BLOGGER_PHOTO_ID_5171758172311165874" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Obrázek 1: Architektura JBI&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;OpenESB je dobře provázána s vývojovým prostředím &lt;strong&gt;NetBeans&lt;/strong&gt;, ve kterém lze snadno modelovat procesy v jazyce BPEL a sestavovat kompozitní aplikace, sloužící k provázání komponent nasazovaných do ESB. Současně je možné pomocí NetBeans vytvářet backend i frontend vyvíjeného systému, což zmenšuje počet nástrojů nutných k jeho vývoji a unifikuje vývojářské prostředí. NetBeans lze spolu s aplikační serverem GlassFish a OpenESB stáhnout jako bundle (společně distribuovaný balík), což zjednodušuje jeho instalaci, konfiguraci a také použití.&lt;br /&gt;&lt;br /&gt;Pro modelování procesu v grafické notaci BPMN budeme používat nástroj &lt;strong&gt;Business Process Visual Architect&lt;/strong&gt;, který není sice zdarma, nicméně jeho cena je poměrně nízká. Navíc existuje možnost stáhnout si jej na zkoušku po dobu 30 dní, což pro náš účel postačí. Díky jednoduchosti notace BPMN existují i volně dostupné kreslítka, umožňující modelovat BPMN procesy, nicméně nedosahují kvalit BP-VA.&lt;br /&gt;&lt;br /&gt;Vývojové prostředí NetBeans 6.0.1 včetně aplikačního serveru GlassFish obsahujícího i OpenESB lze stáhnout &lt;a href="http://download.netbeans.org/netbeans/6.0/final/" target="_blank"&gt;zde&lt;/a&gt;. Vyberte poslední download (all – 195 MB). &lt;br /&gt;&lt;br /&gt;Pro běh IDE i serveru je třeba mít nainstaováno Java JDK, nejlépe ve verzi 5.0. To je možné získat &lt;a href="http://java.sun.com/javase/downloads/" target="_blank"&gt;zde&lt;/a&gt;, konkrétně doporučujeme vybrat „JDK 6 Update 4“. &lt;br /&gt;&lt;br /&gt;Nástroj Business Process Visual Architect od Visual Paradigm, ve kterém budeme modelovat proces, můžete stáhnout zdarma na &lt;a href="http://www.visual-paradigm.com/product/bpva/" target="_blank"&gt;této adrese&lt;/a&gt;. Na této stránce je potřeba vlevo nahoře kliknout na odkaz „Get a FREE copy“, zaregistrovat se, stáhnout produkt a nechat si na zadanou emailovou adresu zaslat soubor s licencí.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Ukázkový proces&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Jak jsme již předeslali v úvodu seriálu, budeme celý životní cyklus BPM demonstrovat na jednom konkrétním procesu.&lt;br /&gt;&lt;br /&gt;Pro modelování jsme vybrali jednoduchý a názorný proces, který si každý bude moci snadno představit, a to sice proces vytváření a schválení objednávky. Při návrhu tohoto procesu jsme nekladli přílišný důraz na realizmus procesu co se týče samotných požadavků, ani zda je proces správně navržen z pohledu analytického, ale spíše na jeho jednoznačnost, přehlednost a jednoduchou technickou proveditelnost. Záměrná trivialita procesu usnadní vysvětlování jednotlivých aspektů při jeho modelování a rovněž umožní věnovat se podrobně celému procesu.  Tento proces budeme v této podobě používat s drobnými úpravami nebo obměnami až do konce seriálu.&lt;br /&gt;&lt;br /&gt;Implementaci tohoto procesu budeme realizovat ve středně velké (fiktivní) firmě. Tato firma již má definován proces pro vytvoření objednávky a prvním krokem v jeho životním cyklu bude jeho namodelování business analytikem. V procesu vystupují tři role:&lt;ul&gt;&lt;li&gt;Objednatel provádí zadání objednávky do systému (ve firmě je učeno několik lidí, kteří mohou tuto roli zastávat a tedy vytvářet objednávky), &lt;/li&gt;&lt;li&gt;Technické oddělení, které tvoří pracovníci, jejichž úkolem je posoudit vhodnost objednaného zboží,&lt;/li&gt;&lt;li&gt;Finanční ředitel rozhoduje o dražších nákupech ve firmě&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Proces začíná vytvořením objednávky a končí jejím schválením či zamítnutím. V případě schválení je objednávka předána k objednání. To už je předmětem navazujícího procesu, o kterém budeme předpokládat, že je již namodelován a funkční, a nebudeme se jím podrobněji zabývat.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp0.blogger.com/_Ns4jFXT4KpE/R8XGzRTUm8I/AAAAAAAAAjU/hjOtz-A1EGs/s1600-h/High+Level+Diagram_big.png" target="_blank"&gt;&lt;img style="margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://bp0.blogger.com/_Ns4jFXT4KpE/R8XGzRTUm8I/AAAAAAAAAjU/hjOtz-A1EGs/s320/High+Level+Diagram_big.png" border="0" alt="Klikněte pro zvětšení"id="BLOGGER_PHOTO_ID_5171758331224955842" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Obrázek 2: Modelový proces &lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Proces je tedy iniciován akcí Objednatele, který založí objednávku v systému, uvede druh zboží, kvantitu a důvod objednávky (business reason). Objednávka je následně předána technickému oddělení ke schválení. To ji posoudí (zda není zboží již zastaralé, zda je vhodné pro požadovaný účel apod.) a rozhodne o jejím schválení. Pokud technické oddělení objednávku nezamítne (s uvedeným důvodem), proces pokračuje do rozhodovacího okamžiku, ve kterém se rozvětví podle ceny objednaných položek. Pokud je vyšší či rovna 40.000 Kč, musí ji schválit Finanční ředitel, v opačném případě je schválena automaticky. Po schválení je objednávka označena jako připravená k objednání (přebírá ji Nákupčí). Proces je pro představu zachycen v uvedeném BPMN diagramu, význam jednotlivých grafických elementů a postup k detailnějšímu modelu bude ukázán v příštím díle.&lt;br /&gt;&lt;br /&gt;Nyní ještě krátce popíšeme prezentační vrstvu (frontend) a vrstvu business logiky (backend), se kterými bude proces v interakci. Frontend podobných systému tvoří často portálové řešení, v našem případě si ale vystačíme s jednoduchou webovou aplikací, jež bude umožňovat přihlášení uživatele a podle jeho role mu nabídne možnost vytvořit objednávku, sledovat založené objednávky a vyjádřit se k objednávce, která byla přiřazena ke schválení tomuto uživateli. Aplikace poskytne formuláře pro provedení všech interakcí s procesem. Samotná business logika, která zpracovává požadavky a pracuje s databází, je obsažena v EJB modulu, jenž je nasazen v aplikačním serveru GlassFish. K tomuto modulu lze přistupovat přes rozhraní webových služeb, a to jak z procesu, tak přímo z webové aplikace.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;V příštím díle&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;V příštím díle budeme modelovat představený proces v nástroji Business Process Visual Architect. Ukážeme si, jak přistoupit k návrhu celého procesu a jak jej realizovat, včetně jemného úvodu do grafické notace BPMN. Srovnáme také úrovně, na kterých lze proces modelovat. Výsledkem příštího dílu či možná dvou bude kompletní návrh procesu v BPMN, podle kterého bude proces následně převeden do XML jazyka BPEL.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/638164731243339634-332310052331435966?l=bpm-sme.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bpm-sme.blogspot.com/feeds/332310052331435966/comments/default' title='Komentáře k příspěvku'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=638164731243339634&amp;postID=332310052331435966&amp;isPopup=true' title='Počet komentářů: 39'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/638164731243339634/posts/default/332310052331435966'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/638164731243339634/posts/default/332310052331435966'/><link rel='alternate' type='text/html' href='http://bpm-sme.blogspot.com/2008/02/2-nastroje-proces.html' title='2. část: Nástroje a vzorový proces'/><author><name>vk</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://3.bp.blogspot.com/-9ISibY5RKgY/TgWjFov5gMI/AAAAAAAAB7k/uPmzzlv2Rrk/s220/kalenda1.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_Ns4jFXT4KpE/R8XGqBTUm7I/AAAAAAAAAjM/WpmuEBRUDq8/s72-c/zivotni_cyklus_bpm_big.png' height='72' width='72'/><thr:total>39</thr:total></entry><entry><id>tag:blogger.com,1999:blog-638164731243339634.post-5242953447917914796</id><published>2008-02-01T23:15:00.003+01:00</published><updated>2008-05-23T12:00:40.880+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BPMS'/><category scheme='http://www.blogger.com/atom/ns#' term='BPM prakticky (seriál)'/><category scheme='http://www.blogger.com/atom/ns#' term='Modely'/><title type='text'>1. část: Proč BPM s open source nástroji</title><content type='html'>&lt;em&gt;Petr Vašíček, IBA CZ&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Seriál je koncipován jako „end2end“ průřez celou problematikou. V jednotlivých dílech představí jednoduchý a názorný proces, na kterém bude ilustrován celý životní cyklus BPM, počínaje návrhem, nasazením (včetně integrace s backendovou a frontendovou částí aplikace) až po samotné sledování procesu a vyhodnocování jeho efektivity. Na základě získaných výsledků provedeme návrh vhodných úprav a následnou optimalizaci neefektivní části procesu. Seriál rovněž nastíní možnosti využití pravidel podnikání a řízení lidské interakce s procesem.&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;em&gt;Obrázek 1: Životní cyklus BPM&lt;/em&gt;&lt;br /&gt;&lt;a href="http://bp3.blogger.com/_Ns4jFXT4KpE/R6OWKI1a46I/AAAAAAAAAfM/fNR6lyLl2BQ/s1600-h/kubiki_bpm_big.png" target="_blank"&gt;&lt;img id="BLOGGER_PHOTO_ID_5162134698811122594" style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; FLOAT: left; MARGIN: 0px 10px 10px 0px; BORDER-LEFT: medium none; CURSOR: hand; BORDER-BOTTOM: medium none" alt="Klikněte pro zvětšení obrázku" src="http://bp3.blogger.com/_Ns4jFXT4KpE/R6OWKI1a46I/AAAAAAAAAfM/fNR6lyLl2BQ/s400/kubiki_bpm_big.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Pro realizaci a optimalizaci procesu použijeme populární open-source platformy: kombinaci OpenESB + NetBeans a Intalio BPMS. Díky otevřenější povaze těchto nástrojů k BPM technikám může čtenář získat lepší povědomí o technologické stránce jednotlivých standardů a technologií než v případě komplexních komerčních řešení. Seriál současně představuje vhodnou cestu k zavedení BPM pro menší podniky, pro které jsou důležité nízké počáteční náklady a rychlé osvojení nových technologií. To jim může usnadnit případný pozdější přechod na pokročilejší komerční platformy.&lt;br /&gt;&lt;br /&gt;Účelem seriálu není představit plně fukční a okamžitě použitelné řešení, ale spíše ukázat, že cesta k němu může vést i přes volně dostupné open-source nástroje. Pokud firma o zavedení BPM uvažuje, může seriál využít jako základ pro odstartování pilotního projektu. I proto budou články koncipovány hlavně jako praktický návod pro realizování modelového procesu s minimálními teoretickými „vsuvkami“. Předpokládáme, že frekvence jednotlivých článků bude 1-2 díly za měsíc a obsahová náplň seriálu se bude přizpůsobovat ohlasu čtenářů portálu.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;color:#990000;"&gt;&lt;strong&gt;Trochu teorie o BPMS&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Systémy pro Business Process Management poskytují podporu pro modelování a optimalizaci business procesů v organizacích. Obsahují nástroje po pokrytí celého životního cyklu procesu - od analýzy a návrhu procesu až po jeho spouštění a monitorování. Procesy jsou navrhovány prostřednictvím grafických modelovacích jazyků, mezi nimiž se prosadila notace BPMN (Business Process Modeling Notation), de facto standard pro modelování business procesů (neznamená to ale, že by BPMN podporovaly všechny nástroje).&lt;br /&gt;&lt;br /&gt;Mezi hlavní výhody BPMN patří čitelnost a přehlednost, což během tvorby procesu umožňuje každému (management, analytici, vývojáři) snadnou orientaci. Modely jsou poté (automaticky) převedeny do spustitelné podoby, většinou do XML jazyka BPEL (Business Process Executional Language). Po nasazení procesů na procesní server je umožněno procesy monitorovat a omezeně i zasahovat do jejich běhu.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Obrázek 2: BPMS komponenty&lt;/em&gt;&lt;br /&gt;&lt;a href="http://bp3.blogger.com/_Ns4jFXT4KpE/R6OWaI1a47I/AAAAAAAAAfU/2K_wGY92UkY/s1600-h/bpms_big.png" target="_blank"&gt;&lt;img id="BLOGGER_PHOTO_ID_5162134973689029554" style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; FLOAT: left; MARGIN: 0px 10px 10px 0px; BORDER-LEFT: medium none; CURSOR: hand; BORDER-BOTTOM: medium none" alt="Klikněte pro zvětšení obrázku" src="http://bp3.blogger.com/_Ns4jFXT4KpE/R6OWaI1a47I/AAAAAAAAAfU/2K_wGY92UkY/s400/bpms_big.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Nástroje pro BPM 1. 0 byly koncipovány spíše jako soubor menších komponent pro dílčí oblasti procesního modelování (návrh, spouštění), kdežto BPMS druhé generace již zahrnuje celý životní cyklus procesu a poskytuje celistvé nástroje s přívětivým uživatelským rozhraním.&lt;br /&gt;&lt;br /&gt;Každý BPMS by měl minimálně obsahovat návrhář procesů, prostředí pro jejich spouštění, monitoring a podporu pro workflow (dlouho trvající procesy s lidskou interakcí) včetně potřebného uživatelského rozhraní (Human Task Management). Velice důležitá je podpora Business Rules, čili pravidel podnikání uložených vně procesu (databáze, XML, Excel, skriptovací jazyk), která se používají pro validační a rozhodovací akce v jeho průběhu.&lt;br /&gt;&lt;br /&gt;Pokročilější BPMS počítají s BAM (Business Activity Monitoring) a udržováním verzí dokumentů vázajících se k procesům. Plné BPMS již vypadají jako kompletní ESB (sběrnice služeb), na níž jsou všechny komponenty napojeny, obsahují BI nástroj pro zpracování výsledků z BAM, repozitář metadat a další komponenty.&lt;br /&gt;&lt;br /&gt;Na rozdíl od komerčních nástrojů nejsou open-source BPM platformy jednolitým komplexním nástrojem, ale buďto souborem nezávislých komponent, nebo sice jeden celistvě se tvářící nástroj, ale s omezenou funkcionalitou v porovnání s placenými alternativami. Nízké počáteční náklady jsou u těchto řešení vyváženy větším úsilím při prvotním osvojení. Je třeba zvolit a správně nastavit odpovídající technické prostředí, provést průzkum funkcí vybraného nástroje a ty, které neposkytuje, si případně doimplementovat. Vývojáři a procesní specialisté, kteří s nástrojem pracují, nejsou také tolik odstíněni od BPM technologií, musí lépe rozumět jejich principům a standardům v oblasti modelování obchodních procesů. To ale může být i výhodou a přispět k lepšímu pochopení těchto technologií, zvlášt při počátečním seznamování s BPM.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;color:#990000;"&gt;&lt;strong&gt;V příštím díle&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;se podíváme na konkrétní nástroje, jež budeme v seriálu používat a představíme si ukázkový proces, na kterém budeme BPM postupy a technologie demonstrovat.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/638164731243339634-5242953447917914796?l=bpm-sme.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bpm-sme.blogspot.com/feeds/5242953447917914796/comments/default' title='Komentáře k příspěvku'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=638164731243339634&amp;postID=5242953447917914796&amp;isPopup=true' title='Počet komentářů: 27'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/638164731243339634/posts/default/5242953447917914796'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/638164731243339634/posts/default/5242953447917914796'/><link rel='alternate' type='text/html' href='http://bpm-sme.blogspot.com/2008/02/1-uvod-do-bpm-pro-sme.html' title='1. část: Proč BPM s open source nástroji'/><author><name>vk</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://3.bp.blogspot.com/-9ISibY5RKgY/TgWjFov5gMI/AAAAAAAAB7k/uPmzzlv2Rrk/s220/kalenda1.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_Ns4jFXT4KpE/R6OWKI1a46I/AAAAAAAAAfM/fNR6lyLl2BQ/s72-c/kubiki_bpm_big.png' height='72' width='72'/><thr:total>27</thr:total></entry><entry><id>tag:blogger.com,1999:blog-638164731243339634.post-193033122144402290</id><published>2008-01-31T00:23:00.000+01:00</published><updated>2008-05-02T14:02:23.108+02:00</updated><title type='text'>O společnosti IBA CZ</title><content type='html'>&lt;a href="http://www.ibacz.eu/cz/" target="_blank"&gt;&lt;img id="BLOGGER_PHOTO_ID_5162144542876165058" style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; FLOAT: right; MARGIN: 0px 0px 10px 10px; BORDER-LEFT: medium none; WIDTH: 160px; CURSOR: pointer; BORDER-BOTTOM: medium none; HEIGHT: 36px" height="64" alt="IBA CZ" src="http://bp3.blogger.com/_Ns4jFXT4KpE/R6OfHI1a48I/AAAAAAAAAfk/B-ivvEUmYL8/s320/logo_iba_cz_uprava.png" width="259" border="0" /&gt;&lt;/a&gt;&lt;a href="http://www.ibacz.eu/cz/" target="_blank"&gt;IBA CZ&lt;/a&gt; je outsourcingová softwarová společnost, která se specializuje na zakázkový vývoj software s využitím moderních technologii Java EE, portálů, BI, BPM a dalších.&lt;br /&gt;&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;Společnost &lt;a href="http://www.ibacz.eu/cz/" target="_blank"&gt;IBA CZ&lt;/a&gt; je vývojovým centrem nadnárodní koporace &lt;a href="http://www.ibacz.eu/ibagroup/" target="_blank"&gt;IBA Group&lt;/a&gt;, které se specializuje na zakázkový vývoj software s využitím moderních technologií jako jsou Java EE, enterprise portály, BI, BPM a další. IBA CZ nabízí zejména outsourcingové služby v oblasti vývoje, údržby, podpory a migrace software. Kromě toho též nabízí konzultační, školicí a logistické služby v IT a v neposlední řadě se zabývá i prodejem vývojových nástrojů IBM Rational. IBA CZ byla založena v roce 1999, má pobočky v Praze a Brně a na konci roku 2007 dosáhla počtu cca 70 zaměstnanců.&lt;br /&gt;&lt;br /&gt;Hlavní předností IBA CZ je možnost zapojit do lokálních projektových týmů offshore speciliaty z dalších vývojových center a tak zákazníkům nabídnout široké portfolio technologií, silné personální zázemí pro malé i velké projekty a optimální cenové podmnínky.&lt;br /&gt;&lt;br /&gt;V oblasti BPM společnost IBA CZ vyvíjí procesně orientovanou portálovou platformu KUBIKI, která je postavena na opensource technologích Sun Glassfish, OpenESB a Liferay. KUBIKI jsou určeny nejen pro velké korporace, ale i pro společnosti v segmentu SME, kterým umožňují implementovat finančne dostupné moderní procesní prostředí. Vyladěná kombiace servisně-orientované architektury, procesní vrstvy a podnikového portálu snižuje náklady na intgerační nebo migrační projekty Zákazník dostává jednoduché, robustní, otevřené a plně standardizované BPMS prostředí, které může postupně rozšiřovat.&lt;br /&gt;&lt;br /&gt;IBA Group patří mezi významné dodavatele na poli globálního outsourcingu. Díky počtu téměř 2000 vývojářů realizuje se svými zákazníky ve třiceti zemích offshore i nearhore projekty zaměřené především na IBM technologie (Lotus, WebSphere), mainframe, e-business, SAP a další.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Kontakty na IBA CZ&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="mailto:valdman@ibacz.eu"&gt;Jan Valdman&lt;/a&gt;&lt;br /&gt;tel. 251 050 160&lt;br /&gt;&lt;br /&gt;&lt;a href="mailto:pavlovic@ibacz.eu"&gt;Jan Pavlovič&lt;/a&gt;&lt;br /&gt;tel. 533 432 443&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/638164731243339634-193033122144402290?l=bpm-sme.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bpm-sme.blogspot.com/feeds/193033122144402290/comments/default' title='Komentáře k příspěvku'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=638164731243339634&amp;postID=193033122144402290&amp;isPopup=true' title='Počet komentářů: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/638164731243339634/posts/default/193033122144402290'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/638164731243339634/posts/default/193033122144402290'/><link rel='alternate' type='text/html' href='http://bpm-sme.blogspot.com/2008/01/o-spolenosti-iba-cz.html' title='O společnosti IBA CZ'/><author><name>vk</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://3.bp.blogspot.com/-9ISibY5RKgY/TgWjFov5gMI/AAAAAAAAB7k/uPmzzlv2Rrk/s220/kalenda1.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_Ns4jFXT4KpE/R6OfHI1a48I/AAAAAAAAAfk/B-ivvEUmYL8/s72-c/logo_iba_cz_uprava.png' height='72' width='72'/><thr:total>0</thr:total></entry></feed>
