Řízení podnikových procesů: ukázková žádost o hypotéku

26. 5. 2014
Doba čtení: 11 minut

Sdílet

Podnikové procesy jsou trendem ve vývoji informačních systémů. V prvním díle byl stručně představen produkt Red Hat JBoss BPM Suite 6. V tomto díle se již zaměříme na konkrétní ukázku, na které si demonstrujeme reálný příklad využití BPM, konkrétně půjde ukázkový projekt modelující proces žádosti o hypotéku.

Stažení komponent

Budou staženy tyto komponenty:

  • Instalátor BPM Suite – nainstaluje Red Hat JBoss Enterprise Application Platform (EAP), do něj nasadí Red Hat JBoss BPM Suite a provede konfiguraci
  • BPM Example – je ukázkový projekt, který je možné otevřít, upravit, nasadit a spouštět v Business Central, zahrnuje také pomocnou webovou službu a pomocné ukázkové procesní instance

Přejděte na stránku https://www.jboss.org/pro­ducts/bpmsuite.html, je nutné být přihlášen na stránkách jboss.org. Pokud nemáte účet, lze se bezplatně zaregistrovat.

  • Stáhněte Red Hat JBoss BPM Suite 6.0.1 (velké zelené tlačítko).
  • V sekci Getting StartedTry an Example stáhněte BPM example do stejného adresáře.

Na adresář, do kterého byly soubory staženy, se budeme odkazovat v dalším textu jako na $DOWNLOAD_HOME.

Instalace BPM Suite

Pro instalaci a správnou funkčnost všech částí ukázky je doporučeno mít nainstalováno JDK alespoň ve verzi 1.6. Doporučena je však verze alespoň 1.7.0_17 kvůli jednomu příkladu na konci článku. Ukázka byla vyzkoušena na Firefoxu 29, lze však použít i Firefox 17 a 24 a Internet Explorer 11.

Přemístěte se do adresáře $DOWNLOAD_HOME se staženými soubory a spusťte instalátor:

$ java -jar jboss-bpms-installer-6.0.1.GA-redhat-4.jar

Spustí se grafický instalátor, postup je následující:

  1. V instalátoru je nutné odsouhlasit podmínky pro pokračování v instalaci.
  2. Vyberte adresář $DOWNLOAD_HOME. Bude nabídnuto vytvoření podadresáře  jboss-eap-6.1, do které bude nainstalováno BPMS včetně aplikačního serveru JBoss EAP. Potvrďte vytvoření tohoto adresáře.
  3. V sekci pro konfiguraci uživatele změňte výchozího uživatele admin, například na uživatele john (je nutné, aby se uživatel nejmenoval admin). Heslo můžete zvolit například „BPMS6rocks!“ (bez uvozovek).
  4. Security manager je možné pro účely tohoto tutoriálu vypnout.
  5. Na další obrazovce ponechte výchozí konfiguraci, volba Perform default configuration.
  6. Na poslední obrazovce je možné zkontrolovat správnost zadaných údajů.
  7. Po dokončení samotné instalace je možné si nechat vygenerovat instalační skript.

Instalace BPMS včetně aplikačního serveru byla dokončena.

Instalace ukázkového projektu

