České vysoké učení technické v Praze Fakulta elektrotechnická Katedra počítačů
Bakalářská práce Modelování a simulace podnikových procesů na platformě Intalio
Ludvík Valíček
Vedoucí práce: Ing. Pavel Náplava Studijní program: Softwarové technologie a management, Bakalářský Obor: Softwarové inženýrství 23. května 2012
Prohlášení Prohlašuji, že jsem práci vypracoval samostatně a použil jsem pouze podklady uvedené v přiloženém seznamu. Nemám závažný důvod proti užití tohoto školního díla ve smyslu §60 Zákona č. 121/2000 Sb., o právu autorském, o právech souvisejících s právem autorským a o změně některých zákonů (autorský zákon).
V Praze dne 23. 5. 2012
.............................................................
-2-
Poděkování Tímto bych chtěl poděkovat panu Ing. Náplavovi za cenné rady, odborné vedení a konzultace, které mi poskytl během zpracování bakalářské práce.
-3-
Abstrakt Práce se zabývá analýzou a využitím open-source nástroje Intalio v oblasti modelování a simulace podnikových procesů. Analýza je zaměřena na praktickou použitelnost nástroje Intalio, vytváří vzorovou úlohu podnikového procesu a popisuje jednotlivé fáze modelování a problémy, které se při modelování a implementaci vyskytly. V závěrečné části práce je vytvořen rozšiřující modul pro podporu vizualizace a sledování KPI (Key Process Indicators) navrhnutého podnikového procesu. Tento modul v základní verzi nástroj Intalio nenabízí.
Abstract The work analyses the open-source system Intalio, which is focused on problematic of modeling and simulation of business processes. The work is concentrated on practical usage of Intalio instruments and there is developed an example of business process, where is described all phases of business process modeling and problems, arisen during process development. In the final part of the work, there is created an extension module for visualization support of KPI (Key Process Indicators) monitoring of implemented business process. Intalio system in its basic version does not offer such a module.
-4-
Obsah 1. 2. I. 3.
4.
II. 5.
6.
7. 8. 9. III. 10. 11. 12. 13. 14. 15. 16. 17.
Úvod ................................................................................................... 6 Popis problému, specifikace cíle…………………………… ........................... 6 2.1. Cíle práce……………………………................................................. 6 2.2. Popis řešeného problému, struktura práce……….. ...................... 7 Teoretická část Analýza BPM, BPMS………………………………………….. ........................... 8 3.1. BPM, stručné seznámení………………………….... ......................... 8 3.2. BPMS (Business Process Management Systems)……………….. .... 9 3.3. BPMN (Business Process Management Notation) ........................ 9 3.3.1. Použití BPMN…………………………………………………………… ..... 10 3.3.2. Základní elementy BPMN ............................................................ 11 3.4. BPEL (Business Process Execution Language)…………………… ... 13 Analýza nástroje Intalio BPMS……………………………… .......................... 15 4.1. Intalio Designer……………………………………….. ......................... 15 4.1.1. Popis napojení a komunikace s databází………… ........................ 17 4.1.2. Editor formulářů (Form Editor)… ................................................ 18 4.1.3. Mapování dat procesu (Data Mapper)…………… .......................... 19 4.1.4. Popis komunikace pomocí webových služeb……. ........................ 20 4.1.5. Instalace Intalio Designer 6.1.12..……………….. ......................... 21 4.2. Intalio Server…………………………………………............................ 22 4.2.1. Instalace Intalio Server 6.2.4………………………. ......................... 22 4.2.2. Popis funkcí Intalio server………………………….. ......................... 23 4.3. Možnost monitorování KPI procesu………………. ......................... 27 Praktická část Návrh ukázkového procesu v prostředí Intalio…………. ........................... 28 5.1. Proces výroby nerezových svařovaných trubek……. .................... 28 5.1.1. Popis procesu…………………………………………. .......................... 28 5.1.2. Postup tvorby procesu v Intalio Designer………........................... 28 5.1.3. Spouštění a běh procesu na serveru Intalio……. ......................... 30 Možnosti nástroje pro vizualizaci KPI……………....................................... 31 6.1. Výběr technologie nástroje pro vizualizaci……… ......................... 31 6.2. Návrh aplikace……………………………………… ............................ 32 6.2.1. Aplikace využívající webové služby Intalio……… ......................... 32 6.2.2. Problémy vzniklé při vývoji aplikace využívající webové služby… . 32 6.2.3 Aplikace využívající databázi……… ............................................. 34 6.2.4. Návrh grafického rozhraní aplikace……………………….. .............. 34 6.3. Testování aplikace…………………………………. ............................ 36 Problémy a nalezené chyby při implementaci.. ........................................ 37 Závěr…………………………………………………........................................... 41 Použité zdroje……………………………………….. ........................................ 43 Přílohy Katalog požadavků aplikace monitorující KPI.. ........................................ 44 Model jednání – Use Case………………….. ............................................... 45 Návrh hlavních tříd aplikace…………………….. ........................................ 45 12.1. Návrh hlavních tříd, řešení s webovými službami..... .................. 45 12.2. Návrh hlavních tříd, řešení pomocí databáze… ........................... 47 Instalační příručka………………………………… ........................................ 49 Uživatelská příručka………………………………. ........................................ 50 Seznam použitých zkratek……………………….. ........................................ 51 Seznam obrázků……………………………………. ........................................ 52 Přílohy bakalářské práce…………………………. ........................................ 53 -5-
1. Úvod Moderní podnikové informační systémy pomáhají zvyšovat produktivitu a výkonnost podniků, pro procesně orientované řízení podniků vznikla technologie BPM. Termín Business Process Management (BPM) není nový a neznámý. Již v roce 1990, pro zvýšení výkonnosti a řízení podnikových procesů, byl použit výraz Business Process Reengineering. Základní myšlenkou BPM je poskytnout zaměstnancům,
obchodním
uživatelům
a technickému
personálu
společnou
platformu pro modelování, implementaci a spuštění modelovaného podnikového procesu a měřit sledované hodnoty KPI a dále zlepšovat celkovou efektivitu a výkonnost podnikových procesů. [1][2][7]. Na světě bylo vyvinuto velké množství počítačových systémů, které řídí a simulují podnikové procesy na bázi BPM. Většina z těchto systému je však velice drahá. Existují také open-source systémy, které v základní verzi nabízí nástroje pro modelování, běh a simulaci podnikových systémů. Jedním z nejvýznamnějších open-source BPM nástrojů je systém Intalio, na který se v této práci zaměřuji. Důvod, proč jsem si vybral toto téma, byly mé pracovní zkušenosti z výrobních podniků, kdy jsem se setkal s problémy ve sledování KPI podnikových procesů. Proto jsem se rád seznámil s technologií, která umožňuje problémům při řízení podnikových procesů částečně předcházet a výkonnost těchto procesů dále zvyšovat.
2. Popis problému, specifikace cíle 2.1. Cíle práce Tato práce měla dva cíle. Prvním cílem bylo provedení analýzy možností využití nástroje Intalio pro modelování podnikových procesů. Byly zjištěny výhody a nevýhody tohoto open-source nástroje. Byl vytvořen vzorový, středně složitý podnikový proces, a popsány jednotlivé fáze modelování, simulace a problémy, které se při modelování a simulaci vyskytly. Druhým
cílem
bylo
vytvořit
rozšiřující
modul
pro
monitorování
a vyhodnocování KPI tohoto procesu a ukázat možnosti napojení systému Intalio na jiné nástroje, a tak rozšířit funkčnost systému.
-6-
Protože systém Intalio v základní verzi neobsahuje podporu pro vizualizaci KPI, bylo vytvořeno jednoduché rozhraní, které monitoruje a vyhodnocuje KPI vytvořeného procesu.
2.2 Popis řešeného problému, struktura práce Aby bylo možné vytvořit vzorový podnikový proces, bylo nutné se s nástrojem Intalio seznámit. Analýze je věnována první část práce (I. Teoretická část). Poznatky byly z velké části čerpány přímo z webových stránek společnosti Intalio [6], popis modelování procesu je uveden v kapitole 5.1.2. V druhé části práce je popsán způsob komunikace se systémem Intalio. Komunikace a získávání hodnot procesů ze systému Intalio, pro vizualizaci a sledování KPI, je možné provádět pomocí webových služeb nebo získávat hodnoty procesů z databázových tabulek. Systém Intalio by měl umožňovat bezproblémovou komunikaci využitím webových služeb, proto byla vyzkoušena tato možnost (kapitola 6.2.1.). Dále bylo vytvořeno řešení monitorování KPI, kde hodnoty procesu byly získávány z databázové tabulky (kapitola 6.2.3.). V části III jsou uvedeny přílohy této práce.
-7-
I Teoretická část 3. Analýza BPM, BPMS 3.1. BPM, stručné seznámení Existuje spousta možností, jak definovat BPM. Podle odborníka Ismael Ghalimi a zakladatele firmy Intalio lze BPM definovat takto: „V současné době je BPM pseudonym, který popisuje cokoliv co má souvislost s pracovními toky výrobků, nástroji pro tvorbu diagramů, které tyto toky popisují. S tím související generátory Java kódu a dále i konzultační služby spojené s reingeneeringem obchodních a podnikových procesů.“ [2] Jiní autoři [3] definují BPM jako soubor koordinovaných úkolů, jejichž cílem je dosáhnout určitého cíle společnosti. Business Process může být modelován a měřen. Cílem BPM je vytvořit specifické business modely pro podporu managementu společností. Tyto modely zvyšují spolupráci a integraci mezi pracovníky společnosti, systémy, procesy ve společnosti včetně obchodních partnerů a zákazníků. Hlavní důvody pro zavedení BPM jsou tyto: -
plánování obchodu, motivace,
-
řízení obchodních a výrobních procesů,
-
dodržování výrobních a obchodních pravidel,
-
modelování obchodu. [2] [3] Pod pojmem podnikový proces (business process) je možné si představit
např. řízení objednávek, personalistiku, vnitřní firemní řízení zásob atd. Tyto procesy mohou být dále orchestrovány se softwarovou platformou pomocí kombinace systémových úloh (např. vyhledání informace v relačních databázích, poslání objednávky obchodnímu partnerovi přes B2B rozhraní atd.) a pomocí uživatelských úloh (např. uživatel odsouhlasil harmonogram, uživatel začal zpracovávat proces vyplněním formuláře, uživatel řídí celý proces atd.). Spuštění celého procesu neznamená jeho automatizaci: velký počet business procesů se obyčejně skládá z úloh spouštěných systémem a úloh spouštěných jednotlivými uživateli procesu. Business Process Management Systems (BPMS) jsou softwarové produkty poskytujícím analytikům a IT personálu nástroje pro modelování, implementaci, spouštění, monitorování a zlepšení výrobně-obchodních procesů společností. [4] [8] -8-
3.2. BPMS (Business Process Management Systems) Termín BPMS je novější definice BPM a může být definován jako „whole BPM“ [4]. Jedná se o propojení již stávajících datových zdrojů a funkčních procesních komponent do složitějšího, komplexnějšího procesu. Příslušné zdroje a komponenty jsou postavené na technologii webových služeb. Pomocí těchto webových služeb je poté možné tyto komponenty propojovat a dále vyhodnocovat a zpracovávat v uceleném procesu. [4] Intalio
open-source
BPMS
poskytuje
veškeré
komponenty
nezbytné
pro návrh, rozmístění na server a řízení složitých BPMS procesů. Enterprise verze systému Intalio dále umožňuje monitorovat tyto procesy, provádět správu dokumentů, podporuje
systémovou
integraci, business-to-business
protokoly
a nástroje pro správu webového portálu. [6]
3.3. BPMN (Business Process Management Notation) Pro grafický návrh business procesů se používá především notace BPMN umožňující tvorbu BPMN diagramů. Tato standardní notace byla vytvořena odborníkem
Stephenem
Whitem.
Dříve
se
používalo
několik,
mezi
sebou
nekompatibilních notací jako HIM (orientovaná na workflow) nebo UML Activity Diagrams. Hlavním cílem zakladatele Whita bylo poskytnout notaci, která bude srozumitelná všem uživatelům, tj. od podnikových analytiků, kteří tvoří první návrh procesů, přes technické
developery, zodpovědné za implementaci technologie
provádějící procesy a konečně po zodpovědné pracovníky, kteří procesy řídí a monitorují. Specifikace BPMN 1.0 byla veřejně vydána v květnu 2004 po dvou letech práce skupiny BPMI Notation Working Group. BPMN je průběžně revidována a současná verze 2.0 je poslední verzí vydanou Object Management Group (OMG). V celosvětovém měřítku velkou částí firem je již technologie BPMN přijata a počet firem aplikujících tuto technologii rychle roste. [4] Celou specifikaci BPMN je možné nalézt na stránkách OMG BPMN [4]. Současná verze BPMN podporuje orchestraci webových služeb (viz. kapitola 3.3.2.), umožňuje složité smyčky procesů, provedení vlastních „workflow“ úkolů a dále umožňuje choreografii několika procesů za použití rozdělení procesů do různých paralelních částí – „swimlanes“. Je třeba přiznat, že BPMN není dokonalá notace, -9-
jelikož má spoustu nedostatků. Mezi hlavní patří problematické zpětné generování BPMN z kódu BPEL. [4] 3.3.1. Použití BPMN BPMN
je
navržena,
aby
pokryla
velkou
šíři
modelovacích
možností
a umožňovala tvorbu koncových (end-to-end) procesů. Elementy BPMN umožňují lehce rozlišovat mezi jednotlivými sekcemi BPMN diagramu. BPMN se vytváří ve vedle sebe paralelních ohraničených částech, které se nazývají swimlanes. Swimlanes zapouzdřují jednotlivé části procesu. Rozlišují se tři hlavní části: -
Procesy: o
Privátní (vnitřní) – interní procesy organizace. Nazývají se též workflow. Jsou-li použity swimlanes, jedná se o proces uvnitř swimlanes, kde je možná komunikace privátního procesu s jiným procesem. Privátní procesy se dále dělí:
privátní (vnitřní) ne-spustitelné procesy (internal non-executable BP) – proces dokumentující chování procesu,
privátní
(vnitřní)
spustitelné
procesy
(internal
executable
BP)-spustitelný proces podle namodelované sématiky. o
Abstraktní (veřejné) procesy (public BP) – reprezentující interakci mezi privátním procesem a jiným procesem nebo účastníkem procesu. V abstraktním procesu je vidět pouze tok zpráv a pořadí interakce zpráv s procesem (privátním, veřejným nebo uživatelem), viz obr 1.
Obrázek 1: Ukázka veřejného procesu. [4]
-10-
-
Spolupráce (collaboration): znázornění interakce mezi jednou nebo více entitami. Jedná se většinou o procesy vedené ve více swimlanes. Zprávy jsou mezi procesy předávány na základě propojení těchto swimlanes, procesy tak mezi sebou komunikují.
-
Choreografie: slovo choreografie je definicí očekávaného chování procesu, vzájemnou interakcí účastníků. Normální proces existuje v samotném swimlanes, choreografie existuje mezi swimlanes nebo účastníky. 3.3.2. Základní elementy BPMN Grafické elementy notace BPMN byly navrženy tak, aby umožnily jednoduchou
tvorbu BPMN diagramů a zároveň pokryly celou její složitost. Proto jsou rozděleny do pěti základních kategorií: 1. Flow Objects: hlavní grafický element, definuje chování procesu (Obrázek 2). o
Events: Značí se kruhem a představují události, které nastanou v průběhu procesu, přičemž ovlivňují tok zprávy v modelu. Používají se jako spouštěč (trigger) nebo výsledek (result).
o
Activities: Značí se zaobleným obdélníkem a popisují úkoly, které daný proces provádí.
o
Gateways: Označují se kosočtvercem a používají se k větvení procesu a spojování jednotlivých větví.
a)
b)
c)
d)
e)
Obrázek 2: Příklady základních grafických elementů Flow Objects [6]: a. Message Start Event (start procesu na základě příchozí zprávy), b. Empty End Event (ukončení procesu), c. Activity Task (úkol prováděný procesem), d. Gateway Data-based Exclusive (větvení procesu dle podmínky, proces pokračuje pouze jednou větví), e. Gateway Parallel (rozdělení procesu do paralelních větví, proces dále pokračuje každou větví).
-11-
2. Data o
Data Objects: reprezentují jeden objekt nebo kolekci objektů a popisují výstupy nebo vstupy jednotlivých aktivit.
o
Data Inputs
o
Data Outputs
o
Data Stores
3. Connecting Objects (Obrázek 3) o
Sequence Flows: Ukazují pořadí, v jakém se jednotlivé aktivity provedou. Označují se plnou čarou se šipkou.
o
Message Flows: Ukazují tok zpráv mezi dvěma účastníky procesu. Označuje se přerušovanou čarou se šipkou.
o
Associations: Přikládají popisné informace jednotlivým elementům. Označují se tečkovanou čarou.
o
Data Associations.
4. Swimlanes (Obrázek 3) o
Pool: seskupení elementů jednoho procesu.
o
Lines: další možné rozdělení v rámci jednoho procesu, v případě, že toto rozdělení není použito, název swimlane a pool je identický.
Obrázek 3: Ukázka části procesu. [6] Proces je rozdělen do dvou swimlanes (Custumer-zákazník a Vendorprodávající). Message Flows ukazují tok zpráv a Sequence Flows popisují v jakém pořadí se jednotlivé aktivity uvnitř swimlane provedou. V každé swimlane je start a ukončení procesu. -12-
5. Artefacts o
Group: seskupení grafických elementů stejné kategorie. Neovlivňuje sekvenční toky a používá se pro vizualizaci.
o
Text Annotations: doplňující textové informace a poznámky.
3.4. BPEL (Business Process Execution Language) BPEL je standardní jazyk pro tvorbu BPM procesů. Notace BPMN se používá pro grafické
srozumitelné
modelování procesů a jazyk BPEL standardním
způsobem, pomocí XML notace, tyto procesy definuje. Tato XML notace byla přijata největšími firmami na trhu (Microsoft, IBM,…), a tak je podporována většinou výrobců
BPMNS
nástrojů.
Používání
BPEL
zjednodušuje
analýzu,
simulaci
a monitorování procesů. XML notace BPEL integruje různé aplikační systémy pomocí webových služeb, což umožňuje přístup k jiným programům již existujících systémů. BPEL vlastně zapouzdřuje celý proces do webové služby a prezentuje tento proces, který může být i velmi rozsáhlý, do několika webových služeb s vlastními rozhraními pro přístup k externím aplikacím. BPEL je možné psát ručně, pomocí BPEL editorů nebo vývojových prostředí, které generují BPEL automaticky z BPMN. Intalio Designer generuje BPEL automaticky při každém uložení BPM diagramu. V prostředí Intalio Designer je také možné
manuální vygenerování BPEL souborů, které vytvoří komprimovaný
zip soubor. Soubor dále obsahuje schéma BPEL (.xsd) a soubory webových služeb (.wsdl).
Na
obrázku
4
je
uveden
jednoduchý
BPMN
proces
a
odpovídající BPEL XML notace vygenerovaná Intalio Designerem.
Obrázek 4: BPMN diagram, proces pouze přijímá a odesílá požadavek. [autor] -13-
k tomu
BMEL kód, vygenerovaný Intalio Designerem a odpovídající procesu na obrázku 4:
$thisEventStartMessageResponse.body $thisEventStartMessageRequest.body/tns:input $thisEventStartMessageResponse.body/tns:output
-14-
BPEL je podobný programovacím jazykům a obsahuje např. aktivity větvení, smyčky, přiřazení proměnné, volání služby, vyvolání výjimky atd. Struktura XML souboru BPEL je kombinace XML elementů. Kořen BPEL souboru je element <process>, obsahující elementy definující další proměnné
, případně odkazy na spolupracující webové služby <partnerLinks>. Níže jsou uvedené XML elementy, které definují aktivity procesu, např.: -
- volá webovou službu,
-
- proces čeká na zprávu,
-
< reply> - po obdržení zprávy (element ) odešle odpověď,
-
<wait> - zastaví vlastní proces na definovanou dobu,
-
<exit> - ukončí běh procesu.
XML elementy definující strukturu vlastního procesu, např.: -
- zastaví proces. Čeká na příchod zprávy, která může být časově omezená,
-
- větvení procesu, proces pokračuje po splnění určité podmínky,
-
- počet opakování aktivit,
-
<while> < condition>[p] [Task] - opakování aktivit podle zadané podmínky.
Podrobná specifikace jazyka BPEL je uvedena v [4] a [5].
4. Analýza nástroje Intalio BPMS Nástroj pro modelování a běh BPMS procesů na platformě Intalio se skládá ze dvou částí, a to Intalio Designer a Intalio server (tato práce analyzuje Intalio Designer ve verzi 6.1.12 a Intalio server verze 6.2.4., poslední verze platné k datu této práce). Intalio Designer umožňuje navrhnout vlastní proces a tento proces pak integrovat s podpůrnými částmi tohoto procesu (napojení na databázi, formuláře, webové služby,…). Po vytvoření vlastního procesu v Intalio Designeru je možné provést nahrání (deployment) na běhové prostředí
Intalio Server, které realizuje
vlastní běh procesu. [6]
4.1. Intalio Designer Jedná se o návrhové prostředí, nástroj, v kterém je možné vytvořit BPMN notaci a následně převést do jazyka BPEL, bez potřeby psát jakýkoliv programovací kód („zero coding“). Intalio Designer je koncipován jako plug-in do vývojového -15-
prostředí Eclipse s grafickým rozhraním, podporující různé operační systémy (Windows, Linux, Mac Os X). Vytváření vlastních procesů je uživatelsky přívětivé („user friendly“). Navrhování vlastních procesů se provádí pomocí grafického „přetahování“ potřebných komponent („drag and drop“) z grafické palety a jejich propojováním. Základem je rozdělení vlastního procesu do paralelních částí, a to „swimlanes“. Těmto částem se přiřadí atribut „executable“ nebo „non-executable“, podle toho jestli se bude jednat o vlastní proces (atribut executable) nebo o pomocné části procesu (atribut non-executable). Pomocnými částmi procesu rozumíme webové služby, zadávání vstupních a výstupních hodnot uživateli, napojení na databázi, napojení na vstupně-výstupní uživatelské formuláře, atd. Pomocným částem procesu je poté třeba v určitém případě přiřadit vlastníka procesu (zaměstnanec, manager, inženýr, atd.), viz kapitola 4.1.2. Vlastníky procesů je třeba definovat v prostředí Intalio server, viz kapitola 4.2.1. V průběhu navrhování procesu jsou generovány webové služby, které jsou automaticky synchronizovány s celým procesem. Je možné vytvářet složité procesy s dělením do více větví a to napojením na JSP stránky a JMS. V průběhu tvorby procesu je třeba mapovat data, které probíhají celým procesem pomocí komponenty Data Mapper.
-16-
Obrázek 5: Grafické prostředí Intalio Designer. [autor] V levé části je zobrazena grafická paleta s komponenty pro tvorbu procesu, v pravé části vlastní proces. Deployment procesu na server se provádí pomocí horního menu tlačítkem deploy. Ve spodní části je zobrazen Data Mappper, Data Editor a SQL editory. [autor] Problémy, které se vyskytly, jsou shrnuty v kapitole 7. V dalších kapitolách jsou uvedeny klíčové komponenty pro návrh procesu v prostředí Intalio Designeru. 4.1.1. Popis napojení a komunikace s databází Databázové připojení zprostředkovává interakci mezi spuštěnými Intalio BPMS procesy a vlastní databází. Připojení se musí vytvořit samostatně. V prostředí Eclipse pomocí „Perspectives“ je třeba vytvořit připojení „Connection profile“ databáze a poté implementovat toto připojení na vlastní proces. Takto vytvořené databázové připojení umožňuje instancím procesu provádět SQL příkazy, tj. DML (Data Manipulation Language) a DDL (Data Definition Language), a také volat uložené SQL procedury. Tyto SQL příkazy a procedury mohou být poté přeneseny na Intalio BPMS server a pracovat ve dvou režimech, v režimu služby nebo v režimu události. Tento dvojí přístup k operacím byl vynucen skutečností, že BPEL proces může vyžadovat synchronní volání SQL příkazů nebo asynchronně přijímat SQL odpovědi (výsledky).
-17-
Nové Intalio databázové připojení (dostupné pro verze Intalio|Designer 5.2.1 a vyšší) je založeno na balíčku Eclipse Data Tools Platform (DTP). Hlavní možnosti tohoto nového DTP databázového připojení jsou následující [6]: -
integrace s Eclipse DTP. Nové databázové připojení založené na DTP, může využívat bohatou funkcionalitu SQL dostupnou v balíčku DTP,
-
automatická tvorba samostatných projektů, které mohou být umístěné na server,
-
použití SQL příkazů v režimu služba nebo událost,
-
přívětivý uživatelský interface. SQL příkazy v režimech služba a událost Hlavním rysem nového DTP databázového připojení je možnost použití
SQL příkazů ve dvou režimech, buď jako služba (service) nebo jako událost (event). Provedení SQL příkazu v režimu služeb, dovoluje procesu provést vlastní SQL příkaz (proces má plnou kontrolu nad prováděním SQL příkazu), přičemž Intalio vytvoří službu, která SQL příkaz obalí. Požadovaný proces poté zavolá tuto službu a provede SQL příkaz. Při provedení SQL příkazu v režimu události, server Intalio monitoruje přidávané záznamy v databázových tabulkách. Je-li přidán nový záznam, server informuje proces o této změně a procesu posílá tento nový záznam. Server provede nad záznamem požadované SQL příkazy a výsledek SQL příkazu je poté zaslán ke zpracování do procesu. Při provádění SQL příkazu v režimu události je možné nastavit frekvenci, podle které je SQL příkaz prováděn. 4.1.2. Editor formulářů (Form Editor) Editor formulářů je komponenta, pomocí které lze jednoduše vytvářet vstupní a výstupní uživatelské formuláře a tyto formuláře poté napojit na modelovaný podnikový proces. Tvorba formulářů se děje pomocí grafického „přetahování“ potřebných komponent („drag and drop“) z pohledu (View) Eclipse „Workflow Form Editor Palette“ do editoru formulářů („Form Editor“). V editoru formulářů je výběr ze šestnácti typů formulářů od těch jednoduchých až přes Radio-button, seznamy a vkládání hesel. Při tvorbě formulářů je třeba nastavit potřebné atributy, tj. jestli se jedná o vstupní, výstupní nebo vstupně-výstupní formulář (in, out, in-out). Dále je třeba vybrat popis formuláře, typ dat a rozměry formuláře. Po vytvoření formuláře
-18-
Intalio Designer vygeneruje dva soubory definující formulář, .form soubor a . xsd soubor. Tyto dva soubory je možné případně zkopírovat do jiného projektu, a tak opakovaně použít již vytvořené formuláře. [6] 4.1.3. Mapování dat procesu (Data Mapper) Po vytvoření BPM diagramu procesu je třeba provést tzv. mapování dat (dle názvosloví
Intalia
mapování
metadat)
jednotlivých
komponent
procesu
a stanovit, jakým způsobem budou data procesu vlastním procesem probíhat. Pod pojmem mapování dat se rozumí předávání dat procesu mezi jednotlivými BPM elementy a transformace prováděné nad těmito daty. Mapování dat se provádí pomocí komponenty Data Mapper. Data Mapper se skládá ze dvou částí (pohledů -„views“), obrázek 6 [6]: o
Mapper View: definuje, jaká data budou posílány dalším částem procesu. Provádí se jednoduchým kliknutím na požadovaný element (Flow Object), který
je
třeba
mapovat
a
dále
propojením
s požadovanými
vstupně-výstupními hodnotami, přičemž uprostřed je možné provést požadovanou transformaci nad daty dle Mapper Palette. Je také možné vytvořit vlastní XSD schéma popisující vlastní metadata. Toto schéma procesu lze jednoduše přiřadit přetažením (drag and drop) XSD souboru na požadované místo v diagramu. o
Mapper Palette: umožňuje transformovat mapovaná data. K transformaci používá předdefinované operátory, k dispozici je několik stovek těchto operátorů. Operátory je možné přetáhnout (drag-and-drop) do Mapper View, kde se provede požadovaná transformace. Intalio Designer umožňuje také psát vlastní XPath výrazy, případně provádět nad daty procesu vlastní XSLT transformace.
-19-
Obrázek 6: Ukázka mapování dat v komponentě Data Mapper. [autor] Data z aktivity OperationResponse (výstup z databázové tabulky, levá strana) jsou jednoduchým přetažením mapována na aktivitu
managerform (vstup do
formuláře managera, pravá strana). Uprostřed, ve volném prostoru, je možné nad daty provádět transformace. Task Metadata V průběhu tvorby procesu jsou u určitých elementů automaticky vygenerovány tzv. Task Metadata, XML metadata popisující blíže konkrétní element nebo proces. Jedná se většinou o metadata, které se používají pro běh procesu na Intalio serveru a nenastavují se. Např. u databázového spojení metadata connection, user, password
(heslo
pro
připojení
k databázi,
nastavené
automaticky
podle
databázového připojení), u formulářů taskId (automaticky nastavované při běhu procesu na serveru), taskState (stav procesu, automaticky nastavované při běhu procesu na serveru), creationDate (možnost nastavit vlastní datum, kdy byl proces vytvořen), atd. Podrobnější seznam je uveden v [6]. 4.1.4. Popis komunikace pomocí webových služeb Webové služby komunikují pomocí XML zpráv, které se řídí SOAP standardem.
Operace,
které
webová
služba
nabízí,
jsou
napsány
v jazyce
Web Services Description Language (WSDL). Intalio Designer představuje webovou službu jako WSDL dokument. WSDL soubory jsou generovány automaticky v průběhu návrhu procesu a mohou být, po nahrání procesu na server, využívány -20-
pro komunikaci mezi Intalio serverem a vzdálenou aplikací. V kapitole 6.2.2. jsou uvedeny problémy, které se při práci s webovými službami vyskytly. Webové služby mohou být tvořeny několika způsoby, tři nejvíce používané jsou RPC, SOA a REST. Intalio používá v základní verzi pouze RPC a SOA. Popis jejich tvorby je uveden [6]: •
RPC - Remote procedure calls - Vzdálené volání procedur: jedná se o interface pro distribuované volání funkcí (metod). Data jsou zapouzdřena v XML formátu. Základní jednotkou pro RPC Webové služby je WSDL operace.
•
SOA - Service-oriented architecture: Webové služby implementující architekturu podle SOA konceptu. Základní jednotkou je spíše zpráva (message) než operace.
Integrování webových služeb v Intalio Designeru se děje pomocí komponenty Intalio WSDL Browser. WSDL Browser má stromovou strukturu, což umožňuje snadný přístup k operacím. Při integrování WSDL služby do procesu je třeba rozlišovat, zdali proces službu vyvolá (invoke) nebo proces službu nabízí (provide). Standard
BPM 2.0 definuje, že interface webových služeb BPM systémů
by měl být generován „on the fly“, tj. vlastním BPM systémem v průběhu návrhu BPM procesu. Dále standard BPM 2.0 stanoví, že webové služby BPM systémů, by měly být nabízeny pro „inbound and outbound“ transakce. Tzn. BPM systém může vyvolat transakce přes jiný systém (systém třetí strany) pomocí webové služby (inbound), přičemž také systém třetí strany má možnost zavolat BPM proces pomocí interface webové služby (outbound). Dle mého názoru, tyto základní podmínky systém Intalio splňuje pouze za určitých podmínek, viz kapitola 6.2.2. a 7. [6] Webové služby daného procesu jsou na Intalio serveru přístupné na odkazu: http://localhost:8080/ode/, podrobněji kapitola 6.2.1. [6] 4.1.5. Instalace Intalio Designer 6.1.12 Stažení a instalace programu Intalio Designer byla provedena z webových stránek [6]. Vlastní instalace byla bez problémů. V rámci mé práce byla použita poslední verze Intalio Designer 6.1.12. Drobné problémy vzniklé při instalaci jsou popsány v kapitole 7.
-21-
Protože je Intalio Designer navržen jako plug-in prostředí Eclipse, je třeba vytvořit adresář $USER_HOME/workspace, do kterého budou ukládány vytvořené BPM projekty. Jak vytvořit BPM projekt je popsáno v [6].
4.2 Intalio Server Intalio Server poskytuje běhové prostředí pro vytvořené procesy, které byly navržené pomocí prostředí Intalio Designer. Intalio Server je založen na architektuře J2EE, používá server Apache ODE Tomcat. O překlad do strojového kódu („process byte code“) se stará ODE BPEL Compiler. Nahraný proces na serveru Intalio může být spuštěn prostřednictvím grafické rozhraní Intalio|BPMS konzole, přes databázové připojení, webovou službu nebo pomocí
formuláře
s
definovaným
uživatelem.
Vlastníci
jednotlivých
podpůrných procesů se mohou k probíhanému procesu připojit pomocí rozhraní Intalio|BPMS
Workflow
User
Interface.
Popisu
Intalio|BPMS
konzole
a Intalio|BPMS Workflow User Interface je věnována tato kapitola. 4.2.1. Instalace Intalio Server 6.2.4 Pro zpracování mé práce byla instalována poslední verze, Intalio server 6.2.4 [6]. Po nahrání a rozbalení balíčku Intalio server byla vytvořena adresářová struktura. Stručný popis nejdůležitějších adresářů: -
$BPMS_HOME/bin: soubory pro spouštění a zastavování serveru. Server se spouští souborem startup.bat (startup.sh pro Linux) a zastavuje se souborem shutdown.bat (shutdown.sh pro Linux).
-
$BPMS_HOME\logs\: logovací soubory serveru.
-
$BPMS_HOME\var\config\:
obsahuje
soubor
security.xml,
pro
nastavení
přístupových práv. -
$BPMS_HOME\var\deploy\: nahrané BPM procesy a jejich soubory (např. deploy.xml).
-
$BPMS_HOME\var\log\: chybové výpisy jednotlivých procesů.
-
$BPMS_HOME\conf\: obsahuje soubor server.xml, kde je možné nastavit konfiguraci serveru. Při instalaci se vyskytly problémy, které se podařilo odstranit a které jsou
popsány v kapitole 7. -22-
4.2.2. Popis funkcí Intalio server Intalio server je možné z uživatelského hlediska rozdělit na Intalio|BPMS konzole a Intalio|BPMNS Worflow User Interface. Intalio|BPMS konzole Po spuštění serveru (kapitola 4.2.1.) je Intalio BPMS konzole dostupná na URL adrese: http://localhost:8080/bpms-console. Port připojení lze změnit [6] (změna
je
poměrně
komplikovaná,
je
třeba
změnit
11
atributů
v sedmi
konfiguračních souborech). Po přihlášení (jméno: admin, heslo: changeit), které je možné změnit v souboru security.xml (kapitola 4.2.1.). Pomocí tohoto rozhraní je možné jednotlivé procesy spustit, smazat, aktivovat a deaktivovat. Také je možné monitorovat chyby procesu, které se zobrazují v obrázku procesního diagramu a sledovat detailní pohyb dat v procesech. Nastavení jmen účastníků procesů a jejich přístupových hesel pro přihlášení na Intalio BPMS konzoli nebo pro přístup k uživatelským formulářům je možné v souboru security.xml. Tímto způsobem se nastavují přístupová práva pouze u open-source verze. Pro placené verze je možné i napojení na ověřovací servery nebo programování přístupových práv. Intalio|BPMS konzole je rozdělena do tří částí [6]: 1. Processes – obrázek 7. Část týkající se řízení nahraných procesů, a to indikaci stavu procesů. Možné stavy procesů: o
Lifecycle (active – retired): indikuje, zdali je proces aktivní, tj. dostupný jako budoucí instance nebo ne.
o
In Progress: počet právě běžících procesů.
o
Failure: počet instancí procesů, které selhaly.
o
Suspended: počet pozastavených instancí.
o
Failed: počet instancí, které se zhroutily.
o
Terminated: počet instancí procesu, které skončily.
o
Completed: počet instancí, které byly dokončeny.
o
Total: celkový počet instancí, které jsou právě nahrány.
-23-
Část Processes dále obsahuje pět důležitých tlačítek: o
Start:
spouští
proces
(vytváří
jeho
instanci)
a
umožňuje
zadat
inicializační data procesu. o
Activate: aktivuje zvolený proces do stavu vhodného pro tvorbu instance procesu.
o
Retire: odebírá (deaktivuje) zvolený proces, tento je stále umístěný na serveru, ale nemůže z něj být vytvořena instance.
o
Deploy: rozmístění procesu.
o
Undeploye: odstranění procesu ze serveru.
Obrázek 7: Intalio|BPMS konzole, část Processes pro spouštění a mazání procesů s výše uvedenými atributy. [autor] 2. Instances – Tato část (obrázek 8) zobrazuje stav jednotlivých instancí spuštěných procesů, t.j. instancí které běží, svůj běh ukončily, případně skončily s chybou. Jednotlivé instance lze v této části manuálně ukončit, smazat, či znova vyvolat. Pomocí tlačítka Refine je možné filtrovat instance podle času. Kliknutím na instanci se zobrazí detaily instance a události instance (events), viz níže.
-24-
Obrázek 8: Intalio|BPMS konzole, část Instances s výše uvedenými atributy. [autor] 3. Tools – zde jsou uvedené navigační odkazy pro rychlý přístup k těmto funkcím: o
nalezení instance procesu (Find Process Instances)
o
řízení procesu (Manage Process Definition).
o
možnost nastavení úrovně hlášení chyb (Log4j configuration).
Události (Events): Intalio|BPMS server generuje v průběhu běhu procesu události, tzv. events, které umožňují detailněji sledovat, co se přesně při běhu procesu odehrává (obrázek 9). V událostech je možné podle časového pořadí sledovat, např. kdy byl proveden update databázové tabulky, kdy byl vyplněn uživatelský formulář nebo čas spuštění, ukončení procesu. Tyto události jsou persistentně uložené v databázi, a to pro každý spuštěný proces, což generuje poměrně velký objem dat a může způsobit přetížení serveru. [6] Z důvodů zvýšení výkonnosti a snížení přetížení serveru je možné definovat běh určitých procesů pouze v paměti (in-memory) a ne přes persistenci do databáze. Toto je možné přidáním xml elementu in-memory do souboru deploy.xml (process deployment deskriptor, viz kapitola 4.2.1.). Takto definované in-memory instance zvyšují podstatně výkon serveru, avšak mají také spoustu omezení. Mají krátkou životnost a nemohou se účastnit asynchronních výměn zpráv, tzn. mohou spoléhat pouze na výměnu zpráv na principu dotaz-odpověď (request-response). Dále tyto inmemory nejsou viditelné v rozhraní bpms-console. [6] -25-
Obrázek 9: Detailní výpis instance procesu, s výpisy událostí (events). [autor] Je zobrazen název instance, čas kdy byla instance spuštěna, mohou se zobrazit data, které instancí proběhly a BPM diagram procesu. Intalio|BPMS Workflow User Interface Jedná se o webový interface, který umožňuje po přihlášení autorizovaným uživatelům plnit úkoly procesu, dostávat upozornění o procesu (notification), případně procesy spouštět. Seznam autorizovaných uživatelů se nachází v souboru security.xml, viz kapitola 4.2.1. Tento webový interface je přístupný z url adresy http://localhost:8080/ui-fw, kde se po přihlášení jednotlivým uživatelům, podle jejich stupně oprávnění, zobrazí tři možnosti jak zasahovat do procesů (obrázek 13) [6]: -
Tasks: fronta přiřazených úkolů jednotlivým pracovníkům. Pracovník po vyvolání úkolu vyplní do formuláře požadované informace a formulář odešle.
-
Notifications: fronta upozornění o běžících procesech. Pracovník pouze potvrzuje přijetí jednotlivých upozornění.
-
Processes: Podle stupně oprávnění možnost spouštění procesů pracovníkem. Intalio|BPMS Workflow User Interface dále umožňuje přikládat před
odesláním k jednotlivým úkolům a notifikacím soubory a ukládat částečně vyplněné formuláře.
-26-
Výkon Intalio serveru Celková výkonnost Intalio serveru je variabilní a velmi závisí na různých faktorech [6]: 1. Návrh procesu a jeho složitost. 2. Úroveň persistence. 3. Protokolech transportní vrstvy a QoS (Quality of Services). 4. Latence webových služeb. 5. Úroveň hardware, počítačové sítě, JVM a operačního systému. Aktuální technické hodnoty výkonu Intalio serveru při různých zatíženích lze nalézt na [6].
4.3. Možnost monitorování KPI procesu Jedním z cílů této práce je vizualizace KPI procesu. V open-source verzi Intalio nenabízí žádnou možnost sledování hodnot procesu pomocí BAM (Businesss Activity Monitoring). Na serveru Intalio jsou k dispozici pouze obecné informace o instancích procesu (kapitola 4.2.2.). Intalio|BAM je jako volitelný modul nabízen placenou verzí Intalio, verze Intalio|BPMS Enterprise Edition. [6] Možným řešením je využít webové služby, které poskytuje server a které umožňují získávat informace o instancích procesu nebo předefinovat proces tak, aby průběžně zapisoval informace do databáze a KPI vizualizovat z této databáze. Na serveru Apache Tomcat jsou automaticky vygenerovány potřebné webové služby procesu WSDL. Integrace těchto webových služeb na Intalio server je založena na Apache Axis2. [6]
-27-
II Praktická část 5. Návrh ukázkového procesu v prostředí Intalio Na základě předchozí analytické části byl vytvořen níže popsaný výrobní proces výroby svařovaných trubek v automobilovém průmyslu. Proces byl vybrán a navržen tak, aby vyzkoušel co nejvíce funkčnost prostředí Intalio, a následně bylo možné doporučit, případně nedoporučit tento nástroj pro další implementace. Proces výroby svařovaných trubek zahrnuje: o
Napojení na databázi vyhledávání v databázové tabulce.
o
Větvení procesu podle určité hodnoty.
o
Zobrazení hodnot formulářem zadanému pracovníkovi.
o
Vkládání hodnot formulářem daným pracovníkem.
o
Update databázové tabulky z formuláře.
o
Notifikaci zadaného pracovníka o stavu procesu.
5.1. Proces výroby nerezových svařovaných trubek 5.1.1. Popis procesu Ukázkový proces definuje a monitoruje výrobu nerezových trubek svařováním laserem nebo vysokou frekvencí. Proces je spouštěn z konzole Intalio serveru po zadání čísla objednávky „order_id“. Objednávka tohoto zákazníka je vyhledána v databázové
tabulce „orders“ v databázi MySQL a podle
typu objednávky
je přiřazena na laserovou nebo frekvenční svařovací linku. Server Intalio zobrazí údaje objednávky operátorovi příslušné svařovací linky a jednotlivé objednávky čekají na vyřízení ve frontě. Po ukončení výroby operátor svařovací linky vyplní ve formuláři datum ukončení svařování, které se uloží do databázové tabulky „orders“. Po ukončení objednávky server Intalio informuje příslušného nadřízeného pracovníka a proces končí. 5.1.2. Postup tvorby procesu v Intalio Designer Při modelování procesu bylo postupováno podle ukázkových příkladů firmy Intalio [6] a dle zjištěných poznatků v analytické části této práce. Byly vytvořeny čtyři paralelní swimlanes v rámci jednoho procesu. Swimlane, kterým probíhá
-28-
proces, byla označena jako „executable“ a další tři, pomocné swimlanes, byly označeny „non-executable“ obrázek 10: -
Init swimlane: spuštění procesu (non-executable).
-
Process swimlane: vlastní podnikový proces (executable).
-
Database
swimlane: napojení a komunikace s databází MySQL
(non-executable). -
Forms swimlane: zobrazování formulářů (non-executable).
Při návrhu procesu bylo postupováno tímto způsobem: 1. Vytvoření potřebných swimlanes. 2. Vytvoření databázového připojení, databáze MySQL. 3. Vytvoření databázového elementu s SQL dotazem SELECT (operation.sql). 4. Vytvoření databázového elementu s SQL dotazem UPDATE (sql_inset.sql). 5. Vytvoření formulářů pro operátory svářecí linky (frequencyform.xform a laserform.xform). 6. Vytvoření formuláře pro upozornění managera linky (manageroutput.xform). 7. Vložení elementů a jejich propojení v swimlane a mezi swimlanes. 8. Přiřazení správných dat u elementů pomocí Data Mapper. 9. U formulářů nastavení vlastníka procesu.
Obrázek 10. Proces výroby trubek vytvořený pomocí Intalio Designer. [autor] Vytvoření procesu bylo intuitivní. Problémy vzniklé při vytváření procesu jsou shrnuty v kapitole 7. Po vytvoření procesu byl spuštěn Intalio server a vyvoláním funkce „deploy“ z menu bylo provedeno nahrání (deployment) procesu na server Intalio. Nahrání procesu na server proběhlo bez problémů. -29-
5.1.3. Spouštění a běh procesu na serveru Intalio Po spuštění serveru Intalio (kapitola 4.2.1.) a přihlášení se na server pomocí Intalio-konzole http://localhost:8080/bpms-console, obrázek 11 (jméno: admin, heslo: changeit) je spuštěn proces, viz kapitola 4.2.2. Poté je vloženo zadané číslo objednávky (obrázek 12). Operátor svařovací linky je přihlášen přes rozhraní http://localhost:8080/ui-fw
(jméno:
examples/lvalicek,
heslo:
password).
Operátorovi se zobrazí formulář svařování (v sekci Task, obrázek 13) a po skončení svařování doplní do zobrazeného formuláře datum ukončení svařování a formulář odešle. Následně je proveden UPDATE hodnot v databázi. Manager svařovací linky se přihlásí přes rozhraní http://localhost:8080/ui-fw (jméno:examples/ewilliams, heslo: password) a po ukončení svařovacího procesu obdrží upozornění (v sekci notification) o skončení svařování se zobrazením všech relevantních hodnot procesu.
Obrázek 11: Přihlašovací stránka na server Intalio. [autor]
Obrázek 12: Spouštění BPM procesu z konzole Intalio|BPMS. [autor] Po spuštění procesu tlačítkem start, je zadáno číslo objednávky a objednávka je odeslána na výrobní linku. -30-
Obrázek 13: Intalio|BPMS Workflow User Interface. [autor] V sekci Tasks, uživatelský formulář zobrazuje data procesu svařování, po vyplnění zbývající hodnoty (datum výroby) jsou tlačítkem Complete hodnoty formuláře předány procesu k dalšímu zpracování. Spuštění a běh procesu byl bezproblémový. Ve standardním prostředí (open-source Intalio) není možné zobrazit KPI a tak není možné monitorovat uvedený proces. Monitorovanými hodnotami procesu je ukončení ve správném termínu a splnění dodací lhůty požadované zákazníkem.
6. Možnosti nástroje pro vizualizaci KPI Jak bylo zmíněno dříve, jedním z cílů této práce bylo vytvořit grafické rozhraní pro sledování a vizualizaci klíčových hodnot podnikového procesu KPI. KPI procesu, neboli klíčové ukazatele výkonnosti procesu jsou nejdůležitější údaje o procesu, které je třeba sledovat a vyhodnocovat. Tvorbě a použití nástroje pro vizualizaci KPI (BAM) se věnuje tato kapitola. V našem ukázkovém příkladu pomocí nástroje monitorujeme svařovací proces a sledujeme plnění dodacích lhůt. Uživatel je informován o poměru plněných a neplněných objednávek. Pomocí grafického rozhraní jsou tyto hodnoty vhodně zobrazovány. Dále je umožněn, v případě potřeby, výpis detailních hodnot procesu.
6.1. Výběr technologie nástroje pro vizualizaci Protože technologie Intalio serveru je založena na spouštění a sledování procesů webovým rozhraním, připadá v úvahu pouze webově přístupná aplikace. V současnosti nejvíce rozšířené programové nástroje pro tvorbu webových aplikací -31-
jsou Java EE a PHP. Aplikace Intalio serveru je programována v Java EE, a tak z důvodů zachování stejného programátorského prostředí byla zvolena technologie Java EE, technologie JSF, a vývojové prostředí NetBeans. Dalším důvodem pro volbu této technologie jsou autorovi větší programátorské zkušenosti s technologií Java EE, právě v prostředí NetBeans.
6.2. Návrh aplikace Pro komunikaci se serverem Intalio se nabízí možnost využití webových služeb, které server Intalio generuje a databázových tabulek, do kterých se hodnoty ze sledovaného procesu ukládají. 6.2.1. Aplikace využívající webové služby Intalio Server
Intalio
jsou dostupné
po
generuje spuštění
webové
služby
webového
procesu serveru
automaticky. na
url
Služby adrese:
http://localhost:8080/ode/. Pomocí těchto služeb byl vytvořen klient webových služeb, který vzdáleně spouští daný proces, monitoruje jeho hodnoty a tyto hodnoty vyhodnocuje. V prostředí NetBeans byl vytvořen JAX-WS stub, který je napojen na webové služby
serveru
Intalio.
Hodnoty
procesu
jsou
zpracovávány
třídou
WeldingController.java (Managed Bean) a vypisovány na webovou stránku. Byla také vytvořena lokální kopie wsdl souboru „dbweldding2-Process.wsdl“, která má tyto výhody: - klient webových služeb je rychlejší a nemusí parsovat vzdálený WSDL soubor, - vzdálená kopie WSDL souboru nemusí být dostupná pro klienta, - snadnější přenositelnost. Popis hlavních tříd aplikace je uveden v kapitole III Přílohy. Podrobný popis implementace je uveden v přiložené dokumentaci javadoc, která byla vygenerována IDE prostředím NetBeans. Program byl vyvinut v prostředí NetBeans verze 7.1.1. 6.2.2. Problémy vzniklé při vývoji aplikace využívající webové služby Při vývoji aplikace komunikující se serverem Intalio pomocí webových služeb byly zjištěny vážné problémy pro případy, kdy server Intalio používá komponenty
-32-
formuláře. Při hledání řešení tohoto problému bylo vyzkoušeno několik možností, avšak ani jedno nevedlo k úspěšnému monitorování procesu. Postupně bylo vyzkoušeno: -
Vytvoření JAX-WS stubu v prostředí NetBeans a Eclipse.
-
Vytvoření JAXB stubu v prostředí NetBeans a Eclipse.
-
Použití WSO2 v prostředí Eclipse.
-
Použití Axis2-1.3 pro vytvoření JAX-WS stubu v prostředí Eclipse.
-
Použití Axis2-1.3 pro vytvoření JAXB stubu v prostředí Eclipse. Nejblíže k úspěšnému chodu aplikace bylo vytvoření JAXB stubu v prostředí
Eclipse za použití Axis2-1.3. Avšak aplikace nebyla funkční z důvodů nenalezení url formulářů (kapitola 7). Dále se vyskytly problémy při používání databázového připojení v režimu událost (kapitola 4.1.1). Autor chtěl tuto službu využít k automatickému spouštění výrobních procesů a zasílání nově uložených objednávek z databázové tabulky do procesu. Avšak nebylo možné nastavit databázový ovladač pro automatické zasílání nových záznamů. Při nastavování databázového ovladače, ovladač neuloží změnu nastavení a přepne se na defaultní hodnoty (kapitola 7). Proto jsem se rozhodl naimplementovat na server Intalio proces jednodušší (obrázek 14), který nevyužívá uživatelských formulářů a nepoužívá databázové připojení v režimu událost. Zadaný proces, který používá uživatelské formuláře, byl řešen napojením BAM aplikace na databázi.
Obrázek 14: Zjednodušení procesu BPM pro využití webových služeb Intalio. [autor] -33-
6.2.3. Aplikace využívající databázi Při vytváření webové aplikace Java EE byl použit klasický postup napojení na databázi. Hodnoty z databáze jsou persistentně napojeny na příslušnou entitu (třída Orders.java), která je řízena třídou Entity Manager (třída OrdersFacade.java) a hodnoty
jsou
zpracovávány
příslušnou
Managed
Bean
(třída
WeldingController.java) a zobrazeny v JSF stránce. Toto řešení také zabezpečilo vyřešení
případných
kolizí
v přístupu
k datům
v databázi.
JTA
transakce
jsou řízeny třídou Entity Manager a transakce jsou tak explicitně ošetřené pomocí kontejneru použitím entit. Prostředí Intalio, ve své open-source verzi, dovoluje napojení pouze na databázi Derby nebo MySQL. Z důvodů většího rozšíření a popularity databáze MySQL, byla použita tato databáze. Databáze obsahuje tabulku ORDERS, ze které jsou získávány hodnoty procesu Intalio. Popis implementace je uveden v přiložené a vygenerované dokumentaci javadoc, popis hlavních tříd je uveden v kapitole 12.2. Program byl vyvinut v prostředí NetBeans verze 7.1.1. 6.2.4. Návrh grafického rozhraní aplikace Návrh vychází z Katalogu požadavků (kapitola 10). Byla použita vizualizace pomocí barevných ikon, červená barva značí neplnění dodací lhůty a zelená barva plnění. Je možné použít libovolný způsob vizualizace KPI, takto zvolená vizualizace je pouze jeden z možných návrhů. Webová stránka aplikace je rozdělena na dvě části, část monitorovací a část informační, byly použity neutrální barvy bílá a modrá. V části informační je v horní části stránky umístěno logo Intalio a obrázek monitorovaného procesu. V části monitorovací, obrázek 15, se nachází diagram zobrazující plnění objednávek v procentech,
okénko
zobrazující
stav
monitorovaných
procesů
(možnost
podrobného výpisu neplněných procesů), a dále pak možnost výpisu zadané objednávky (obrázek 16) a možnost výpisu všech objednávek (obrázek 17).
-34-
Obrázek 15: Grafické rozhraní aplikace. [autor]
Obrázek 16: Výpis podrobného stavu zadané objednávky. [autor]
Obrázek 17: Výpis stavu všech objednávek. [autor] -35-
6.3. Testování aplikace Požadavky testování: -
Vzhledem k tomu, že se jedná pouze o vývoj základní verze rozšiřujícího modulu vizualizace KPI, testování bude provedeno v místě vývoje aplikace.
-
Akceptační test začne dne 12.5.2012.
-
Účastníci testování obdrží všechny informace a instrukce před tímto datem (12.5.2012).
-
Účastníci testování budou provádět normální uživatelské úkony na dodaném software.
-
Účastníci testování budou provádět testy a dokumentovat výsledky.
-
Opravené chyby budou opět testovány.
-
Testování bude provedeno na platformě Windows 7 a UNIX. Účastníci testování jsou osoby zvyklé používat webové aplikace jako
uživatelé. Scénář testování: Uživatel sleduje dodržení lhůty dodání procesu výroby svařovaných trubek. Testování bude provedeno podle následujícího scénáře: -
nahrání aplikace do webového prohlížeče,
-
stabilnost webových stránek,
-
navigace mezi jednotlivými webovými stránkami,
-
zobrazení správné barvy (zelená / červená) u monitorovaných objednávek v závislosti na splnění lhůty dodání jednotlivých objednávek,
-
výpis všech objednávek nesplňujících lhůtu dodání v červené barvě,
-
správné monitorování splněných / nesplněných objednávek v závislosti na splnění lhůty dodání jednotlivých objednávek,
-
výpis veškerých objednávek a správné zobrazení barvy (zelená / červená) v závislosti na splnění lhůty dodání jednotlivých objednávek,
-
správná funkčnost paginace (stránkování) výpisu,
-
zadávání libovolných dat do formuláře „Výpis stavu vybrané objednávky“,
-
standardní a nestandardní ukončení práce s webovou aplikací.
-36-
Výsledky testování aplikace Webové stránky byly testovány podle výše uvedeného scénáře zvlášť v prohlížečích Mozzila Firefox a Internet Explorer. Při testování nevznikly žádné závažnější problémy, které by bylo třeba zaznamenat a software je funkční. Transakčnost databáze je zajištěna použitím frameworku JSF a entit.
7. Problémy a nalezené chyby při implementaci V předchozích kapitolách jsem ukázal, že aplikace je snadná na instalaci a používání. Při implementaci podnikových procesů a vytváření konečné aplikace byly však zjištěny níže uvedené chyby systému Intalio. Výpis chyb zde uvádím jako doporučení pro případné další zájemce o tento produkt a jeho využití. Tyto chyby se vztahují k verzi Intalio Designer 6.1.12 a Intalio Server 6.2.4.: 1. Při prvním spuštění a přihlášení se na server Intalio jako localhost je třeba upravit xml element v souboru /conf/server.xml, jinak není možné se přihlásit. V souboru server.xml je nutné přidat atribut address="0.0.0.0" do elementu : . 2. Při spouštění Intalio aplikace v prostředí Windows je lépe mít Intalio Designer a Intalio server nainstalovaný pouze v adresáři C:/ a ne v C:/Program Files. Tímto se předejde problémům nefunkčnosti z důvodů jiných přístupových práv každého adresáře. 3. Při nastavení java proměnných prostředí (JAVA_HOME a JRE_HOME) je třeba používat java 1.6. Při použití java 1.7 dochází k nefunkčnosti formulářů (při použití formuláře Intalio hlásí chybu 404), jinak zbytek aplikace běží v pořádku. 4. Problémy se vyskytly při ukládání a kopírování BPM diagramů v prostředí Intalio Designer. Často se stává, že menší modifikace v již odladěném BPM diagramu způsobí nefunkčnost, přičemž je třeba celý diagram překreslit, -37-
popřípadě ručně upravit vygenerovaný xml soubor *.bpel. Toto je pravidlem po podstatné změně mapování dat v již odladěném diagramu. Intalio Designer nabízí funkci „Build and clean“, která by tento problém měla vyřešit, ale v praxi to tak není. Z již vytvořeného grafického BPM diagramu Intalio Designer neumožňuje nové generování *.bpel souboru. Na internetových fórech je toto popisováno jako častá chyba BML grafických editorů, kdy konverze z grafického rozhraní do xml souboru u složitějších schémat není vždy snadná. Nejlépe je vytvořit nový projekt a do tohoto projektu zkopírovat již vytvořené databázové připojení, formuláře, .xsd schéma dat a vytvořit diagram nový: http://bpms.intalio.com/forums/intalio-bpm-6.0/removing-ajaxforms/view.html. 5. Také při kopírování (za účelem např. zálohování) jednotlivých BPMS projektů v prostředí Intalio Designer dochází někdy ke konfliktu jmen souborů, které Intalio Designer generuje (stejná jména některých souborů nebo příliš dlouhá jména souborů) a výsledné projekty nejsou funkční. 6. Při použití SQL dotazu UPDATE je třeba dát dynamicky přiřazované parametry dotazu do závorek, tj. „(x)“ a ne „x“, jinak není dotaz funkční a systém hlásí chybu. 7. Používání
webových
služeb
je
na
adrese
Intalio
serveru
http://localhost:8080/ode/. Webové služby je třeba získat z odkazu Deployed Bundles a ne, jak je avizováno na stránkách Intalio, z odkazu Process Services. 8. Někdy je třeba upravit xml, xsd soubory projektu (wsdl, vstupní data) při deploymentu složitějších diagramů. 9. Nutné je zkontrolovat, zda-li se při použití webové služby a soap vygenerovalo do příslušného wsdl souboru správná location address. V opačném případě, je potřeba tuto případně přepsat. Chybně např.: <soap:address location="http://www.example.org/"/> Správně: <soap:address location="http://localhost:8080/ode/processes/ DatabaseWelding2/getdata"/>.
-38-
10. Formuláře: při spouštění formuláře create – end task se občas vyskytuje chyba: <Exception>org.apache.axis2.AxisFault: The service cannot be found for the endpoint reference (EPR) http://localhost:8080/ode/processes/workflow/ib4p V případě této chyby je třeba ověřit, zda je na serveru Intalio proveden deploy procesu Task Manager. Úlohou Task Manager je řídit formuláře (které běží nezávisle na vlastním business procesu) a stává se, že záhadným způsobem zmizí. Pokud Task Manager neexistuje, je třeba najít v zazipované aplikaci Intalio serveru tento proces a zkopírovat Task Manager do adresáře /var/deploy a restartovat server. Podrobněji: http://bpms.intalio.com/forums/intalio-bpm-6.0/re-the-service-cannot-befound-for-the-endpoint/view.html 11. Při použití webových služeb serveru Intalio se stává, že Intalio vygeneruje webové služby, kde jsou stejná čísla portů v elementech: IWAB0399E Error in generating Java from WSDL:
java.io.IOException: Two
<port> elements with the same name "xformPort" found. Hint: choose unique names among all port elements in a WSDL document. Tento problém se autorovi nepodařilo vyřešit. Podrobněji je popsán: http://bpms.intalio.com/forums/intalio-bpms-5.0/taskmanger.wsdl-having-2port-names-with-same-name/view-3.html.
12. Intalio vygeneruje občas nevalidní webové služby (nevalidní .wsdl soubor). Toto je možné obejít použitím Axis2, nejlépe verzí Axis2-1.3, která dokáže nevalidní .wsdl soubory zpracovat. 13. Intalio občas vygeneruje webové služby u složitějších procesů s velice dlouhým názvem, případně se stejným jménem elementů, pak jde jen velmi obtížně tvořit stub webových služeb, případně i kopírovat tyto soubory, viz.: http://netbeans.org/bugzilla/show_bug.cgi?id=102685
-39-
14. U BPM procesů obsahující formuláře, vygenerované webové služby odkazují na jméno a url jednotlivých formulářů, kde je jméno náhodně vygenerované např: <wsdl:binding
name="WFmagic_Ns5FUJLWEeGEs8NiwSznggServiceBinding"
type="laserform1:Process"> <soap:address location="http://localhost:8080/ode/processes/WeldingProcess/processdiagra m/process/forms/WFmagic_Ns5FUJLWEeGEs8NiwSzngg"/> Náhodně vygenerované jména způsobují problém při zpracovávání webových služeb a prostředí NetBeans i Eclipse poté hlásí neexistující url odkaz. 15. Jestliže se v aplikaci Intalio nezobrazují formuláře, doporučuje se ve webovém prohlížeči vymazat historii a cookies: http://bpms.intalio.com/forums/intalio-bpp-6.0-beta/re-ui-fw-errormessage/view-23.html. 16. Pokud se stále problémy s formuláři nedaří vyřešit, doporučuje se upravit soubor server.xml, do elementu vložit atribut : protocol="org.apache.coyote.http11.Http11Protocol". Viz: http://bpms.intalio.com/forums/installation/log-in-intalio-server/view.html 17. Při použití databázového připojení, kde SQL příkaz je nastaven v režimu událost (kapitola 4.1.1.). Databázový ovladač nereaguje na provedené změny v nastavení ovladače a ukládá defaultní hodnoty. Dále se nepodařilo nakonfigurovat ovladač tak, aby inicializoval proces při přidání nového záznamu do databázové tabulky. Při spuštění procesu databázový ovladač např. spustí do procesu všechny záznamy z tabulky, nově přidané záznamy však ignoruje.
-40-
8.
Závěr V této práci jsem provedl analýzu nástroje Intalio a problematiku modelování
podnikových procesů na této platformě. Po teoretické stránce byly v práci shrnuty dosavadní přístupy k modelování podnikových procesů pomocí BPMN a byla popsána tvorba BPM procesů na platformě Intalio. Z praktického hlediska práce popisuje vlastní tvorbu středně složitého podnikového procesu pomocí nástrojů Intalio a popisuje aplikaci sledování KPI (BAM) a problémy s tím spojené. Všechny stanovené cíle se mně, i přes některé komplikace (viz kapitola 6.2.2. a 7.), povedlo naplnit. Byly vyzkoušeny dvě možnosti, jak sledovat KPI procesu výroby svařovaných trubek, pomocí webových služeb a pomocí databázové tabulky. Původní cíl práce, vytvořit aplikaci, která bude komunikovat se serverem Intalio pomocí webových služeb se nepodařilo splnit. Problémy spočívaly v nestabilitě prostředí Intalio a při realizaci se vyskytly problémy, které jsou popsány v příslušných kapitolách (kapitola 6.2.2., 7.). Proto bylo vytvořeno náhradní řešení, ve kterém jsou hodnoty procesu pro sledování KPI získávány z databázové tabulky. Autor práce tak vytvořil řešení dvě. První řešení, které komunikuje se serverem Intalio pomocí webových služeb, je založeno na zjednodušeném BPM procesu. V tomto případě se jedná pouze o ukázku, která nemá uplatnění v praxi. Druhé řešení napojené na databázi je plně funkční a splňuje cíle této práce. Přínosy práce je možné rozdělit na praktické a teoretické. Teoretickým přínosem je popsání hlavních komponent nástroje Intalio. Praktickým přínosem je reálné ověření funkčnosti open-source nástroje Intalio a popsání postupu modelování BPM procesů na této platformě a nástroje BAM včetně zdokumentování chyb, které systém Intalio obsahuje. Výhodou open-source nástroje Intalio je jeho použití
zdarma.
Nevýhodou
je
poměrně
velká
chybovost
a
nedostatečná
dokumentace open-source verze. Práci mohou využít společnosti, které uvažují o vlastní implementaci open-source nástroje Intalio. Mohla by být vhodná i jako obecná příručka při tvorbě procesů
v
tomto prostředí.
Práce
poskytuje
základní
přehled
o
výhodách
a nevýhodách tohoto nástroje. Na základě zjištěných poznatků v praktické části se domnívám, že je open-source systém Intalio použitelný pro malé a střední podniky, kde nedochází k častým změnám namodelovaných podnikových procesů
-41-
a kde je vizualizace KPI těchto procesů provedena získáváním dat z databázových tabulek. Osobním přínosem této práce bylo seznámení se s praktickým použitím software pro modelování podnikových procesů Intalio a napojení se na tento systém externí aplikací, která sleduje hodnoty namodelovaných procesů. Dále bylo zajímavé řešení chyb tohoto software (kapitola 7.), kdy jsem si uvědomil, že počítačové systémy jsou nedokonalé a odstraňování chyb nemusí být vždy triviální. Při vypracování práce jsem se seznámil s novou technologií a prohloubil své znalosti v této oblasti.
-42-
9. Použité zdroje [1] BPR Online learning center-sponsored by Prosci. Adresa neuvedena, stát USA,tel.: 970.203.9332 Posl. edit. 2010[cit. 2010]. Dostupné z WWW:. [2] BPM 2.0, Ismael Ghalimi, IT web blog: adresa neuvedena. Posl. edit. 2012-01 [cit. 2006-02-01]. Dostupné z WWW: . [3] Object Management Group Portals. Kontakt: Mr. Fred A. Cummins, Agile Enterprise Design, [email protected] Posl. edit. 2010-11-08. Dostupné z WWW: . [4] Object Management Group / Business Process Management Initiative. Adresa neuvedena. Kontakt: [email protected]. Posl. edit. 2011-12. Dostupné z WWW: . [5] OASIS standards WS-BPEL. Adresa: 25 Corporate Drive Suite 103, Burlington, MA 01803-4238, USA Posl. edit. 2007-04-11. Dostupné z WWW: . [6] Intalio community Website. Adresa: 644 Emerson Street, Suite 200 Palo Alto, CA 94301, USA. Posl. edit. 2012-01-04. Dostupné z WWW: < URL http://community.intalio.com >. [7] [Eckerson, 2009] ECKERSON, Wayne. Characteristics of Effective KPIs. Business Intelligence Journal [online]. 2009, 14, 1, [cit. 2010-03-30]. Dostupné z WWW: . ISSN 1547-2825. [8] BPM blog. Adresa: neuvedena. Posl. edit. 2011-03-07. Dostupné z WWW: < URL http://www.procesy.cz >. -43-
III Přílohy 10. Katalog požadavků aplikace monitorující KPI Systém na sledování KPI podnikového procesu výroby svařovaných trubek slouží k sledování KPI procesu svařování v automobilovém průmyslu. Sledování provádí odpovědný vedoucí pracovník, kdy všechny požadavky vznikají v kanceláři vedoucího pracovníka. Aplikace je webově přístupná a tak všechny požadavky vznikají přístupem přes webovou stránku. 1.
Aplikace zobrazuje hodnoty procesu svařování běžící na serveru Intalio, hodnoty procesu získává z databázové tabulky.
2.
Není-li při svařování splněna dodací lhůta, systém vyplní příslušné okénko webové stránky červenou barvou a doplní nápis „neplnění“.
3.
Pokud je splněna dodací lhůta, příslušné okénko sledování procesu se vyplní zelenou barvou s nápisem „plnění“.
4.
Vedoucí pracovník může při neplnění zobrazit podrobný výpis neplněných objednávek.
5.
Systém automaticky zobrazuje procento plněných a neplněných objednávek pomocí grafického diagramu a číselně.
6.
Vedoucí pracovník může zobrazit výpis všech objednávek. Neplněné objednávky se ve výpisu zobrazí červeně, plněné objednávky zeleně.
7.
Výpis stavu konkrétní objednávky je možný podle čísla objednávky. Podle plnění se výpis zobrazí zeleně (plnění) nebo červeně (neplnění).
Na aplikaci monitorování procesu jsou kladeny funkční a nefunkční požadavky. Funkční požadavky: -
monitorování svařování,
-
vyhodnocování splnění dodací lhůty,
-
komunikace se serverem Intalio (aplikace1),
-
komunikace s databází MySQL (aplikace 2),
Nefunkční požadavky nebyly definovány.
-44-
11. Model jednání aplikace – Use Case Model jednání je velmi jednoduchý, proto není dále rozebírán. uc Primary Use Cases Monitoring svařování
Prohlížet záznam v ybrané obj ednáv ky
Prohlížet záznamy v šech obj ednáv ek
«include»
Vyhledat záznam obj ednáv ka
«include»
Vyhledat záznamy v šech obj ednáv ek
Uživ atel Prohlížet záznamy neplněných obj ednáv ek
«include»
Vyhledat záznamy neplněných obj ednáv ek
«include» Monitorov at záznamy plnění obj ednáv ek
Obrázek 18: Model jednání aplikace sledování KPI procesu svařování. [autor]
12. Návrh hlavních tříd aplikace Návrh hlavních tříd aplikace vychází z návrhu zadání (kapitola 5. a 6.), kde je požadováno pouze monitorování procesu, a tak jsou použity pouze metody pro zobrazení dat.
12.1.
Návrh hlavních tříd, řešení s webovými službami
Hlavní třídy používají návrhový vzor Model-View-Controller (MVC), kde třída WeldingController.java komunikuje s JAX-WS stubem webových služeb a zobrazuje hodnoty procesu na příslušnou JSF stránku.
-45-
class session session::WeldingController PaginationHelper ~ ~ -
color: String current: MoveDataResponse firstOrderId: int = 45 items: DataModel = null lastOrderId: int = 60 MoveDataResponseWrongList: List<MoveDataResponse> = null orderId: int ordersList: List<MoveDataResponse> = null pagination: PaginationHelper selectedItemIndex: int service: CanonicServiceForinit
+ + + + + + + + + + + + + + + + + + + +
eventStartMessage(webservice.MoveDataRequest) : MoveDataResponse findRange(int, int) : List <MoveDataResponse> getAsString(FacesContext, UIComponent, Object) : String getCustomersWrongList() : List<MoveDataResponse> getItems() : DataModel getOrderId() : int getOrders() : List<MoveDataResponse> getPagination() : PaginationHelper getProcessesState() : String getProcessesStateColor() : String getRowColor() : String getRowColorAll() : String getRowWrongColor() : String getSelected() : MoveDataResponse getWebService() : String next() : String previous() : String recreatePagination() : void setOrderId(int) : void setRowWrongColor(String) : void validateOrderId(FacesContext, UIComponent, Object) : void viewRecord() : String WeldingController()
+ + + + -pagination + + + + + +
page: int pageSize: int createPageDataModel() : DataModel getItemsCount() : int getPageFirstItem() : int getPageLastItem() : int getPageSize() : int isHasNextPage() : boolean isHasPreviousPage() : boolean nextPage() : void PaginationHelper(int) previousPage() : void
JsfUtil + + + + + + +
addErrorMessage(Exception, String) : void addErrorMessage(String) : void addErrorMessages(List<String>) : void addSuccessMessage(String) : void getObjectFromRequestParameter(String, Converter, UIComponent) : Object getRequestParameter(String) : String getSelectItems(List>, boolean) : SelectItem[]
Obrázek 19: Diagram tříd aplikace využívající webové služby. [autor]
-46-
class w ebserv ice Service
«interface» Forinit
CanonicServ iceForinit ~ ~
CANONICSERVICEFORINIT_EXCEPTION: WebServiceException {readOnly} CANONICSERVICEFORINIT_QNAME: QName = new QName("http... {readOnly} CANONICSERVICEFORINIT_WSDL_LOCATION: URL {readOnly} e: WebServiceException = null url: URL = null
+ + + + + + + +
__getWsdlLocation() : URL CanonicServiceForinit() CanonicServiceForinit(WebServiceFeature) CanonicServiceForinit(URL) CanonicServiceForinit(URL, WebServiceFeature) CanonicServiceForinit(URL, QName) CanonicServiceForinit(URL, QName, WebServiceFeature) getCanonicPort() : Forinit getCanonicPort(WebServiceFeature) : Forinit
+
eventStartMessage(MoveDataRequest) : MoveDataResponse
Obj ectFactory
Mov eDataResponse + + +
# # # # # # # # # # # #
customerId: BigDecimal customerName: String deliveryDate: XMLGregorianCalendar id: BigDecimal manufacturingDate: XMLGregorianCalendar material: String orderId: BigDecimal quality: String quantity: BigDecimal status: String thickness: String tubeLength: String
+ + + + + + + + + + + + + + + + + + + + + + + +
getCustomerId() : BigDecimal getCustomerName() : String getDeliveryDate() : XMLGregorianCalendar getId() : BigDecimal getManufacturingDate() : XMLGregorianCalendar getMaterial() : String getOrderId() : BigDecimal getQuality() : String getQuantity() : BigDecimal getStatus() : String getThickness() : String getTubeLength() : String setCustomerId(BigDecimal) : void setCustomerName(String) : void setDeliveryDate(XMLGregorianCalendar) : void setId(BigDecimal) : void setManufacturingDate(XMLGregorianCalendar) : void setMaterial(String) : void setOrderId(BigDecimal) : void setQuality(String) : void setQuantity(BigDecimal) : void setStatus(String) : void setThickness(String) : void setTubeLength(String) : void
createMoveDataRequest() : MoveDataRequest createMoveDataResponse() : MoveDataResponse objectFactory()
Mov eDataRequest #
orderId: String
+ +
getOrderId() : String setOrderId(String) : void
Obrázek 20: Diagram tříd klienta webových služeb. [autor]
12.2. Návrh hlavních tříd, řešení pomocí databáze V aplikaci je použita hlavní entita, třída Orders.java, která je persistentně namapována na databázovou tabulku orders. Hlavní třídy používají návrhový vzor Model-View-Controller
(MVC),
kde
třída
WeldingController.java
persistentně s databází přes Entity Manager a návrhový vzor Fasáda.
-47-
komunikuje
class entity T Converter
AbstractFacade
«static» WeldingController::OrdersControllerConv erter
-
entityClass: Class
+ + + + + + + # +
AbstractFacade(Class) count() : int create(T ) : void edit(T) : void find(Object) : T findAll() : List findRange(int[]) : List getEntityManager() : EntityManager remove(T) : void
+ + ~ ~
Serializable Orders -
OrdersFacade -
em: EntityManager
# +
getEntityManager() : EntityManager OrdersFacade() -ejbFacade
Serializable
-
color: String current: Orders ejbFacade: entity.OrdersFacade items: DataModel = null orderId: int ordersList: List = null ordersWrongList: List = null pagination: PaginationHelper selectedItemIndex: int
+ + + + + + + + + + + + + + + + + + + + + +
getCustomersWrongList() : List getFacade() : OrdersFacade getGoodOrdersNumber() : int getGoodOrdersWidth() : int getItems() : DataModel getOrderId() : int getOrders() : List getPagination() : PaginationHelper getProcessesState() : String getProcessesStateColor() : String getRowColor() : String getRowColorAll() : String getRowWrongColor() : String getSelected() : Orders getWrongOrdersNumber() : int next() : String prepareView() : String previous() : String recreateModel() : void setOrderId(int) : void setRowWrongColor(String) : void validateOrderId(FacesContext, UIComponent, Object) : void viewRecord() : String WeldingController()
customerId: int customerName: String deliveryDate: Date id: Integer manufacturingDate: Date material: String orderId: int quality: String quantity: Integer serialVersionUID: long = 1L {readOnly} thickness: String tubeLength: Integer
+ + + + + + + + + -current + + + + + + + + + + + + + + + + + + +
WeldingController
equals(Object) : boolean getCustomerId() : int getCustomerName() : String getDeliveryDate() : Date getId() : Integer getManufacturingDate() : Date getMaterial() : String getOrderId() : int getQuality() : String getQuantity() : Integer getThickness() : String getTubeLength() : Integer hashCode() : int Orders() Orders(Integer) Orders(Integer, int, int) setCustomerId(int) : void setCustomerName(String) : void setDeliveryDate(Date) : void setId(Integer) : void setManufacturingDate(Date) : void setMaterial(String) : void setOrderId(int) : void setQuality(String) : void setQuantity(Integer) : void setThickness(String) : void setTubeLength(Integer) : void toString() : String
util::PaginationHelper -pagination -
util::JsfUtil + + + + + + +
getAsObject(FacesContext, UIComponent, String) : Object getAsString(FacesContext, UIComponent, Object) : String getKey(String) : java.lang.Integer getStringKey(java.lang.Integer) : String
addErrorMessage(Exception, String) : void addErrorMessage(String) : void addErrorMessages(List<String>) : void addSuccessMessage(String) : void getObjectFromRequestParameter(String, Converter, UIComponent) : Object getRequestParameter(String) : String getSelectItems(List>, boolean) : SelectItem[]
+ + + + + + + + + +
page: int pageSize: int createPageDataModel() : DataModel getItemsCount() : int getPageFirstItem() : int getPageLastItem() : int getPageSize() : int isHasNextPage() : boolean isHasPreviousPage() : boolean nextPage() : void PaginationHelper(int) previousPage() : void
Obrázek 21: Diagram tříd aplikace při napojení na databázi. [autor]
-48-
13. Instalační příručka Soubor IntalioWeldingDB.war nebo IntalioSmallWeldingWS.war je třeba zkopírovat do adresáře aplikačního serveru (např. u serveru Apache Tomcat, adresář webapp, viz: http://tomcat.apache.org/tomcat-6.0-doc/deployer-howto.html.
Po
spuštění
(restartu) aplikačního serveru dojde k automatickému „deploymentu“ (rozprostření) aplikace „Monitoring svařování“ na server, je spuštěna celá aplikace a může dojít k jejímu používání. Informace, jak instalovat aplikační server je možné nalézt na příslušných
webových
stránkách
(např. pro Apache
Tomcat:
http://tomcat.apache.org/tomcat-5.5-doc/setup.html). V případě instalace aplikace u internetového poskytovatele je třeba si vyžádat od poskytovatele těchto služeb adresář, do kterého se má nahrát aplikace. Postup je uveden výše. U řešení napojení na databázi je třeba vytvořit databázové tabulky podle přiložených
sql
skriptů.
Spojení
s databází
MySQL
je
přes
databázový
pool ConnectionPool, který vytváří a řídí spojení aplikačního serveru s databází. Při instalaci je třeba nastavit databázové spojení JNDI configuration. A požadované spojení je třeba uvést do souborů web.xml, persistence.xml. Postup pro server Apache Tomcat: http://tomcat.apache.org/tomcat-5.5-doc/jndi-datasource-examples-howto.html Spouštění serveru Intalio je uvedené v kapitole 5.1.3.
-49-
14. Uživatelská příručka Aplikace
Monitoring
svařování
je
uživatelsky
přívětivá
a
používání
je intuitivní. Spuštění aplikace se provádí přes webový prohlížeč, adresu url sdělí uživateli oprávněný správce podnikového systému. Ovládání aplikace se děje pomocí menu umístěném v pravé části obrazovky. Menu obsahuje tyto komponenty: 1. Výpis stavu vybrané objednávky: po zadání čísla objednávky systém vypíše stav požadované objednávky a detaily objednávky. 2. Výpis všech objednávek: systém vypíše všechny objednávky, barva každé objednávky informuje o splnění/nesplnění dodací lhůty. Stránkování je nastaveno na deset objednávek na stránku. 3. Monitorování stavu výrobního procesu: systém monitoruje stav procesu svařování a podle barvy informuje uživatele o plnění (zelená barva), neplnění (červená barva) dodací lhůty objednávek. Při neplnění je možné vypsat seznam všech neplněných objednávek. 4. Grafické vyjádření poměru plněných / neplněných objednávek. 5. Návrat na hlavní stránku.
-50-
15. Seznam použitých zkratek BAM Business Activity Monitoring BPD Business Process Diagram BPEL Business Process Execution Language BPEL4WS Business Process Execution Language for Web Services BPM Business Process Model BPMI Business Process Management Initiative BPMN Business Process Model and Notation BPMS Business Process Management System DTP Data Tools Platform HIM Human Interaction Notation IDE Integrated Development Environment KPI Key Performance Indicators Java SE Java Standard Edition Java RE Java Runtime Environment JMS Java Message Service JSF Java Server Faces JSP Java Server Pages OMG Object Management Group SAX Simple API for XML SQL Structured Query Language SOAP Simple Object Access Protocol REST Representational State Transfer RPC Remote Procedure Call UML Unified Modeling Language WS Web Service WSDL Web Service Definition Language XML Extensible Markup Language
-51-
16. Seznam obrázků Obrázek 1. Ukázka veřejného procesu [4].……………………………… ............... 10 Obrázek 2. Základní grafické elementy Flow Objects [6]…..………… .............. 11 Obrázek 3. Ukázka části procesu [6] ....…………………………………… ............ 12 Obrázek 4. Jednoduchý BPM diagram [autor]……..………...………….. ............ 13 Obrázek 5. Grafické prostředí Intalio Designer [autor]……..………..... ............ 17 Obrázek 6. Ukázka mapování dat v komponentě Data Mapper [autor] .………20 Obrázek 7. Intalio BPMS konzole, část Processes [autor]……....…..... ............ 24 Obrázek 8. Intalio BPMS konzole, část Instances [autor]………..……. ............ 25 Obrázek 9. Detailní výpis instance procesu [autor]…………………………..…… 26 Obrázek 10. Proces výroby svařovaných trubek [autor]. ................................ 29 Obrázek 11. Přihlašovací stránka na Intalio|BPMS konzoli [6].……… ........... 30 Obrázek 12. Spouštění BPM procesu z konzole Intalio BPMS [6]…… ............ 30 Obrázek 13. Intalio|BPMS Workflow User Interface [6]………………………. .... 31 Obrázek 14. Zjednodušený BPM proces [autor]………………………….............. 32 Obrázek 15. Grafické rozhraní aplikace [autor] ………………………… ............. 35 Obrázek 16. Výpis podrobného stavu zadané objednávky [autor]…… ............ 35 Obrázek 17. Výpis stavu všech objednávek [autor]..………………….. .............. 35 Obrázek 18. Model jednání aplikace sledování KPI procesu [autor]…………. .. 45 Obrázek 19. Diagram tříd aplikace využívající webové služby. [autor]............ 46 Obrázek 20. Diagram tříd klienta webových služeb. [autor] …….…… ............ 47 Obrázek 21. Diagram tříd aplikace při napojení na databázi. [autor]. ............ 48
-52-
17. Přílohy bakalářské práce Součástí této práce je přiložené CD, kde jsou uloženy: -
vytvořené projekty Intalio,
-
kód programu vytvořené aplikace včetně *.war souborů a javadoc,
-
.sql skripty pro vytvoření a naplnění databázové tabulky,
-
bakalářská práce v elektronické podobě.
-53-