Nyní by bylo možné BPM Suite spustit a vyzkoušet si nabízenou funkcionalitu pro různé fáze životního cyklu podnikového procesu. Nainstalujeme si však nejprve ukázkový projekt, který obsahuje model podnikového procesu, jenž modeluje proces schvalování žádosti o hypotéku. Snaha je tedy zachytit případ užití blízký reálnému problému a demonstrovat maximum z možností tohoto produktu.

  1. Otevřete v textovém editoru soubor $DOWNLOAD_HOME/jboss-eap-6.1/standalone/configuration/application-roles.properties.
  2. Uživatele john nám již předpřipravil instalátor. Přidejte mu tedy role appraiser, broker a manager. Na základě těchto rolí pak mohou být uživateli přiděleny úkoly definované v modelovaném procesu. Ve výsledku tedy může řádek definující jeho role vypadat takto:
    john=analyst,developer,user,manager,admin,appraiser,broker
    Je třeba si dát pozor na to, že .properties soubory jsou zde citlivé na velikost písmen.
  3. Spusťte aplikační server s BPM Suite, v linuxovém systému to lze udělat například takto:
    cd $DOWNLOAD_HOME/jboss-eap-6.1/bin
    ./standalone.sh

    Je potřeba chvilku počkat, JBoss BPM Suite by měla během chvilky nastartovat. V logu aplikačního serveru bychom měli vidět podobnou hlášku:

    16:46:45,631 INFO  [org.jboss.as] (Controller Boot Thread) JBAS015874: JBoss BPM Suite 6.0.1.GA (AS 7.2.1.Final-redhat-10) started in 58841ms - Started 610 of 680 services (69 services are passive or on-demand)
  4. Ve webovém prohlížeči přejděte na stránku http://localhost:8080/business-central a přihlašte se jako uživatel john s heslem zvoleným během instalace.
  5. Objeví se vyskakovací okno s informací, co je nového v BPM Suite. Tato okna si můžete pročíst anebo zavřít spolu se zatrhnutím volby „Don't show again“.
  6. V tomto kroku vytvoříme organizační skupinu pro ukázkový projekt. Organizační skupiny slouží k seskupování git repozitářů obsahujících příbuzné projekty do větších logických celků.
    1. V hlavním panelu klikněte na Authoring a pak Administration.
    2. Dále na Organizational UnitsManage Organizational Units.
    3. V pohledu Organizational Unit Manager klikněte na Add.
    4. V dialogu Add New Organizational Unit vyplňte název Demo.
  7. Rozbalte soubor s ukázkovým projektem:
    cd $DOWNLOAD_HOME
    unzip jboss-bpm-example-dist-6.0.1.GA-redhat-4.zip -d jboss-bpm-example
  8. Nyní budeme importovat git repozitář s ukázkovým projekt do BPM Suite.
    1. V hlavním panelu klikněte na Authoring a pak Administration.
    2. Dále pak RepositoriesClone Repository.
    3. V dialogovém okně Clone Repository vyplňte tato tři políčka:
      • Repository Name: Mortgages
      • Organizational Unit: Demo
      • Git URL: file:///${DOWNLOAD_HOME}/jboss-bpm-example/mortgage-demo/.git
      Pozor, je nutné uvést plnou cestu pro URL git repozitáře.
  9. Dále pokračujeme sestavením a nasazením importovaného MortgageApplication projektu.
    1. Klikněte na AuthoringProject Authoring.
    2. Project Explorer vybereme organizační skupinu Demo a repozitář Mortgages.
    3. Klikněte na Tools a v nabídce na Project Editor.
    4. Projekt je již hotový, lze ho tedy nechat sestavit a nasadit do běhového prostředí. Vpravo nahoře klikněte na tlačítko Build & Deploy. Potvrďte případný požadavek na uložení změn.
  10. Ukázkový projekt pro hypotéky Mortgage Demo vyžaduje pro plnou funkčnost webovou službu běžící na serveru. Tuto službu je možné nasadit za běhu do aplikačního serveru jednoduchým zkopírováním a využít tak hot deploy kontejneru JBoss EAP:
    cp $DOWNLOAD_HOME/jboss-bpm-example/jboss-mortgage-demo-ws.war $DOWNLOAD_HOME/jboss-eap-6.1/standalone/deployments

    V logu aplikačního serveru bychom měli zaznamenat úspěšné nasazení této webové služby do aplikačního serveru, například:

    17:44:36,000 INFO  [org.jboss.as.server] (DeploymentScanner-threads - 1) JBAS018559: Deployed "jboss-mortgage-demo-ws.war" (runtime-name : "jboss-mortgage-demo-ws.war")

Výborně! Pokud šlo vše dobře, máme nyní připravený ukázkový projekt, která čeká na vyzkoušení. Pro jednoduchost jsou momentálně běhová data ukládána do paměťové testovací H2 databáze, takže po restartu serveru začneme vždy znova s prázdnou databází. Neběží tedy žádné procesní instance ani žádné uživatelské úlohy nečekají na splnění.

Ukázkový model podnikového procesu – žádost o hypotéku

Na obrázku 1 je k vidění bpmn2 model podnikového procesu, na kterém budou demonstrovány různé funkcionality Red Hat JBoss BPM Suite v různých fázích životního cyklu. Samotný proces si lze prohlédnout v Designeru, který je součástí Business Central a slouží pro návrh procesů. Po přihlášení do BPM Suite se lze k němu proklikat následovně – AuthoringProject Authoring a pak postupně vybrat organizační skupinu Demo, repozitář Mortgages a projekt MortgageApplication. Po rozbalení seznamu BUSINESS PROCESSES je možné kliknout na MortgageApplication a otevře se model procesu ve webovém Designeru.

Ukázkový model podnikového procesu – žádost o hypotéku.

V podnikovém procesu figurují fyzické osoby, které mohou být reprezentovány jako uživatelé systému s přiřazenou rolí. Interakce mezi systémem a uživatelem probíhá skrze uživatelské úlohy (human tasks).

  • bankovní agent (broker) – provádí kontrolu dat vložených žadatelem, případně může navrhnout žadateli zvýšení zálohy
  • manažer (manager) – má pravomoc změnit nepříznivý posudek žádosti
  • odhadce (appraiser) – odhaduje skutečnou cenu nemovitosti

Další fyzickou osobou je žadatel, ale pro něj není v systému žádná uživatelská úloha, kvůli které by bylo potřeba modelovat roli žadatele. Žadatel pouze vyplní samotnou žádost o hypotéku, která odstartuje proces.

Nyní se již zaměříme na to, jak s tímto procesem pracovat a co všechno je možné jeho prostřednictvím zautomatizovat. Po kliknutí na Process ManagementProcess Definitions uvidíme následující obrazovku se seznamem procesů připravených ke spuštění:

Seznam procesů dostupných pro běhové prostředí. Proces se startuje malým symbolem „trojúhelníček v kolečku“ ve sloupci Actions.

V následujícím zbytku testu se zaměříme na různé oblasti a fukcionalitu, které ukázkový proces pokrývá. Vždy bude vysvětlena jedna konkrétní vlastnost systému a k ní bude přiložen ukázkový obrázek, aby bylo možno lépe pochopit, jak funguje. Zkoušení všech možných situací, jak se může tok běžícího procesu vyvíjet podle různých vstupů, bude ponecháno na čtenáři.

Vstupní data

Žádost o hypotéku začíná startovní událostí, na prvním obrázku má zelené kolečko a nevede do ní žádná hrana grafu. V tomto místě dojde ke sběru informací potřebných pro start procesu. Jde o osobní údaje uživatele, jeho číslo sociálního pojištění (obdoba našeho rodného čísla), adresu a cenu nemovitosti a výši zálohy. Tyto údaje jsou získány prostřednictvím následujícího formuláře, který se zobrazí po startu procesu:

Dialog při spuštění procesní instance. Slouží pro získání vstupních dat.

Validace

Na základě vstupních dat jsou vytvořeny potřebné proměnné procesu, které jsou Java objekty. Pomocí guided rule editoru bylo vytvořeno pět pravidel, která nyní budou použita k validaci objektů. Ověřuje se správnost čísla sociálního pojištění, výše zálohy a doba splácení (amortizace).

V detailech procesní instance je možné vidět kromě základních informací, co jsou součástí procesní definice, také běhové informace. Konkrétně jde o seznam navštívěných uzlů grafu a také právě aktivní úlohy. Na obrázku je vidět aktivní uživatelská úloha, která čeká na interakci od uživatele v nabídce Tasks.

Oprava vstupních dat

Pokud cokoli bude zjištěno jako nesprávně zadaný údaj, pak tok procesu přejde k uživatelské úloze (human task) určené pro opravu dat. Bankovní agent se poradí se žadatelem a pokusí se opravit data.

Seznam úkolů pro uživatele s loginem john, jenž je členem skupiny broker (tedy bankovní agent hypotéky). Má jeden úkol spočívající v opravě údajů na přihlášce.

Na prvním obrázku si můžete všimnout tzv. swim lane (doslova plavecká dráha) pro bankovního agenta (broker). To znamená, že bankovní agent je přiřazen do této dráhy a jakákoli další oprava vstupních dat nebo i jiná úloha patřící do této dráhy bude v budoucnu přiřazena stejné osobě v rámci této procesní instance. Po opravě dat je validace provedena znovu, a je-li vše v pořádku, procesní tok se posune ke zjišťování solventnosti žadatele.

Bankovní agent (broker) opravil dobu splácení z 28 na 30 let (amortization). Nyní čeká uživatelská úloha na dokončení (operace complete).

Zpráva o solventnosti žadatele

Zpráva o solventnosti žadatele je získána pomocí obslužné úlohy (service task), která může obecně implementovat jakoukoli funkcionalitu, v tomto případě je to ten typ, který dokáže vzdáleně volat webovou službu. Tato webová služba je součástí ukázky a měla by být již nasazena v aplikačním serveru. Na základě čísla sociálního pojištění je získána odpověď v podobě ohodnocení solventnosti žadatele. Tento způsob je zvolen pouze z demonstrativních důvodů, v reálném případě by takové ohodnocení probíhalo jinak.

Výpočty k hypotéce

Úloha v procesu, která provádí vyhodnocení pravidel se nazývá business rule task. Opět se tedy použijí pravidla, která byla tentokrát vytvořena pomocí rozhodovací tabulky vytvořené ve webovém rozhraní, neboli guided decision table. Tabulky se často používají pro definici složitých pravidel a obchodních politik. Konkrétnímu analytikovi nebo manažerovi pak často stačí tabulka v Excelu, která je později použitelná v podobném systému.

Pravidla mohou být vytvářena v „technické“ podobě v souborech .drl, v guided rule editorech a také v podobě tabulky. Na obrázku jsou pravidla pro výpočet výše úroku hypotéky ve formě tabulky vytvořené ve webovém guided decision table editoru, který je součástí Business Central.

Expertní systém se tedy podle zjištěného ohodnocení solventnosti podívá do tabulky a spočítá úrok pro hypotéku. Další pravidla zahrnují zjištění poměru mezi zálohou a cenou nemovitosti, jestli se jedná o tzv. jumbo hypotéku (velmi zjednodušeně – ve Spojených státech jde o speciální případ hypotéky, kde výše splátek je větší, než bývá běžné), pak má žadatel nárok na bonus. Všechny tyto faktory mají vliv na výslednou výši úroku.

V další úloze, tentokrát skriptovací (script task) se vykoná Java kód, který na základě výše úroku, prodejní ceny, zálohy a doby splácení spočítá výslednou měsíční splátku.

Ohodnocení žadatele

Vypočtená měsíční splátka je porovnána ve skriptovací úloze s ročnímy příjmy žadatele. Pokud je poměr pro žadatele nepříznivý, je žádost zamítnuta. Pokud je vše v pořádku, je možné pokračovat k ohodnocení nemovitosti.

Ohodnocení nemovitosti

Zbývá udělat odhad ceny nemovitosti. Děje se tak pomocí uživatelské úlohy. Odhadce si zabere uživatelskou úlohu, podívá se na nemovitost, její adresu a prodejní cenu. Na jejich základě určí odhad ceny. Pokud je odhad vyšší nebo roven prodejní ceně, hypotéka je schválena. V opačném případě, kdy odhad je menší než prodejní cena, pak to má vliv na hypotéku a je spočítána nová výše zálohy.

Odhadce splňuje svoji úlohu. Nemovitost odhadnul na 900 000 USD.

V tomto případě se vracíme zpátky a je znovu vypočítán nový úrok, tentokrát již na základě odhadnuté ceny oproti prodejní ceně. Pokud je žadatel způsobilý (qualified), pak je proces ukončen. Pokud žadatel není způsobilý, pak jeho bankovní agent navrhne žadateli zvýšení zálohy. Tak dlouho, jak je žadatel schopen zvyšovat zálohu, lze opakovaně zkoušet nový výpočet.

Stejný bankovní agent (broker), který posuzoval žádost jako první v rámci swim lane, se rozhodl nezvyšovat zálohu (down payment), ale nechat ji stejnou. Tok procesu tedy přejde do přezkoumání, kde již rozhodne manager.

Pokud žadatel stále není způsobilý pro hypotéku a již není schopen více navýšit zálohu, přejde proces do přezkoumání, které rozhoduje manager. Ten se může podívat na přihlášku a je schopen hypotéku definitivně schválit nebo zamítnout. Pak proces končí.

Manager se rozhodl schválit hypotéku v rámci uživatelské úlohy pro přezkoumání hypotéky.

Ukázkové procesní instance

Součástí ukázkového projektu jsou i procesní instance v různých fázích dokončení. Pro jejich spuštění je nutné kvůli bugu používat JDK alespoň ve verzi 1.7.0_17. Je potřeba mít nainstalován ukázkový projekt a běžící aplikační server EAP. Podle toho, jaké používáte přihlašovací údaje pro uživatele s administrátorskými právy (uživatel musí mít roli admin), může příkaz pro spuštění ukázkových procesních instancí vypadat takto (např. uživatel john, heslo BPMS6rocks!):

bitcoin_skoleni

$ cd $DOWNLOAD_HOME/jboss-bpm-example
$ java -jar jboss-mortgage-demo-client.jar john BPMS6rocks! http://localhost:8080/business-central com.redhat.bpms.examples:mortgage:1

Shrnutí

V tomto článku jsme měli možnost se prakticky seznámit s Red Hat JBoss BPM Suite 6 a na ukázkovém projektu, který je distribuován spolu s produktem, si vyzkoušet široké možnosti, které nabízí pro řízení podnikových procesů v organizaci. Včetně řešení různých složitých situací. Byla předvedena jedna z možnách cest, jak projít ukázkovým podnikovým procesem. Je ponecháno na čtenáři, aby si vyzkoušel další možné scénáře.

V příštím díle bude popsána webová Java EE 6 aplikace, která vnitřně využívá jBPM workflow engine. Bude to tedy praktická ukázka, jak použít BPM Suite nejen jako webovou aplikaci Business Central, ale také i jako workflow knihovnu v Javě použitelnou při vývoji informačních systémů.

  1. https://www.jboss.org/pro­ducts/bpmsuite.html
  2. https://access.redhat.com/si­te/documentation/en-US/Red_Hat_JBoss_BPM_Suite/6.0/html-single/Working_with_the_BPM_Su­ite_Example_App/index.html