Využití EJB 3.0 při tvorbě podnikových aplikací

Rozměr: px
Začít zobrazení ze stránky:

Download "Využití EJB 3.0 při tvorbě podnikových aplikací"

Transkript

1 Univerzita Hradec Králové Fakulta informatiky a managementu Katedra informatiky a kvantitativních metod Využití EJB 3.0 při tvorbě podnikových aplikací Diplomová práce Autor: Studijní obor: Bc. Tomáš Olívka Aplikovaná informatika Vedoucí práce: Prof. PhDr. RNDr. Antonín Slabý, CSc. Hradec Králové listopad 2009

2 Prohlášení: Prohlašuji, že jsem diplomovou práci zpracoval samostatně a s použitím uvedené literatury. V Hradci Králové dne Tomáš Olívka

3 Poděkování: Děkuji vedoucímu diplomové práce Prof. PhDr. RNDr. Antonínu Slabému, CSc. za veškerou pomoc a podnětné připomínky při zpracování diplomové práce. Dále děkuji majitelům firmy Datex spol. s.r.o., Ing. Aloisi Nevrtalovi a Ing. Václavu Vyniklářovi za možnost vyvíjet prototyp aplikace SOB v rámci této diplomové práce.

4 Anotace: Diplomová práce se zabývá možnostmi uplatnění frameworku EJB 3.0 při tvorbě podnikových aplikací a na základě získaných teoretických poznatků vytvoření prototypu reálné podnikové aplikace. Annotation: Title: Making use of EJB 3.0 in development enterprise applications. The thesis focuses on the usage framework EJB 3.0 in development enterprise applications. The thesis aims to set up real world application prototype that would be built on theoretical knowledge of EJB 3.0.

5 Obsah Úvod Terminologie Odkazy Schémata a zdrojové kódy...4 Java Enterprise Edition 5, základní pojmy Java EE specifikace Java EE platforma Java EE kontejner JEE aplikační server JEE webový kontejner EJB kontejner Java EE BluePrints JEE BluePrints Katalog JEE Patterns Návrhové vzory Architektura JEE aplikací Vícevrstevná architektura Komponentová architektura...20 EJB Enterprise java beany Metadata - anotace nebo XML? Session beany Specifikace obchodního rozhraní session beanů Specifikace třídy session beanů Bezstavové session beany Stavové session beany Message-driven beany Kdy použít MDB? Specifikace MDB Dependency inejction Field nebo setter injection? Kdy lze použít dependency injection? Light-weight AOP koncept Intereceptory Kde a jak lze použít interceptory? Rozdíl mezi interceptory a AOP...43 JPA Nezávislost JPA na EJB kontejneru Entity Entitní třída Objektově relační mapování Vazby mezi entitami Práce s třídou EntityManager Nastavení JPA persistence.xml...49 Prototyp aplikace SOB Popis prototypu SOB Motivace tvorby prototypu Architektura prototypu SOB

6 Prezentační vrstva Střední vrstva EIS vrstva Pohled nasazení Řešené problémy Vývojový nástroj a JEE platforma ORM reverse engineering Integrace EJB a Stripes Nasazení protypu do různých prostředí Efektivní vývoj a testování Zhodnocení prototypu SOB Poučení o manipulaci s prototypem SOB...64 Závěr...65 Slovník pojmů...66 Seznam použité literatury...69 Přílohy

7 1 Úvod V dnešním světě dynamicky se rozvíjejících informačních systémů a tvrdém konkurenčním boji na trhu výrobců aplikací lze jen těžko obstát bez dobře propracované metodiky, podle které lze efektivně a úspěšně vyvíjet a nasazovat systémy do produkčního prostředí. Požadavky na kvalitu, funkčnost a bezpečnost softwaru se stále zvyšují, a proto je nezbytné dodržovat určité standardy při vývoji aplikace. Pro úspěšné splnění všech požadavků je zcela nezbytné zvolit společně s metodiku nějaký rámec (framework), který nám pomůže zpřehlednit a zefektivnit používání těchto standardů v rámci vývojářských týmu podílejících se na produkci aplikací. Jedním z takovýchto frameworků pro podporu tvorby distribuovaných vícevrstevných aplikací v programovacím jazyce Java je EJB 3.0. Tento framework je součástí specifikace Java Enteprise Edition 5 od společnosti Sun Microsystems a poskytuje standardní prostředky pro budování obchodní logiky vícevrstevných škálovatelných aplikací pomocí tzv. EJB komponent, které jsou nasazovány na aplikační server. Aplikační sever poskytuje EJB komponentám bezpečné prostředí pro jejich provoz. Cílem této diplomové práce je seznámit čtenáře s možnostmi frameworku EJB 3.0. Za tímto účelem byly vytvořeny jednoduché ukázky zdrojových kódů a schémata, které by měly sloužit k lepší orientaci v dané problematice. Ukázky zdrojových kódů v dokumentaci, v tutoriálech nebo v odborné literatuře obvykle ne zcela korespondují s požadavky z praxe, proto bude vytvořen prototyp aplikace na základě reálných požadavků zákazníka. Smyslem tvorby prototypu je snaha ověřit, zdali pomocí popsaných technologií a postupů lze úspěšně vytvořit a nasadit celý systém. Text práce by měl být srozumitelný čtenáři se základními znalostmi objektově orientovaného programování a syntaxe jazyka Java a měl by mu poskytnout nejen přehled o frameworku EJB 3.0, ale především pomoci získat dostatek informací o vhodnosti frameworku pro využití při implementaci konkrétních požadavků na část či celou aplikační logiku. 1.1 Terminologie S přihlédnutím k tomu, že naprostá většina termínů týkajících se oblasti zájmu této práce pochází z angličtiny a je v ustálené podobě používána mezi vývojáři a analytiky na celém světě, není vhodné tyto termíny vždy překládat. Jednak by 3

8 překlad působil kostrbatě, a také by mohl zcela srozumitelný anglický termín překladem ztratit svoji jednoznačnost. Příkladem může být hned klíčové slovo této práce bean, které by překladem do českého ekvivalentu (fazole, bob, zrno,...) zcela znepřehlednilo text práce a především zmátlo čtenáře, kterému již prošla pod rukama některá odborná publikace o tomto tématu. Ovšem některá slova překladem do češtiny neztrácejí svůj původní význam a působí přirozeněji (např. web container webový kontejner). Z těchto důvodů se snažíme o nalezení jednoznačného termínu v češtině a při jeho prvním výskytu v textu se uvádí s anglickým ekvivalentem v kulatých závorkách. Český termín pak bude důsledně používán v celé práci, ovšem pokud by se jevil jako zavádějící, bude zvolen anglický originál, který bude skloňován (např. za pomocí beanů). 1.2 Odkazy Veškeré zdroje, ze kterých tato práce čerpá, jsou uvedeny v kapitole 8 (Seznam použité literatury). Pokud je někde v textu uvedena přímá citace, pak je označena hranatými závorkami, v nichž je uvedeno číslo odkazu se zkratkou cit. a za ní číslo stránky1. Například citace z odkazu 6 stránka 17 bude vypadat takto: [16 cit. 17]. Většina odkazů použitých v této práci je v anglickém jazyce, a proto se citace uvádějí v českém jazyce a jsou autorským překladem. Uvedení hranatých závorek s číslem odkazu za nějakým pojmem nebo větou neznamená citaci, ale pouze uvádí zdroj, kde je pojem vysvětlen, nebo kde se můžeme zevrubněji s danou problematikou seznámit. Příkladem může být:... Hibernate [18]..., kde odkaz 18 za názvem Hibernate odkazuje na oficiální stránky s dokumentací a referenčním manuálem k produktu Hibernate. 1.3 Schémata a zdrojové kódy V této práci se vyskytuje celá řada schémat a kusů zdrojových kódů, které by měly čtenáři usnadnit pochopení dané problematiky. Ke správné interpretaci některých schémat (především diagramů tříd) se předpokládá alespoň základní znalost UML notace 2.0. Jak v diagramech tříd, tak ve zdrojových kódech se pro zpřehlednění názvu definuje každé rozhraní počátečním písmenem I a až za ním následuje logický název. Například rozhraní Operace se bude definováno jako IOperace. Podobně je tomu i u abstraktních tříd, které jsou uvozeny písmenem A. Veškeré názvy tříd, rozhraní, atributů či metod uvedené v běžném textu budou označeny kurzívou stejně tak jako výše zmíněné rozhraní IOperace. 1 V případě odkazu na internetové stránky se číslo stránky neuvádí. 4

9 2 Java Enterprise Edition 5, základní pojmy Tato kapitola přináší obecný vhled do Java Enterprise Edition 5 společnosti Sun Microsystems (dále jen Java EE, nebo JEE) a vysvětluje základní pojmy, které jsou nezbytné pro další studium EJB 3.0 technologie. V literatuře se také můžeme setkat s pojmem Java 2 Enterprise Edition (J2EE), označuje starší zápis platformy, kde číslo verze bylo určeno třemi znaky (např. J2EE 1.4). Tvůrci specifikace se rozhodli vynechat z názvu specifikace číslo 2 stejně jako číslo 1 z čísla verze (revision numer) [7]. Proto dostal nástupce verze 1.4 označení Java EE 5 (JEE 5), což je podle staršího zápisu ekvivalentní s označením Java 2 EE 1.5 (J2EE 1.5). Zdůrazněme, že v textu celé práce budeme obecné označení Java EE (JEE) vztahovat pouze k verzi Java EE Java EE specifikace Java EE je specifikace, nikoli konkrétní produkt. Definuje vstupy a výstupy JEE kontejneru bez ohledu na konkrétního výrobce. Je to standard, díky kterému je zajištěna snadná přenositelnost aplikací mezi jednotlivými platformami. Specifikace je tvořena rozsáhlou sadou API. Obrázek 2-1 zakresluje dostupnost API v jednotlivých JEE kontejnerech. Pro stručné seznámení s funkcionalitou jednotlivých API postačí JEE tutorial [1]. Některými API, např. Java persistence (JPA), Java transaction (JTA), Web Services, se budeme podrobněji zabývat v následujících kapitolách této práce. Schéma 2-1 JEE API, převzato z [1] 5

10 2.2 Java EE platforma Java EE platforma je široce rozšířená provozní (runtime) platforma pro vývoj, nasazení a běh enterprise aplikací v jazyce Java. Cílem JEE platformy je poskytnout vývojářům rozsáhlou sadu specifikací (APIs), pomocí níž je možné snižovat časovou náročnost vývoje, redukovat složitost a zvyšovat výkon enterprise aplikací [1 cit.1]. Java EE platforma je určena Java EE specifikací a poskytuje vícevrstevný distribuovaný aplikační model. To znamená, že jednotlivé části aplikace mohou běžet na různých zařízeních [10 cit. 6]. Jinými slovy řečeno: JEE platforma implementuje JEE specifikaci. JEE platforem existuje celá řada a jsou uzpůsobeny konkrétním hardwarovým prostředím, či aplikačním nárokům. Příkladem mohou být platformy pro různé operační systémy (Windows, Unix), platformy pro provoz aplikací v clusterech, či platformy pro efektivní vývoj aplikací s nižšími hardwarovými nároky Java EE kontejner Pokud tvoříme jednoduché Java třídy v Java SE, potřebujeme na jejich spuštění JVM, což je fakticky kontejner pro běh Java SE aplikací. Pro běh enterprise aplikace také potřebujeme kontejner, který je obecně nazýván Java EE kontejner. V rámci Java EE kontejneru existují 4 kontejnery: EJB, Web, aplikační klient a aplet JEE aplikační server JEE aplikační server, nebo také jen JEE server, je konkrétní JEE kontejner, který implementuje JEE specifikaci a je poskytovatelem JEE platformy. To, že je JEE platforma definována JEE specifikací znamená, že může existovat více implementací konkrétní verze JEE specifikace. Pokud má být nějaký aplikační server nazván JEE aplikačním serverem, tak musí bezpodmínečně implementovat celou JEE specifikaci. Díky komponentové architektuře JEE specifikace si může každý výrobce serveru (vendor) implementovat jednotlivá API JEE specifikace buď sám, nebo využít některých existujících řešení. Pokud se budeme striktně držet vývoje aplikace dle JEE specifikace, bude nám prakticky jedno, na jakém JEE aplikačním serveru naši aplikaci nasadíme. Mělo by bez výjimky platit Write Once, Run anywhere 2 [7]. 2 Write Once, Run anywhere (WORA) jedná se o dlouhodobý strategický záměr firmy Sun Microsystems, jehož cílem je bezproblémová přenositelnost aplikací, popř. aplikačních modulů, mezi jednotlivými poskytovateli JEE platformy[7] 6

11 Pozorný čtenář by si mohl položit otázku, proč tedy existuje celá řada jak komerčních tak i open-source řešení aplikačních serverů, když, jak bylo psáno v předchozím odstavci, by mělo být možné nasadit naší aplikaci na jakémkoli JEE serveru. Je třeba zdůraznit, že právě díky jednotné specifikaci, jednoznačnému určení co vše má aplikační server poskytovat, musí logicky existovat i určitá omezení. Omezení v tom smyslu, že JEE specifikace nedefinuje ani nemůže definovat veškerou funkcionalitu, která by se mohla hodit při vývoji konkrétní aplikace. Jednotliví výrobci se často liší: 1. Jakým způsobem implementují jednotlivá API JEE specifikace. Například JEE aplikační server JBoss [19] implementuje JPA API (viz. kapitola 4) pomocí ORM frameworku Hibernate [18], narozdíl od JEE aplikačního serveru GlassFish, který implementuje JPA API pomocí TopLink Essentials [17]. Rozdíly v implementaci obvykle mívají za následek různé požadavky serveru na hardware a v konečném důsledku přímo ovlivňují rychlost nasazování a provozu aplikací. 2. Jaké nestandardní služby mimo JEE specifikaci poskytují. Např. aplikační server JBoss využívá pro logování knihovnu Log4j, kterou můžeme využít i při logování v naší aplikaci. Při využívání nadstandardních služeb fakticky snižujeme možnost přenositelnosti aplikace mezi aplikačními servery3 a především zvyšujeme závislost na konkrétní platformě. Pro zvolení vhodného aplikačního serveru musíme zvážit, zdali si při tvorbě aplikace vystačíme s JEE specifikací, nebo bychom rádi využili některých speciálních služeb, které konkrétní server může poskytovat. Dále bychom si měli promyslet, zda některý z open-source produktů vyhovuje našim požadavkům, nebo budeme preferovat komerční řešení. Některé servery jsou vhodnější pro vývoj aplikací na localhostu, jiné jsou uzpůsobeny pro provoz aplikací v rozsáhlém produkčním prostředí (řeší např. clustering a mirroring). Není zde prostor pro popisování a porovnávání jednotlivých aplikačních serverů. Pro veškeré ukázky zdrojových kódů v této diplomové práci platí, že jsou platformě nezávislé a mohou být nasazeny a spuštěny na jakémkoli aplikačním serveru implementujícím specifikaci JEE 5. 3 Příklad s knihovnou Log4j je pouze ilustrativní a ve většině případů není problém ji distribuovat s aplikací i do ostatních aplikačních serverů. 7

12 2.2.3 JEE webový kontejner Nejprve si připomeňme, že JEE webový kontejner (někdy též servlet kontejner) je součástí JEE kontejneru a je tedy dostupný v kterémkoli JEE serveru. Webový kontejner implementuje část JEE specifikace (JSP API a Servlet API), která poskytuje běh webových komponent a úložiště html stránek. Webový kontejner může existovat samostatně, ne jen v rámci JEE kontejneru, a může zajišťovat běh statických, či dynamických webových aplikací. JEE servery jsou velice robustní, poskytují řadu služeb a jsou navrženy pro efektivní běh aplikací, což klade nemalé požadavky na výkon stanice, na které jsou provozovány. Při vývoji a testování GUI webových aplikací dochází k častým úpravám kódu a následně k jejich opětovnému nasazování a spouštění. Neustálé opakování takovéhoto postupu je velice neproduktivní. To bývá jedním z důvodů, proč vývojáři nezřídka volí hardwarově méně náročný samostatný webový kontejner. Jedním z nejrozšířenějších samostatných webových kontejnerů je Apache Tomcat od společnosti The Apache Software Foundation. Apache Tomcat poskytuje i některé služby nad rámec JEE webového kontejneru (např. definice datasource ve verzi 5 a 6) [9] a je třeba zdůraznit, že samostatné webové kontejnery nemusí sloužit pouze k vývoji aplikací. Ve webovém kontejneru lze s dalšími knihovnami (komponentami) aplikace nasadit tzv. light-weight kontejner (např. Spring 2.5), který fakticky existuje jako alternativa (nadstavba) ke službám JEE, včetně IOC kontejneru, což může být dalším důvodem upřednostnění samostatného webového kontejneru před aplikačním serverem. Na samostatném webovém kontejneru ovšem nelze nasadit a spustit EJB komponenty4, a proto pro potřeby vývoje a nasazování EJB komponent budeme muset zvolit nějaký JEE server EJB kontejner EJB kontejner slouží k běhu EJB beanů. Nejdůležitější zodpovědností kontejneru je zajistit bezpečné transakční distribuované prostředí pro provoz beanů [5 cit. 59]. Kontejner implementuje vlastní verzi IOC, díky němuž je možné volat naše beany z klientů, nebo jiných beanů bez přímého použití kontejnerového API prostřednictvím anotací nebo xml descriptoru. Takto můžeme kontejneru definovat, jaké EJB beany chceme v kódu použít a kontejner nám za běhu zajistí 4 Existují i určité možnosti, jak nasadit EJB komponenty mimo JEE server (např. na webovém kontejneru). Může se jednat např. o plug-in OpenEJB pro Tomcat, nebo prostřednictvím Springu. 8

13 jejich instance. Kontejner se v podstatě chová jako neviditelný prostředník mezi klientem a beanem a zajišťuje životní cyklus beanů. V následujícím výčtu je definováno několik základních služeb, které jsou díky kontejneru k dispozici. Řízení transakcí: Transakcí rozumíme jednotku práce (např. sled volaných metod), která musí být vykonána v kuse bez přerušení a ve zvoleném pořadí. EJB framework poskytuje dva typy transakcí: Kontejnerem řízené transakce, kdy kontejner zajistí start a commit (popř. rollback, když se vyskytne chyba) transakce. Beanem řízené transakce umožňující vykonávat persistentní operace definované pomocí atributů (anotací) spjatých s našimi EJB beany, kdy má vývojář stoprocentní kontrolu nad průběhem transakce. Této kontroly může být dosaženo z klienta nebo přímo z EJB beanu. Bezpečnost: je jedna z nejdůležitějších výhod EJB frameworku a hlavním důvodem pro využití vícevrstevného aplikačního modelu. Správa rolí a oprávnění pro volání metod je možné řešit již v Java SE programováním oproti Java security API. EJB framework značně zjednodušuje definici oprávnění pro metody EJB beanů prostřednictvím nastavení atributů (anotace nebo xml). Životní cyklus a zdroje: EJB kontejner řídí zdroje (např. vlákna či databázová spojení), které využívají EJB beany a řídí životní cyklus beanů. Vytváří a likviduje instance beanů, pasivuje je prostřednictvím serializace do sekundární paměti a aktivuje je zpět. Kontejner má schopnost znovu použít instance beanů tak, jak uzná za vhodné, a dokáže automaticky zvyšovat či snižovat počet dostupných instancí beanů, díky čemuž se značně zefektivňuje práce s pamětí a snižují hardwarové nároky na PC, na kterém běží JEE server. Vzdálený přístup: EJB framework poskytuje vývojářům velice snadné definování EJB beanů, jejichž metody se mají volat z klientů běžících ve vzdálených JVM. Kontejner zajistí transformaci lokálních EJB beanů do tzv. distribuovaných síťových objektů sloužících pro přenos dat mezi JEE serverem a vzdáleným klientem. Metody EJB beanů je možné volat i z jiných programovacích jazyků. Podpora pro souběžné požadavky (requesty): Kontejner se postará o obsluhu souběžně volaných EJB beanů z klienta, aniž bychom museli psát více vláknový obslužný kód a zajišťuje podporu řízení vláken. 9

14 Pokud více klientů volá metody instance beanu, kontejner zeserializuje requesty a díky tomu dovoluje pouze jednomu klientovi zavolat instaci beanu v jednom okamžiku. Pokud k souběhu volání dojde, ostatní klienti jsou nejprve přesměrováni na jiné instance beanu, nebo jsou přinuceni počkat, dokud se původní instance stane opět dostupnou. Vývojáři tak ušetří spoustu času, který by museli věnovat psaní vláknově bezpečného kódu. Clustering a vyrovnávání zátěže (load-balancing): Clusterem máme na mysli paralelní práci více výpočetních jednotek pracujících společně za určitým cílem. V JEE je clustering obecně práce nad clusterem a poskytuje dvě zásadní služby: škálovatelnost (scalability) - možnost pružně přidávat resp. odebírat výpočetní stanice do resp. z clusteru a tak zásadním způsobem ovlivňovat celkovou výkonnost clusteru a vysokou dostupnost (high availability), zachovat dostupnost clusteru při výpadku některé ze stanic clusteru a stávající požadavky rovnoměrné rozdělit mezi zbylé funkční stanice. Z definice specifikace není EJB kontejner povinen podporovat clustering a vyrovnávání zátěže, ovšem téměř všichni výrobci kontejnerů více méně tyto služby podporují 5. Je potřeba vzít v úvahu, že se jedná o tzv. nestandardní (viz ) služby a jejich konfigurace může být kontejner od kontejneru odlišná. Na druhé straně je třeba si uvědomit, že výhody, které přinášejí tyto služby při řešení obsluhy mnoha souběžných requestů či při provádění náročných algoritmů, jsou dosti vysoké a změna EJB kontejneru resp. aplikačního serveru nebývá tak častá. 2.3 Java EE BluePrints Společně se JEE specifikací jsou vyvíjeny a dokumentovány tzv. BluePrints, které vývojářům poskytují pravidla, vzory a zdrojové kódy pro vývoj, ladění a nasazování JEE aplikací [8]. Motivací vzniku BluePrints byly především neustále se opakující otázky vývojářů a analytiků, jakým způsobem řešit řadu problémů při vývoji aplikací. Ukázalo se, že samotný tutoriál[1] s jednoduchými ukázkami kódu je jako teoretický základ pro produkci složitějších aplikací nedostačující. BluePrints obsahují BluePrints Solution Katalog[11], J2EE Patterns Catalog[12] i řadu dalších kompletů. Jedním z nich je Enterprise definující 5 některé JEE servery podporují clustering pouze nad celou JEE aplikací (ear), nikoli nad samostatným EJB modulem 10

15 modelové řešení, které je postaveno nad Java SE a Java EE platformou. Seskupuje souhrn pravidel (pokynů), návrhových vzorů a příkladů řešení reálných problémů ve zdrojových kódech, které umožňují tvorbu robustních škálovatelných přenosných aplikací. Dalším kompletem BluePrints je Performance zabývající se problematikou výkonnosti a škálovatelnosti aplikací. Nabízí celou řadu strategií, jak upravit a vylepšit výkonnost buď nově vznikající či již existující aplikace. [8] Kromě výše zmíněných kompletů existuje mnoho dalších sestav, avšak cílem této práce není kompletně vyjmenovat všechny kategorie BluePrints. Měli bychom mít na paměti, že při analytické fázi je vhodné pokusit se vyhledat již existující řešení. Nemělo by být cílem analytika vymyslet vždy originální řešení daného problému. Není nutné objevovat již objevené. Literatura [8] je právě tím místem, kde by mělo začínat hledání, jak řešit konkrétní problémy JEE JEE BluePrints Katalog BluePrints katalog se dělí do čtyř logických kategorií6. Každá kategorie katalogu je rozdělena do klíčových otázek (problémů) a nabízí různé strategie, vzory a pokyny pro jejich řešení. V následujícím výčtu jsou stručně komentovány jednotlivé kategorie. [11] AJAX podporuje způsob návrhu a tvorby JEE aplikací využívajících technologii AJAX. Web tear prezentuje řadu řešení pro vývoj webové vrstvy JEE aplikací s použitím JEE technologií JSF, Servlets, JSPa JSTL. Business logic soustřeďuje se na vrstvu JEE aplikace, která obsahuje obchodní a integrační logiku. Technologie použité v této vrstvě jsou především EJB, JSM, XML, JDBC, JEE Conectors. Web services řeší problematiku webových služeb a servisně orientované architektury (SOA) aplikací JEE Patterns Součástí BluePrints je katalog návrhových vzorů [12] a nově Core JEE paterns [13] řešící řadu typických programátorských problémů. Je potřeba zmínit, že návrhové vzory existují v obecné podobě [14] a je možné je implementovat prakticky do všech objektově orientovaných jazyků. 6 V době sepisování této práce existuje kompletní katalog pouze pro starší verzi J2EE 1.4 a pro verzi JEE 5 zatím není kompletní. 11

16 2.3.3 Návrhové vzory Návrhové vzory obsažené v Java EE Bluepritns jsou už konkrétní ukázkou implementace některých návrhových vzorů za pomocí Java 5 a JEE 5, využívajících nových vlastností jazyka Java verze 5 jakou jsou například generika a anotace. V následujícím výčtu si vyjmenujeme a stručně popíšeme několik obecných návrhových vzorů, jejichž konkrétní aplikace se vyskytuje v prototypu aplikace SOB (kap. 5) a které by měl bezpodmínečně znát každý vývojář či softwarový architekt pracující s objektově orientovaným programovacím jazykem. Všechny níže uvedené vzory můžeme nalézt v [14] Singleton (jedináček) Jedná se o konstrukci, která zajistí, aby v celé aplikaci existovala pouze jediná instance dané třídy. K této instanci se přistupuje pomocí statické metody a samotný konstruktor jedináčka je privátní (tzn. nelze vytvořit instanci jedináčka voláním konstruktoru z jiných tříd). Schéma 2-2 Model View Controler Model View Controler MVC Dnes už standardní přístup (princip) oddělení datové vrstvy a aplikační logiky (model) od vrstvy, která zpracovává požadavky klienta na aplikaci (controler) a od vrstvy starající se o prezentaci (zobrazení) dat na klientovi (view). V Javě existuje celá řada MVC frameworků, které podporují a usnadňují vývoj JEE aplikací podle principů vzoru MVC. Součástí JEE je komponentově orientovaný MVC framework JSF. Z ostatních můžeme uvést např. Struts, Struts2, Webwork, Spring MVC, Stripes, Tapestry.... Na schématu 2-2 je naznačen způsob komunikace mezi jednotlivými vrstvami a ostatními systémy. U větších systémů může být více než 12

17 jenom tyto tři vrstvy popsané vzorem MVC (viz. kapitola 2.4 Architektura JEE aplikací) Data Access Object DAO Smyslem tohoto vzoru je oddělení vrstvy přístupu k datům od vrstvy aplikační logiky. DAO se programuje striktně proti rozhraní a implementace DAO rozhraní zajišťuje přístup k datům konkrétním způsobem (schéma. 2-3). V aplikaci můžeme využít více implementací konkrétního DAO rozhraní podle toho, jaký přístup nám bude pro konkrétní získávání více vyhovovat. Např. JPA implementace se bude hodit pro snadné získání a manipulaci s namapovaným objektem. Oproti tomu může být v některých případech efektivnější využít implementaci např. pomocí JDBC (složité dotazy přes více tabulek nutnost optimalizace a efektivnosti dotazů). Snadné přepínání jednotlivých implementací tohoto vzoru můžeme zajistit pomocí AbstractFactory. Schéma 2-3 implementace DAO tříd, jejichž účelem je perzistence třídy faktura Facade Pokud se některá část systému či komponenta stává příliš složitou a komunikace s ostatními subsystémy či komponentami se s přibývající složitostí čím dál více znepřehledňuje, pak přichází prostor pro využití návrhového vzoru Facade, který doporučuje nahrazení početné sady veřejných metod rozmístěných v mnoha třídách subsystému jedním rozhraním, které bude vystaveno jako fasáda pro komunikaci s ostatními subsystémy. Celá problematika je velice dobře zřetelná ze schématu

18 Schéma 2-4 Naznačení způsobu komunikace Subsystému 1 s ostatními subsystémy prostřednictvím návrhového vzoru Facade 2.4 Architektura JEE aplikací V této podkapitole se budeme věnovat dvou základním konceptům JEE aplikační architektury. Nejprve si popíšeme vícevrstevnou architekturu a její nejčastěji definované vrstvy a v druhé časti nastíníme problematiku komponentové architektury. Je třeba zdůraznit, že oba koncepty architektur nejdou proti sobě, ale vzájemně se doplňují. Uplatňování obou konceptů patří k tzv. best practice při vývoji JEE aplikací Vícevrstevná architektura JEE platforma zajišťuje podporu vývoje serverové (server-side) a klientské (client-side) části distribuovaných vícevrstevných aplikací. Takovéto aplikace bývají zpravidla sestaveny ze tří základních vrstev (tier7) definovaných JEE (schéma 2-5): 1. klientská vrstva (client-tier): poskytuje uživatelské rozhraní a podporuje mnoho typů klientů (mobilní zařízení, síťová zařízení, PC...) 2. střední vrstva (middle-tier): střední vrstva je tvořena jedním nebo více moduly (může obsahovat více pod-vrstev sub-tier) a zajišťuje klientské služby (client services) prostřednictvím webového kontejneru (prezentační vrstva) a služby obchodní logiky aplikace díky EJB kontejneru (vrstva obchodní logiky). 7 v literatuře se můžeme setkat i s pojmem layer 14

19 3. EIS vrstva (EIS tear popř. back-end tear): bývá tvořena zpravidla databázovým systémem a je přístupná standardními JEE API. Schéma 2-5 tří základní vrstvy v JEE aplikacích - převzato z [10] JEE vrstvy aplikace zobrazené na schématu 2-5 se většinou ještě dělí na pod-vrstvy, které mohou prostupovat napříč třemi základními vrstvami. Smyslem rozdělení aplikace do vrstev je především při high-level pohledu logické oddělení jednotlivých funkcionalit od sebe a udržení si představy o tom, co má jaká vrstva resp. pod-vrstva v aplikaci na starosti. Počet vrstev aplikace vždy záleží na její velikosti a členitosti - jaké služby poskytuje a pomocí jakých prostředků dosahuje požadovanou funkcionalitu. Schéma 2-6 znázorňuje nejčastěji používané vrstvy u středně velkých JEE systémů. Nižší vrstva (na schématu zprava) by měla být vždy nezávislá na vyšší vrstvě, která se nalézá vlevo od nižší vrstvy. Například vrstva obchodní logiky, v tomto případě nižší vrstva, by nikdy neměla být závislá na vyšší prezentační vrstvě. To znamená, že jakákoliv změna prezentační logiky neovlivní funkčnost vrstvy obchodní logiky. Opačně tento princip samozřejmě neplatí ani platit nemůže, protože vyšší vrstvy jsou závislé na vrstvách nižších. Pokud nastane v nižší vrstvě chyba, pak se tato chyba promítne do všech vyšších vrstev. Nižší vrstva by nikdy neměla volat metody vyšší vrstvy, jinak by došlo k porušení závislosti mezi nižší a vyšší vrstvou. Na schématu 2-6 je naznačeno volání jednotlivých vrstev resp. závislost. Šipka vychází vždy ze závislé vrstvy (pozn. přerušovaná šipka značí pouze odpověď, nikoli závislost). 15

20 Schéma 2-6 naznačuje závislost jednotlivých vrstev. Zprava plně nezávislá EIS vrstva Prezentační vrstva (view tear) Prezentační vrstva se stará o zpřehlednění a usnadnění komunikace klienta se systémem prostřednictvím graficky uživatelského rozhraní (GUI). Presentační vrstva se obvykle skládá z webové a klientské vrstvy. To odpovídá fyzickému rozdělení do dvou částí. Serverový front-end controler (dále jen kontroler), který je umístěn na serveru a aplikační klient (internetový prohlížeč, dále jen klient), který je umístěn u uživatele systému. Prezentační vrstva prostupuje klientskou a střední JEE vrstvou. Kontroler přijímá a validuje požadavky od klienta. Na základě těchto požadavků získává data z vrstvy obchodní logiky, generuje je do formátu (x)html nebo xml a posílá je prostřednictvím http protokolu klientovi. Kontroler bývá zpravidla řešen nějakým MVC frameworkem (viz. kap MVC) Klient posílá požadavky na server prostřednictvím http nebo https protokolu metodou get, nebo post. Klient je z principu tzv. tenký klient, protože na něm neběží žádná obchodní logika, stará se pouze o zobrazení (x)html nebo xml dat a může validovat požadavky prostřednictvím skriptu (Java script, VB scrtipt) Vrstva Obchodní logiky (business tear) Vrstva obchodní logiky může být tvořena za pomoci různých frameworků či knihoven, nebo jen s Java SE, ale my se v této práci budeme zabývat výhradně 16

21 tvorbou obchodních služeb pomocí EJB frameworku a JPA API. Takto definovaná vrstva obchodní logiky se v JEE aplikacích dělí do dvou částí: doménový model (domain model) a služby obchodní logiky (services). Doménový model je reprezentován entitami8, které nesou data o svém stavu. Jinými slovy doménový model reprezentuje stav systému, který je ukládán resp. načítán vrstvou přístupu k datům do EIS vrstvy. Entity odpovídají specifikaci POJO a jsou definovány JPA API obsahují anotace nad atributy resp. metodami definující jejich názvy ve zdroji dat a jejich omezení (podrobně popsáno v kapitole 4 JPA). Služby obchodní logiky jsou JavaBean komponenty (EJB beany9) zajišťující požadovanou funkcionalitu. Vývojáři se mohou při využití EJB beanů skutečně soustředit na implementaci obchodní logiky, zatímco EJB kontejner se postará o veškerou podporu (viz. kap ) nutnou pro běh kódu. EJB beany musí z definice obsahovat rozhraní a implementaci (viz kapitola 3 EJB 3.0). Striktním přístupem programování proti rozhraní jsou nejprve vydefinovány funkce, které má jednotlivá služba poskytovat, a až následně vytvořena implementace dané služby (implementací může být více). Výhodou takového postupu je snadná změna implementace obchodní logiky, aniž by se muselo zasahovat do jiných tříd náležících do různých vrstev. Při návrhu vrstvy obchodní logiky je možno držet se objektového paradigmatu rich domain model velice dobře popsaného v [16], nebo využít tzv. anti-vzor (antipatern) anemic domain model. Každý z přístupů nese určité výhody a nechá se použít při tvorbě vrstvy obchodní logiky s využitím frameworku EJB [4]. S přihlédnutím k tomu, že hlavním cílem EJB frameworku je podpora produkce rozsáhlých podnikových aplikací vyvíjených desítkami programátorů, pokusíme se v následujícím textu nastínit některé možné komplikace při využití domain modelu a proč je stále, nejen v JEE ale obecně, při tvorbě rozsáhlých systémů v OOP je jednou z best practice využívání anemic domain modelu. Anemic domain model je nazýván anti-vzorem [15], protože jde proti standardnímu objektově orientovanému pohledu (domain model), kdy každá doménová třída nese nejen data ale i zodpovědnost za určité činnosti aplikace poskytuje služby (obchodní logiku v metodách). V rozsáhlých aplikacích se domain model problematicky uplatňuje především z těchto důvodů: 8 Ve starší verzi EJB existovaly entity beany, které lze sice v EJB 3.0 použít, ale již nejsou dál vyvíjeny. Místo toho existují samostatné entity definované JPA, které lze využít i bez použití EJB frameworku. 9 Podrobněji o různých typech EJB beanů v kapitole 3. 17

22 Pokud je v doménové třídě příliš mnoho metod zajišťujících obchodní logiku, nebo jsou tyto metody rozsáhlé, stává se doménová třída nepřehlednou a obtížně udržovanou. Při použití anemic domain modelu se tato problematika řeší tvorbou více služeb. V některých případech bývá velice obtížné určit, která z doménových tříd má zajišťovat konkrétní obchodní službu. Jedná se zejména o případy, kde existuje požadavek na zpracování vícedoménových objektů. Tento problém se týká obecně delegování zodpovědnosti za transakce, které probíhají napříč doménovým modelem.10 Jednotlivé služby doménové třídy mohou obsahovat celou řadu metod, které k dané doméně logicky patří, ale každá metoda může využívat zcela jiných prostředků (knihoven). Z tohoto důvodu je u rozsáhlejších systémů za jejich tvorbu zodpovědný právě vývojář specializující se na konkrétní typ prostředků. Sestavování a udržování třídy, jejíž metody programuje více vývojářů, se může značně komplikovat. Jako příklad takového problému můžeme uvést skupinu metod využívajících složitějšího matematického aparátu a jednoduché validace. Obě skupiny metod do doménové třídy logicky patří, ale není efektivní zatěžovat zkušeného vývojáře (senior developer) tvorbou jednoduchých validací. Při využívání EJB entitních tříd pro datové objekty nelze bezezbytku uplatnit koncepci domain modelu, a to především z důvodu, že entitní třídy musejí splňovat specifikaci POJO. V některých třídách rich domain modelu nemusí být žádoucí uveřejňovat např. nějakou set metodu, či doménová třída s veřejným prázdným konstruktorem nemusí splňovat existenční podmínky instance objektu. V takových případech je o poznání těžší namapovat entity na databázovou strukturu. Tvorba testů jednotlivých metod obchodní logiky pro složitější domain model oproti testování jednotlivých metod služeb může být komplikovanější. Nutno podotknout, že i anemic domain model nese určité nevýhody, a to především skutečnost, že i když služby obchodní logiky pracují s poměrně složitým objektovým datovým modelem, jejich tvorba se značně přibližuje procedurálnímu 10 Domain model samozřejmě může obsahovat i služby obchodní logiky definující jednotlivé transakce, rozdíl oproti anemic domain modelu je v tom, že služby domain modelu by měly poskytovat pouze fasádu (návrhový vzor Facade viz. kap ) tj. volat pouze metody doménových tříd, tedy nezpracovávat žádná data. 18

23 programování a může tak docházet k částečné duplicitě kódu jednotlivých služeb. Je vždy na analytikovi, jakou strategii zvolí, a je třeba zdůraznit, že finální rozhodnutí by mělo vždy přinášet více výhod. Výhodou anemic domain modelu je především snadnější udržovatelnost projektu při práci ve větším počtu vývojářů a snadná změna implementace služeb. Oproti tomu výhoda domain modelu je ve stoprocentním využití OOP, a tím minimalizace duplicitního kódu Vrstva přístupu k datům (data acess tear11) Vrstva přístupu k datům se stará o persistenci datového modelu vrstvy obchodní logiky. Je tvořena DAO objekty (kap 2.3.3) a měla by být jediným místem v aplikaci, odkud je možný přístup do EIS vrstvy. Při použití EJB frameworku jsou DAO objekty EJB beany stejně jako služby obchodní logiky. Každý DAO objekt má na starosti persistenci jedné konkrétní doménové třídy. Většinou zajišťuje základní CRUD operace, a pokud je třeba, tak mohou být vyspecifikovány další metody zohledňující speciální potřeby aplikace na persistenci dané entity. Tato vrstva bývá implementována s využitím některého z ORM frameworků odstiňujícího DAO objekty od implementace konkrétního datového zdroje. ORM frameworky mají vestavěný dotazovací jazyk (obecně OQL), který umožňuje pracovat s datovým zdrojem tak, jako by se jednalo o objektovou databázi a způsob dotazování je ovlivněn pouze doménovým modelem, nikoli datovým zdrojem. OQL dotazy jsou ORM frameworkem převedeny na dotazy odpovídající způsobu dotazování dle využitého datového zdroje. Například pokud budeme využívat jako datový zdroj relační databázi Oracle, tak námi psané objektové dotazy v OQL budou transformovány do podoby SQL s příslušným dialektem databázové verze. V dnešní době existuje celá řada ORM frameworků, které se od sebe liší jak způsobem dotazování, tak způsobem mapování doménových tříd. V JEE existuje pro ORM standard JPA API, což je specifikace funkcí, které každý JEE ORM framework poskytuje. JPA taktéž definuje dotazovací jazyk JPQL a způsob mapování EJB entit na datový zdroj. JPA nás tedy odstiňuje nejen od konkrétního datového zdroje, ale také od ORM frameworku, a z toho důvodu nám bude při tvorbě datové vrstvy prostřednictvím JPA API jedno, na jakém JEE serveru bude naše aplikace nasazena a jaký typ datového zdroje bude pro produkční verzi vyvíjené aplikace zvolen. 11 nebo také persistence tear viz. [4] 19

24 EIS vrstva EIS vrstva slouží jako zdroj dat pro enterprise aplikace. EIS vrstva obsahuje jeden nebo více systémů jako jsou například relační databáze, mainframe systémy, objektové databáze, FTP file systémy aj. pro trvalé ukládání dat. Vrstva obchodní logiky zpravidla pracuje v jednom okamžiku jenom se zlomkem dat a jejich stav se průběžně načítá resp. ukládá do EIS vrstvy. JEE platforma poskytuje přístupy do různých typů EIS technologií: JEE Konektorová architektura (Connector architecture) je normou pro integraci JEE aplikací s existujícími EIS systémy využívající adaptéry (resource adapters12), které mohou být umístěny do JEE serverů. Zprávové služby (JMS API) definují způsob asynchronního zasílání zpráv mezi JEE zprávovými systémy. JDBC API slouží pro spojení JEE aplikací s relačními databázemi. Umožňuje otevírání a uzavírání nových spojení s databází, volání SQL dotazů, spouštění databázových funkcí, startování transakcí, zapsání (commit) popř. vyrolování (rollback) transakcí. JEE platforma umožňuje jak synchronní tak asynchronní integraci pro přístup JEE aplikace k EIS vrstvě. Asynchronní systémy jsou vhodnější pro kvalitní a spolehlivé vyměňování zpráv mezi systémy a zpravidla jsou i velice výkonným řešením. Oproti tomu synchronní systémy jsou jen těžko nahraditelné všude tam, kde je nutný přístup aplikace do více datových zdrojů a požadované zpracování musí proběhnout v přesném pořadí v rámci jedné transakce Komponentová architektura EJB framework je výhradně komponentovým frameworkem, což znamená, že jeho základními stavebními prvky jsou komponenty. Návrh a implementace systému za pomocí komponent je v pořadí třetí best practice dle metodiky RUP [21]. Zásadním přínosem komponentového systému je možnost snadnějšího a tedy i levnějšího rozšíření stávajícího systému, či nahrazení implementace stávajících komponent. Komponentová architektura se dělí do tzv. zásuvných modulů (plugin), které sdružují komponenty vykonávající určitou specifickou činnost. Klíčovými pojmy komponentové architektury jsou komponenta a rozhraní (API), jejichž význam a funkce si popíšeme v následujících podkapitolách. 12 Jedná se o technologii zásuvných modulů umožňující JEE serveru připojit se na různé druhy EIS systémů. 20

25 Rozhraní Rozhraní odděluje specifikaci od implementace. V jazyce Java se definuje klíčovými slovy public interface a jeho tělo je tvořeno pouze veřejnými (public) hlavičkami metod13. Hlavičky metod specifikují název metody a popřípadě její vstupní parametry a návratovou hodnou. Rozhraní nemůže obsahovat výkonná těla metod a ani žádné atributy. Veškerá logika (prostředky, jimiž se dosáhne požadovaného úkolu) je ponechána třídě, která implementuje dané rozhraní. Rozhraní naopak může obsahovat libovolný počet konstant a může dědit (vazba extend) z jiného rozhraní. Při tvorbě rozhraní se snažíme v systému nalézt metody, které se vyskytují nebo by se mohli vyskytovat napříč různými třídami a následně tyto metody rozdělit podle funkce k příslušným rozhraním. Jednotlivá rozhraní pak můžou obsahovat i sémantiku metod, neboli popis funkcí, vstupních parametrů, návratových hodnot a vyhazovaných (throws) výjimek prostřednictvím komentované dokumentace. V dokumentaci se taktéž můžou nalézat jistá omezení metod, popřípadě příklady jejich volání. Jedno rozhraní pak může být implementováno více třídami a jedna třída může implementovat více rozhraní narozdíl od abstraktní třídy, kdy každá třída může mít pouze jednoho předka. Pokud někde v kódu voláme metody specifikované rozhraním, pak je nikdy nevoláme přímo na proměnné třídy implementující toto rozhraní, ale vždy na proměnné popř. atributu typu rozhraní. Důsledným používáním atributů typu rozhraní místo samotných tříd získáváme značnou flexibilitu kódu. Kdykoli můžeme nahradit třídu implementující rozhraní, nebo přidat další typy tříd implementujících dané rozhraní, aniž bychom museli upravovat klientský kód14. Pro snadnou inicializaci rozhraní se využívají návrhové vzory např. Factory method, Factory, Facade, nebo můžeme využít služeb EJB kontejneru15, který realizuje inicializaci atributů prostřednictvím dependency injection (viz. kapitola 3.5), nebo jiného IOC kontejneru. Na schématu (2-7) je naznačena část bankovní aplikace, kde jsou definovány tři typy bankovních účtů pomocí tříd (BeznyUcet, Silver, Gold) implementujících rozhraní IBankovniOperace. Klienti jsou v tomto příkladu komponenty, které nevolají přímo jednotlivé instance tříd bankovních účtů, ale veškeré operace 13 V literatuře se můžeme setkat s pojmem signatura metody. Klientský kód v tomto kontextu znamená jakýkoliv kus kódu užitý v aplikaci, který používá proměnnou nebo atribut typu rozhraní 15 V Javě můžeme použít jakýkoliv IOC kontejner (např. Spring) 14 21

26 provádějí prostřednictvím rozhraní IBankovniOperace. Klient v tomto případě provede požadovanou bankovní operaci např. pošle peníze na jiný účet (odeslipenize) a nemusí vědět s jakým typem účtu pracuje. Každá třída účtu pak obsahuje vlastní implementaci operace. Třída BeznyUcet nejprve provede kontrolu, zdali je na účtu dostatečný zůstatek a pouze pokud ano, pak odešle peníze. Oproti tomu třída Silver může odesílat peníze do debetu a třída Gold do Schéma 2-7 Ukázka nahrazení přímé vazby mezi jednotlivými implementacemi bankovního účtu a klientskými komponentami prostřednictvím rozhraní IBankovniOperace Výhodou takového návrhu je, že jednotliví klienti nejsou závislí na konkrétní třídě. Tím jsou eliminovány přímé vazby a je umožněna vysoká flexibilita a modularita celého modelu. Jednotlivé implementace mohou být snadno zaměňovány, rušeny a přidávány. Pokud bychom se například rozhodli ve výše zmíněném příkladu rozšířit systém o další typ účtu Platium, kde by neexistoval žádný limit při posílání peněz, pak jednoduše přidáme novou třídu, které bude implementovat rozhraní IBankovniOperace Komponenta Smyslem vytváření komponent je především lokalizovat znovupoužitelné části systému tak, aby každá komponenta systému poskytovala svému okolí určité funkce (služby). Tento princip zcela koresponduje s OOP. Jak komponenta, tak objekt zapouzdřují své chování a poskytují svému okolí komunikační rozhraní. Komponenta je fyzickou nenahraditelnou částí systému, která obsahuje implementaci a poskytuje realizaci množiny specifikovaných rozhraní [22 cit. 350]. 22

27 Jinými slovy každá komponenta obsahuje specifikaci (rozhraní) a zapouzdřuje implementaci specifikace. Na úrovni jazyka Java je komponentou každý kus zdrojového kódu zkompilovaného do souboru s příponou class. Takto vytvořené soubory nazýváme elementárními komponentami, které se zpravidla seskupují do archívů jar a přidávají se k aplikaci jako knihovny (library). Elementární komponenta může být třída (Class), rozhraní (Interface) nebo seznam (Enum). Je třeba zdůraznit, že rozhraní elementární komponenty není reprezentováno klasickým rozhraním, které jsme si popsali v kapitole , nýbrž ho specifikují všechny deklarace16 komponenty označené klíčovým slovem public. Při návrhu aplikace se ovšem nespokojíme pouze s elementárními komponentami na úrovni jazyka, nýbrž máme potřebu vytvářet vyšší celky, které si pro přehlednost pojmenujeme jako logické komponenty. Každá logická komponenta je tvořena několika elementárními komponentami, z nichž je definováno klasické Java rozhraní (interface) určené pro komunikaci s ostatními komponentami17 a jedna či více implementačních tříd. Další prvky jako např. abstraktní třídy, seznamy, soubory obsahující metadata atp. jsou volitelné. Příkladem takovýchto komponent z JEE prostředí jsou například servlet, JSP stránka, nebo EJB session beany (kap. 3.3). Z vyššího návrhového pohledu může být komponenta složena z více logických komponent. Logické komponenty pak můžeme seskupovat do tzv. zásuvných modulů, které lze snadno přidávat do aplikace. V případě EJB to jsou ejb-moduly komprimované do archivu *.jar, které kromě vlastních zkompilovaných zdrojových kódů obsahují deployment descriptor popisující způsob nasazení do JEE serveru. Jednotlivé komponenty EJB modulů mohou být přístupné ostatním aplikacím (jak vzdáleným tak lokálním detailněji popsané v kapitlole 3). 16 Deklaracemi elementární komponenty máme namysli, hlavičky metod, atributy, konstanty, názvy vnořených tříd(inner class) nebo samotnou deklaraci komponenty (název třídy, rozhraní nebo seznamu). 17 Rozhrání komponenty může být více, nebo mohou být nahrazeny návrhovým vzorem Facade 23

28 3 EJB 3.0 V této kapitole se detailněji seznámíme s EJB 3.0 frameworkem od společnosti Sun Microsystems. Popíšeme si jeho základní rysy, seznámíme se specifikací jednotlivých EJB 3.0 komponent a uvedeme si možnosti jejich využití při tvorbě střední vrstvy serverově orientované aplikace. V následujícím textu budeme mít zkratkou EJB vždy na mysli EJB verzi 3.0, pokud nebude výslovně uvedeno jinak. Jak již bylo naznačeno (kap. 2.4), EJB framework je navržen pro usnadnění vývoje střední vrstvy rozsáhlých škálovatelných podnikových aplikací (vrstva obchodní logiky a vrstva přístupu k datům viz. kap a 2.4.3). Využívá k tomu služby EJB kontejneru (kap ) starajícího se o řadu procesů, které běží na pozadí. Programátor se tak může soustředit na vývoj obchodní logiky a nemusí se zabývat psaním neustále se opakujícího servisního kódu18, který do značné míry činí nepřehledným zdrojový kód aplikace. 3.1 Enterprise java beany Enterprise Java beany (EJB) jsou serverové komponenty běžící v EJB kontejneru a slouží k zapouzdření obchodní logiky aplikace. Obchodní logikou máme na mysli zdrojový kód vykonávající funkční požadavky, které má vyvíjený systém splňovat. Například v systému elektronického bankovnictví budou EJB implementovat obchodní logiku v metodách provedprikazkuhrade a odeslivypisuctuna . Vyvoláním těchto metod provede klient příkaz k úhradě a obdrží zprávu o stavu účtu na jeho ovou adresu. Klient v tomto případě může být buď lokální nebo vzdálený. Lokálním klientem je např. komponenta webové vrstvy (JSP nebo Servlet) nebo jiná EJB komponenta v rámci jedné JVM. Vzdáleným klientem může být obecně Java komponenta běžící v jiné JVM, nebo vzdálená webová služba. EJB beany dělíme podle způsobu komunikace s klientem na session beany a na message-driven beany. Session beany slouží k implementaci synchronní komunikace s klientem a Message-driven beany komunikují s klientem asynchronně. Podrobněji si celou problematiku implementace obou skupin EJB beanů popíšeme v kapitolách 3.2 a 3.3. Mezi EJB beany můžeme taktéž zařadit 18 V tomto případě myslíme obslužný kód, který nemá nic společného s obchodní problematikou (business service). Příkladem může být otevření databázového spojení před spuštěním transakce. 24

29 Entity19, kterým se budeme věnovat v kapitole 4 (JPA) a to z toho důvodu, že je lze nasadit i mimo EJB kontejner Metadata - anotace nebo XML? Ještě než se pustíme do popisování jednotlivých EJB komponent, vysvětlíme si jakým způsobem je možné vytvářet metadata k EJB komponentám. Metadata, nebo-li popisná data EJB komponent, slouží k nastavení specifických vlastností. Určují jakým způsobem bude kontejner nakládat s EJB komponenty, popř. s jejich metodami či atributy. Metadata můžou ovlivňovat např. životní cyklus EJB komponent, ověřovat práva klienta pro přístup k obchodní metodě, nastavovat JNDI názvy EJB komponent, zajišťovat dependency injection komponentovým atributům nebo určovat typ EJB komponent21. Metadata můžeme vytvářet dvěma způsoby: buď pomocí anotací přímo v kódu EJB komponent, nebo pomocí XML souboru (deployment descriptor). Při interpretaci metadat platí princip konfigurace výjimkou (configuration by exception), kdy kontejner nastavuje základní provozní hodnoty (default), pokud nebyly zadány žádná nebo minimum metadat. Díky tomuto principu nemusíme ztrácet čas s detailním popisováním veškerých EJB komponent jen proto, že si je chceme spustit. Dalším pravidlem při čtení metadat je skutečnost, že EJB kontejner čte současně jak anotace tak XML a pouze pokud je pomocí XML i anotace nastavena stejná vlastnost, pak platí ta hodnota, která je nastavena v XML. O tom, zda-li použít anotace nebo XML nebo jejich kombinaci záleží vždy na preferenci vývojáře popř. na firemní metodice jakým způsobem tvořit a dokumentovat metadata. Podívejme se nyní na výhody jednotlivých konceptů. Anotace nám nepochybně přinášejí přehlednější kód. Je z nich jasně patrné chování třídy, popř. kusu kódu, a mohou tak částečně posloužit i jako zdroj dokumentace. Oproti tomu díky XML můžeme ponechat zdrojový kód EJB komponent bez závislostí na anotacích z balíčku javax.ejb.*. Navíc při jakékoli změně nastavení EJB komponenty nemusíme zasahovat do zdrojového kódu a provádět následnou kompilaci. Kombinování obou přístupů dohromady může přinést snadnější vývoj, kdy programátor používá výhradně anotace pro zpřehlednění kódu a při ladění a nasazování aplikace se může využít XML, které automaticky přepíše všechny anotace nastavující vlastnosti pro vývojové prostředí. 19 Pozor, neplést s Entity beany z EJB 2.1. Podrobněji o této problematice v kapitole Výčet možností není úplný a s jednotlivými typy metadat se budeme seznamovat v následujícím textu této práce

Co by měl umět dobrý vývojář. Petr Adámek Home Credit International a.s.

Co by měl umět dobrý vývojář. Petr Adámek Home Credit International a.s. Co by měl umět dobrý vývojář Petr Adámek Home Credit International a.s. 2 Vývoj software je Kreativní činnost Umění Věda Řemeslo Co je vlastně vývoj software? Vývoj software je průmyslová disciplína prováděná

Více

Data v počítači EIS MIS TPS. Informační systémy 2. Spojení: e-mail: jan.skrbek@tul.cz tel.: 48 535 2442 Konzultace: úterý 14 20-15 50

Data v počítači EIS MIS TPS. Informační systémy 2. Spojení: e-mail: jan.skrbek@tul.cz tel.: 48 535 2442 Konzultace: úterý 14 20-15 50 Informační systémy 2 Data v počítači EIS MIS TPS strategické řízení taktické řízení operativní řízení a provozu Spojení: e-mail: jan.skrbek@tul.cz tel.: 48 535 2442 Konzultace: úterý 14 20-15 50 18.3.2014

Více

Pokyn D - 293. Sdělení Ministerstva financí k rozsahu dokumentace způsobu tvorby cen mezi spojenými osobami

Pokyn D - 293. Sdělení Ministerstva financí k rozsahu dokumentace způsobu tvorby cen mezi spojenými osobami PŘEVZATO Z MINISTERSTVA FINANCÍ ČESKÉ REPUBLIKY Ministerstvo financí Odbor 39 Č.j.: 39/116 682/2005-393 Referent: Mgr. Lucie Vojáčková, tel. 257 044 157 Ing. Michal Roháček, tel. 257 044 162 Pokyn D -

Více

-1- N á v r h ČÁST PRVNÍ OBECNÁ USTANOVENÍ. 1 Předmět úpravy

-1- N á v r h ČÁST PRVNÍ OBECNÁ USTANOVENÍ. 1 Předmět úpravy -1- I I. N á v r h VYHLÁŠKY ze dne 2009 o účetních záznamech v technické formě vybraných účetních jednotek a jejich předávání do centrálního systému účetních informací státu a o požadavcích na technické

Více

účetních informací státu při přenosu účetního záznamu,

účetních informací státu při přenosu účetního záznamu, Strana 6230 Sbírka zákonů č. 383 / 2009 Částka 124 383 VYHLÁŠKA ze dne 27. října 2009 o účetních záznamech v technické formě vybraných účetních jednotek a jejich předávání do centrálního systému účetních

Více

EXTRAKT z české technické normy

EXTRAKT z české technické normy EXTRAKT z české technické normy Extrakt nenahrazuje samotnou technickou normu, je pouze informativním materiálem o normě. ICS 03.220.20, 35.240.60 Elektronický výběr mýtného Výměna ČSN EN informací mezi

Více

Inovace výuky prostřednictvím šablon pro SŠ

Inovace výuky prostřednictvím šablon pro SŠ Název projektu Číslo projektu Název školy Autor Název šablony Název DUMu Stupeň a typ vzdělávání Vzdělávací oblast Vzdělávací obor Tematický okruh Inovace výuky prostřednictvím šablon pro SŠ CZ.1.07/1.5.00/34.0748

Více

Návrh individuálního národního projektu. Podpora procesů uznávání UNIV 2 systém

Návrh individuálního národního projektu. Podpora procesů uznávání UNIV 2 systém Návrh individuálního národního projektu Podpora procesů uznávání UNIV 2 systém 1. Název projektu Podpora procesů uznávání UNIV 2 systém Anotace projektu Předkládaný projekt navazuje na výsledky systémového

Více

Server. Software serveru. Služby serveru

Server. Software serveru. Služby serveru Server Server je v informatice obecné označení pro počítač či skupinu počítačů, kteří poskytují nějaké služby. Rovněž pojmem server můžeme označit počítačový program, který tyto služby realizuje. Služby

Více

I. Objemové tíhy, vlastní tíha a užitná zatížení pozemních staveb

I. Objemové tíhy, vlastní tíha a užitná zatížení pozemních staveb I. Objemové tíhy, vlastní tíha a užitná zatížení pozemních staveb 1 VŠEOBECNĚ ČSN EN 1991-1-1 poskytuje pokyny pro stanovení objemové tíhy stavebních a skladovaných materiálů nebo výrobků, pro vlastní

Více

funkční na dual-sim telefonech možnost přesměrovat příchozí hovory možnost nastavení více telefonních čísel pro případ, že je jedno nedostupné

funkční na dual-sim telefonech možnost přesměrovat příchozí hovory možnost nastavení více telefonních čísel pro případ, že je jedno nedostupné Analyzujte, navrhněte a implementujte aplikaci pro sledování spánku dětí Chůvička pro telefony na platformě Android. Od existujících aplikací se bude aplikace odlišovat tímto: funkční na dual-sim telefonech

Více

ČÁST PÁTÁ POZEMKY V KATASTRU NEMOVITOSTÍ

ČÁST PÁTÁ POZEMKY V KATASTRU NEMOVITOSTÍ ČÁST PÁTÁ POZEMKY V KATASTRU NEMOVITOSTÍ Pozemkem se podle 2 písm. a) katastrálního zákona rozumí část zemského povrchu, a to část taková, která je od sousedních částí zemského povrchu (sousedních pozemků)

Více

Příloha č. 54. Specifikace hromadné aktualizace SMS-KLAS

Příloha č. 54. Specifikace hromadné aktualizace SMS-KLAS Název projektu: Redesign Statistického informačního systému v návaznosti na zavádění egovernmentu v ČR Příjemce: Česká republika Český statistický úřad Registrační číslo projektu: CZ.1.06/1.1.00/07.06396

Více

PŘÍLOHA 10 SMLOUVY O PŘÍSTUPU KE KONCOVÝM ÚSEKŮM. Pravidla a postupy

PŘÍLOHA 10 SMLOUVY O PŘÍSTUPU KE KONCOVÝM ÚSEKŮM. Pravidla a postupy PŘÍLOHA 10 SMLOUVY O PŘÍSTUPU KE KONCOVÝM ÚSEKŮM Pravidla a postupy OBSAH Rozsah dokumentu... 3 1 Implementace Smlouvy... 3 2 Popisy metod komunikace... 4 2.1 B2B GW (SI)... 4 2.2 WEB Interface (WI)...

Více

21 SROVNÁVACÍ LCA ANALÝZA KLASICKÝCH ŽÁROVEK A KOMPAKTNÍCH ZÁŘIVEK

21 SROVNÁVACÍ LCA ANALÝZA KLASICKÝCH ŽÁROVEK A KOMPAKTNÍCH ZÁŘIVEK 21 SROVNÁVACÍ LCA ANALÝZA KLASICKÝCH ŽÁROVEK A KOMPAKTNÍCH ZÁŘIVEK Pavel Rokos ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE Fakulta elektrotechnická Katedra elektrotechnologie Úvod Světelné zdroje jsou jedním

Více

Kočí, R.: Účelové pozemní komunikace a jejich právní ochrana Leges Praha, 2011

Kočí, R.: Účelové pozemní komunikace a jejich právní ochrana Leges Praha, 2011 Kočí, R.: Účelové pozemní komunikace a jejich právní ochrana Leges Praha, 2011 Účelové komunikace jsou důležitou a rozsáhlou částí sítě pozemních komunikací v České republice. Na rozdíl od ostatních kategorií

Více

VYKAZOVÁNÍ VÝSLEDKŮ VÝZKUMU A VÝVOJE

VYKAZOVÁNÍ VÝSLEDKŮ VÝZKUMU A VÝVOJE VYKAZOVÁNÍ VÝSLEDKŮ VÝZKUMU A VÝVOJE I. Úvodní informace Vedení fakulty upozorňuje akademické pracovníky a doktorandy na následující skutečnosti: V souvislosti s probíhající reformou výzkumu a vývoje v

Více

Modul Řízení objednávek. www.money.cz

Modul Řízení objednávek. www.money.cz Modul Řízení objednávek www.money.cz 2 Money S5 Řízení objednávek Funkce modulu Obchodní modul Money S5 Řízení objednávek slouží k uskutečnění hromadných akcí s objednávkami, které zajistí dostatečné množství

Více

3 Vývojová prostředí, základní prvky jazyka Java, konvence jazyka Java

3 Vývojová prostředí, základní prvky jazyka Java, konvence jazyka Java 3 Vývojová prostředí, základní prvky jazyka Java, konvence jazyka Java Studijní cíl V tomto bloku navážeme na konec předchozího bloku a seznámíme se s vývojovými prostředími, které se nejčastěji používají

Více

Česká zemědělská univerzita v Praze Fakulta provozně ekonomická. Obor veřejná správa a regionální rozvoj. Diplomová práce

Česká zemědělská univerzita v Praze Fakulta provozně ekonomická. Obor veřejná správa a regionální rozvoj. Diplomová práce Česká zemědělská univerzita v Praze Fakulta provozně ekonomická Obor veřejná správa a regionální rozvoj Diplomová práce Problémy obce při zpracování rozpočtu obce TEZE Diplomant: Vedoucí diplomové práce:

Více

Objektově orientované databáze

Objektově orientované databáze Objektově orientované databáze Miroslav Beneš Obsah přednášky Motivace Vlastnosti databázových systémů Logické datové modely Co potřebujeme modelovat? Identifikace entit v~relačních SŘBD Co je to objektová

Více

FWA (Fixed Wireless Access) Pevná rádiová přípojka

FWA (Fixed Wireless Access) Pevná rádiová přípojka FWA (Fixed Wireless Access) Pevná rádiová přípojka Technologie FWA (Fixed Wireless Access, FWA) je obecné označení pro skupinu technologií, které umožňují zřízení pevné rádiové přípojky prostřednictvím

Více

29 Evidence smluv. Popis modulu. Záložka Evidence smluv

29 Evidence smluv. Popis modulu. Záložka Evidence smluv 29 Evidence smluv Uživatelský modul Evidence smluv slouží ke správě a evidenci smluv organizace s možností připojení vlastní smlouvy v elektronické podobě včetně přidělování závazků ze smluv jednotlivým

Více

Metodika pro nákup kancelářské výpočetní techniky

Metodika pro nákup kancelářské výpočetní techniky Příloha č. 2 Metodika pro nákup kancelářské výpočetní techniky 1. Vymezení skupin výrobků Kancelářská výpočetní technika, jak o ni pojednává tento dokument, zahrnuje tři skupiny výrobků: počítače osobní

Více

Specialista pro vytvá řenívztahů Specialist for Creating Relations

Specialista pro vytvá řenívztahů Specialist for Creating Relations Specialista pro vytvá řenívztahů Specialist for Creating Relations Roman KOZEL If universities want to succeed on the market, they have to deal with higher assertivity their graduates. They need a specialist,

Více

VI. Finanční gramotnost šablony klíčových aktivit

VI. Finanční gramotnost šablony klíčových aktivit VI. Finanční gramotnost šablony klíčových aktivit Číslo klíčové aktivity VI/2 Název klíčové aktivity Vazba na podporovanou aktivitu z PD OP VK Cíle realizace klíčové aktivity Inovace a zkvalitnění výuky

Více

VYSOKÁ ŠKOLA FINANČNÍ A SPRÁVNÍ, o.p.s. Fakulta ekonomických studií katedra řízení podniku. Předmět: ŘÍZENÍ LIDSKÝCH ZDROJŮ (B-RLZ)

VYSOKÁ ŠKOLA FINANČNÍ A SPRÁVNÍ, o.p.s. Fakulta ekonomických studií katedra řízení podniku. Předmět: ŘÍZENÍ LIDSKÝCH ZDROJŮ (B-RLZ) VYSOKÁ ŠKOLA FINANČNÍ A SPRÁVNÍ, o.p.s. Fakulta ekonomických studií katedra řízení podniku Předmět: ŘÍZENÍ LIDSKÝCH ZDROJŮ (B-RLZ) Téma 7: HODNOCENÍ PRACOVNÍHO VÝKONU, ODMĚŇOVÁNÍ ŘÍZENÍ PRACOVNÍHO VÝKONU

Více

DODATEČNÉ INFORMACE K ZADÁVACÍM PODMÍNKÁM

DODATEČNÉ INFORMACE K ZADÁVACÍM PODMÍNKÁM Zadavatel: Moravskoslezský kraj se sídlem Ostrava, 28. října 117, PSČ 702 18 IČ: 70890692 Veřejná zakázka: Datové sklady - SW Technologie a metadatový systém, Datová tržiště ekonomiky, Školství, statistiky,

Více

Algoritmizace a programování

Algoritmizace a programování Algoritmizace a programování V algoritmizaci a programování je důležitá schopnost analyzovat a myslet. Všeobecně jsou odrazovým můstkem pro řešení neobvyklých, ale i každodenních problémů. Naučí nás rozdělit

Více

MAGIS ve strojírenské firmě Strojírna Vehovský s.r.o.

MAGIS ve strojírenské firmě Strojírna Vehovský s.r.o. Tel : 553 607 521 MAGIS ve strojírenské firmě Strojírna Vehovský s.r.o. Obchodní evidenci, tj. Nabídky, Objednávky. Skladovou evidenci, nákup materiálu. Technologickou přípravu výroby. Řízení a plánování

Více

METODIKA PRO NÁVRH TEPELNÉHO ČERPADLA SYSTÉMU VZDUCH-VODA

METODIKA PRO NÁVRH TEPELNÉHO ČERPADLA SYSTÉMU VZDUCH-VODA METODIKA PRO NÁVRH TEPELNÉHO ČERPADLA SYSTÉMU VZDUCH-VODA Získávání tepla ze vzduchu Tepelná čerpadla odebírající teplo ze vzduchu jsou označovaná jako vzduch-voda" případně vzduch-vzduch". Teplo obsažené

Více

ISA 402 ZVAŽOVANÉ SKUTEČNOSTI TÝKAJÍCÍ SE SUBJEKTŮ VYUŽÍVAJÍCÍCH SLUŽEB SERVISNÍCH ORGANIZACÍ

ISA 402 ZVAŽOVANÉ SKUTEČNOSTI TÝKAJÍCÍ SE SUBJEKTŮ VYUŽÍVAJÍCÍCH SLUŽEB SERVISNÍCH ORGANIZACÍ ZVAŽOVANÉ SKUTEČNOSTI TÝKAJÍCÍ SE SUBJEKTŮ VYUŽÍVAJÍCÍCH SLUŽEB SERVISNÍCH ORGANIZACÍ (Platí pro audity účetních závěrek sestavených za období počínající 15. prosince 2004 nebo po tomto datu.)* O B S A

Více

Co najdete v ASPI? (pro uživatele SVI FSE UJEP)

Co najdete v ASPI? (pro uživatele SVI FSE UJEP) Co najdete v ASPI? (pro uživatele SVI FSE UJEP) ASPI = komplexní pokrytí všech předpisů publikovaných na území ČR včetně předpisů měst a obcí a předpisů ES / EU Manuál ASPI: http://www.systemaspi.cz/co_je_system_aspi/co_je_system_aspi.html

Více

Možnosti návrhu webových aplikací. Lukáš Gemela, A11N0101P lukas.gemela@gmail.com

Možnosti návrhu webových aplikací. Lukáš Gemela, A11N0101P lukas.gemela@gmail.com Možnosti návrhu webových aplikací (Výňatek z diplomové práce) Lukáš Gemela, A11N0101P lukas.gemela@gmail.com 25. června 2013 Obsah 1 Úvod 2 2 Vícevrstvá architektura 3 2.1 Zásady pro návrh vícevrstvého

Více

Informační systém pro rezervaci pokojů hotelu SPORT

Informační systém pro rezervaci pokojů hotelu SPORT VŠB Technická univerzita Ostrava Fakulta elektrotechniky a informatiky Katedra informatiky Informační systém pro rezervaci pokojů hotelu SPORT Programátorská příručka systému Příloha bakalářské práce 2006

Více

Příspěvky poskytované zaměstnavatelům na zaměstnávání osob se zdravotním postižením Dle zákona č. 435/2004 Sb., o zaměstnanosti, v platném znění.

Příspěvky poskytované zaměstnavatelům na zaměstnávání osob se zdravotním postižením Dle zákona č. 435/2004 Sb., o zaměstnanosti, v platném znění. 6 Právní postavení a ochrana osob se zdravotním postižením Příspěvky poskytované zaměstnavatelům na zaměstnávání osob se zdravotním postižením Dle zákona č. 435/2004 Sb., o zaměstnanosti, v platném znění.

Více

INFORMATIKA V CHOVECH PRASAT

INFORMATIKA V CHOVECH PRASAT INFORMATIKA V CHOVECH PRASAT Bajbár, M. KONFIRM, spol. s r.o. Tento článek si klade za cíl informovat odbornou veřejnost z oblasti chovu a šlechtění prasat o možnostech využití a základních analytických

Více

Výstup. Registrační číslo projektu CZ.01.07/1.1.01/01.0004. PaedDr. Vladimír Hůlka, PaedDr. Zdenka Kınigsmarková

Výstup. Registrační číslo projektu CZ.01.07/1.1.01/01.0004. PaedDr. Vladimír Hůlka, PaedDr. Zdenka Kınigsmarková Projekt: Přispějme k ještě kvalitnější a modernější výuce na ZŠ Chotěboř Buttulova Registrační číslo projektu CZ.01.07/1.1.01/01.0004 Tento projekt je spolufinancován Evropským sociálním fondem a státním

Více

Konzistence databáze v nekonzistentním světě

Konzistence databáze v nekonzistentním světě Konzistence databáze v nekonzistentním světě Radim Bača Katedra informatiky Fakulta elektrotechniky a informatiky VŠB Technická univerzita Ostrava ŠKOMAM 2012-1- 2/2/2012 Obsah Vysvětĺıme si, co je transakce

Více

STANDARD 3. JEDNÁNÍ SE ZÁJEMCEM (ŽADATELEM) O SOCIÁLNÍ SLUŽBU

STANDARD 3. JEDNÁNÍ SE ZÁJEMCEM (ŽADATELEM) O SOCIÁLNÍ SLUŽBU STANDARD 3. JEDNÁNÍ SE ZÁJEMCEM (ŽADATELEM) O SOCIÁLNÍ SLUŽBU CÍL STANDARDU 1) Tento standard vychází ze zákona č. 108/2006 Sb., o sociálních službách (dále jen Zákon ) a z vyhlášky č. 505/2006 Sb., kterou

Více

Nástroje a frameworky pro automatizovaný vývoj. Jaroslav Žáček jaroslav.zacek@osu.cz http://www1.osu.cz/~zacek/

Nástroje a frameworky pro automatizovaný vývoj. Jaroslav Žáček jaroslav.zacek@osu.cz http://www1.osu.cz/~zacek/ Nástroje a frameworky pro automatizovaný vývoj Jaroslav Žáček jaroslav.zacek@osu.cz http://www1.osu.cz/~zacek/ Proces vývoje webové aplikace Předepsaná adresářová struktura. Kompilace zdrojových kódů.

Více

Seriál: Management projektů 7. rámcového programu

Seriál: Management projektů 7. rámcového programu Seriál: Management projektů 7. rámcového programu Část 4 Podpis Konsorciální smlouvy V předchozím čísle seriálu o Managementu projektů 7. rámcového programu pro výzkum, vývoj a demonstrace (7.RP) byl popsán

Více

ICT plán ZŠ praktické Bochov na rok 2009

ICT plán ZŠ praktické Bochov na rok 2009 ICT plán ZŠ praktické Bochov na rok 2009 Na období 1.1.2009 do 31.12.2009. (Dle metodického pokynu MŠMT č.j. 30799/2005-551) Úvod.1 1.1. ICT gramotnost pedagogů 2 2. 2.. 3 1.2. Software 2. 2.. 3 1.3. Hardware

Více

Metodika daňových odpočtů na VaV pro poplatníky

Metodika daňových odpočtů na VaV pro poplatníky Metodika daňových odpočtů na VaV pro poplatníky Určeno poplatníkům, kteří mohou a mají zájem využít daňových odpočtů na podporu výzkumu a vývoje (VaV) podle zákona č. 586/1992 Sb., o daních z příjmů. 1.

Více

Miroslav Kunt. Srovnávací přehled terminologie archivních standardů ISAD(G), ISAAR(CPF) a české archivní legislativy

Miroslav Kunt. Srovnávací přehled terminologie archivních standardů ISAD(G), ISAAR(CPF) a české archivní legislativy Příloha č. 2 k výzkumné zprávě projektu VE20072009004 Miroslav Kunt Srovnávací přehled terminologie archivních standardů ISAD(G), ISAAR(CPF) a české archivní legislativy Pozn.: Za českou archivní legislativu

Více

Upíše-li akcie osoba, jež jedná vlastním jménem, na účet společnosti, platí, že tato osoba upsala akcie na svůj účet.

Upíše-li akcie osoba, jež jedná vlastním jménem, na účet společnosti, platí, že tato osoba upsala akcie na svůj účet. UPOZORNĚNÍ Tato osnova je určena výhradně pro studijní účely posluchačů předmětu Obchodní právo v případových studiích přednášeném na Právnické fakultě Univerzity Karlovy v Praze a má sloužit pro jejich

Více

Novela zákona o DPH a změny v programu Účtárna k 1.4.2011

Novela zákona o DPH a změny v programu Účtárna k 1.4.2011 Novela zákona o DPH a změny v programu Účtárna k 1.4.2011 Vážení uživatelé programového vybavení firmy VIS, jistě jste z médií zaznamenali informaci, o novelizaci zákona č. 235/2004 Sb., o dani z přidané

Více

112 LINKA TÍSŇOVÝCH VOLÁNÍ

112 LINKA TÍSŇOVÝCH VOLÁNÍ 112 LINKA TÍSŇOVÝCH VOLÁNÍ 112 GIS PRINCIPY SYSTÉMU Plné územní pokrytí ČR na shodné úrovni kvality. Přenos zpracování z okresní úrovně (77 okresů) na krajskou úroveň (14 krajů). Podpora příjmu volání

Více

13. Sítě WAN. Rozlehlé sítě WAN. Počítačové sítě I. 1 (6) KST/IPS1. Studijní cíl. Představíme rozlehlé sítě typu WAN. Doba nutná k nastudování

13. Sítě WAN. Rozlehlé sítě WAN. Počítačové sítě I. 1 (6) KST/IPS1. Studijní cíl. Představíme rozlehlé sítě typu WAN. Doba nutná k nastudování 13. Sítě WAN Studijní cíl Představíme rozlehlé sítě typu WAN. Doba nutná k nastudování 2 hodiny Rozlehlé sítě WAN Uvedená kapitola vychází ze zdroje [1]. Rozlehlé sítě umožňují komunikaci (přenos dat,

Více

PHP Best Practices. Please try to fit your code to 80 columns. That's decimal 80. A. Morton

PHP Best Practices. Please try to fit your code to 80 columns. That's decimal 80. A. Morton PHP Best Practices Please try to fit your code to 80 columns. That's decimal 80. A. Morton Koncepce větších aplikací Front Controller Design Pattern Celý web má jeden přístupový bod, přes který se posílají

Více

Cílem kapitoly je seznámit studenta se strukturou programu a jeho překladem.

Cílem kapitoly je seznámit studenta se strukturou programu a jeho překladem. Nadpis kapitoly Cílem kapitoly je seznámit studenta se strukturou programu a jeho překladem. Klíčové pojmy: Překladač, editor, compiler, linker. Úvod Abychom mohly využívat našich napsaných programů, musíme

Více

MV ČR, Odbor egovernmentu. renata.horakova@mvcr.cz. Webové stránky veřejné správy - minimalizace jejich zranitelnosti a podpora bezpečnostních prvků

MV ČR, Odbor egovernmentu. renata.horakova@mvcr.cz. Webové stránky veřejné správy - minimalizace jejich zranitelnosti a podpora bezpečnostních prvků Návrh výzkumné potřeby státní správy pro zadání veřejné zakázky A. Předkladatel garant výzkumné potřeby Název organizace Ministerstvo vnitra Adresa Milady Horákové 133/ Kontaktní osoba Ing. Jaroslav Scheuba

Více

ZPRÁVA O PRŮBĚHU ŘEŠENÍ PROJEKTU

ZPRÁVA O PRŮBĚHU ŘEŠENÍ PROJEKTU Page 1/1 ZPRÁVA O PRŮBĚHU ŘEŠENÍ PROJEKTU Cíle projektu Uveďte předem stanovené cíle a u každého z nich uveďte, do jaké míry byl splněn, případně důvod, proč splněn nebyl. Cílem projektu bylo skokové zvýšení

Více

veřejná zakázka na stavební prace s názvem: Sdružená kanalizační přípojka - Město Lázně Bělohrad

veřejná zakázka na stavební prace s názvem: Sdružená kanalizační přípojka - Město Lázně Bělohrad Zadávací dokumentace pro veřejnou zakázku malého rozsahu na stavební prace mimo režim zák. č. 137/2006 Sb., o veřejných zakázkách, v platném znění (dále jen zákon ) veřejná zakázka na stavební prace s

Více

Projekt: Inovace oboru Mechatronik pro Zlínský kraj Registrační číslo: CZ.1.07/1.1.08/03.0009

Projekt: Inovace oboru Mechatronik pro Zlínský kraj Registrační číslo: CZ.1.07/1.1.08/03.0009 Projekt: Inovace oboru Mechatronik pro Zlínský kraj Registrační číslo: CZ.1.07/1.1.08/03.0009 Zálohování dat Většina výkladových slovníků definuje zálohu jako kopii dat na samostatný datový nosič pro případ

Více

Memoria Mundi Series Bohemica z trezoru na Internet

Memoria Mundi Series Bohemica z trezoru na Internet Memoria Mundi Series Bohemica z trezoru na Internet Ing. Stanislav Psohlavec AiP Beroun s.r.o. Pilíře projektu MMSB... 1 Digitalizace, digitální dokumenty, digitální knihovna... 1 MASTER... 1 Využívání

Více

5.6.6.3. Metody hodnocení rizik

5.6.6.3. Metody hodnocení rizik 5.6.6.3. Metody hodnocení rizik http://www.guard7.cz/lexikon/lexikon-bozp/identifikace-nebezpeci-ahodnoceni-rizik/metody-hodnoceni-rizik Pro hodnocení a analýzu rizik se používají různé metody. Výběr metody

Více

Koncepce rozvoje Polytematického strukturovaného hesláře (PSH) 2012 2014

Koncepce rozvoje Polytematického strukturovaného hesláře (PSH) 2012 2014 Koncepce rozvoje Polytematického strukturovaného hesláře (PSH) 2012 2014 Schváleno Radou pro koordinaci Polytematického strukturovaného hesláře (PSH) dne: 12. 12. 2011 ÚVOD V době svého vzniku (90. léta

Více

Využití EduBase ve výuce 10

Využití EduBase ve výuce 10 B.I.B.S., a. s. Využití EduBase ve výuce 10 Projekt Vzdělávání pedagogů v prostředí cloudu reg. č. CZ.1.07/1.3.00/51.0011 Mgr. Jitka Kominácká, Ph.D. a kol. 2015 1 Obsah 1 Obsah... 2 2 Úvod... 3 3 Autorský

Více

Poskytovatel: Národní rada osob se zdravotním postižením ČR, o.s. Poradna pro uživatele sociálních služeb Děčín

Poskytovatel: Národní rada osob se zdravotním postižením ČR, o.s. Poradna pro uživatele sociálních služeb Děčín Poskytovatel: Národní rada osob se zdravotním postižením ČR, o.s. Poradna pro uživatele sociálních služeb Děčín Druh sociální služby (dle zákona č. 108/2006 Sb., o sociálních službách): Odborné sociální

Více

Marketing. Modul 3 Zásady marketingu

Marketing. Modul 3 Zásady marketingu Marketing Modul 3 Zásady marketingu Výukový materiál vzdělávacích kurzů v rámci projektu Zvýšení adaptability zaměstnanců organizací působících v sekci kultura Tento materiál je spolufinancován z Evropského

Více

Obalové hospodářství

Obalové hospodářství Část F Obalové hospodářství podle zákona č. 477/2001 Sb., o obalech Obsah Povinnosti firem v podnikové ekologii 1. Úvod...1 2. Základní pojmy...3 3. Povinné osoby...5 4. Přehled povinností...7 5. Právní

Více

Databázové a informační systémy

Databázové a informační systémy Databázové a informační systémy 1. Teorie normálních forem Pojem normálních forem se používá ve spojitosti s dobře navrženými tabulkami. Správně vytvořené tabulky splňují 4 základní normální formy, které

Více

Meze použití dílčího hodnotícího kritéria kvalita plnění a problematika stanovování vah kritérií

Meze použití dílčího hodnotícího kritéria kvalita plnění a problematika stanovování vah kritérií kritéria kvalita plnění a problematika Příloha č. B6 Dokumentu Jak zohledňovat principy 3E (hospodárnost, efektivnost a účelnost) v postupech zadávání veřejných zakázek Vydal: Ministerstvo pro místní rozvoj

Více

Společné stanovisko GFŘ a MZ ke změně sazeb DPH na zdravotnické prostředky od 1. 1. 2013

Společné stanovisko GFŘ a MZ ke změně sazeb DPH na zdravotnické prostředky od 1. 1. 2013 Společné stanovisko GFŘ a MZ ke změně sazeb DPH na zdravotnické prostředky od 1. 1. 2013 Od 1. 1. 2013 došlo k novelizaci zákona č. 235/2004 Sb., o dani z přidané hodnoty (dále jen zákon o DPH ), mj. i

Více

Platformy / technologie. Jaroslav Žáček jaroslav.zacek@osu.cz

Platformy / technologie. Jaroslav Žáček jaroslav.zacek@osu.cz Platformy / technologie Jaroslav Žáček jaroslav.zacek@osu.cz Které platformy / technologie znáte Java Java Java EE 5 Java EE 6 Pruning, Extensibility Ease of Dev, CDI, JAX-RS Java EE 7! JMS 2, Batch, Concurrency,

Více

Databáze RÚIAN a možnosti jejího využití pro geografickou podporu AČR

Databáze RÚIAN a možnosti jejího využití pro geografickou podporu AČR Databáze RÚIAN a možnosti jejího využití pro geografickou podporu AČR Ing. Radek Augustýn Výzkumný ústav geodetický, topografický a kartografický, v.v.i. Úvod V polovině roku 2012 byla státní správě i

Více

Víceúčelová sportovní hala Modřice Odpovědi na dotazy k architektonické soutěži

Víceúčelová sportovní hala Modřice Odpovědi na dotazy k architektonické soutěži Víceúčelová sportovní hala Modřice Odpovědi na dotazy k architektonické soutěži Dotaz č. 4: V podmínkách je uvedeno, cituji, "Pokud předloží soutěžní návrh jako účastník soutěže více fyzických osob ve

Více

Zadávání tiskových zakázek prostřednictvím JDF a Adobe Acrobat Professional

Zadávání tiskových zakázek prostřednictvím JDF a Adobe Acrobat Professional Zadávání tiskových zakázek prostřednictvím JDF a Adobe Acrobat Professional Nejčastěji se o JDF hovoří při řízení procesů v tiskových provozech. JDF se však má stát komunikačním prostředkem mezi všemi

Více

EVROPSKÝ PARLAMENT 2014-2019. Výbor pro životní prostředí, veřejné zdraví a bezpečnost potravin NÁVRH STANOVISKA

EVROPSKÝ PARLAMENT 2014-2019. Výbor pro životní prostředí, veřejné zdraví a bezpečnost potravin NÁVRH STANOVISKA EVROPSKÝ PARLAMENT 2014-2019 Výbor pro životní prostředí, veřejné zdraví a bezpečnost potravin 4. 3. 2015 2014/0255(COD) NÁVRH STANOVISKA Výboru pro životní prostředí, veřejné zdraví a bezpečnost potravin

Více

VYR-32 POKYNY PRO SPRÁVNOU VÝROBNÍ PRAXI - DOPLNĚK 6

VYR-32 POKYNY PRO SPRÁVNOU VÝROBNÍ PRAXI - DOPLNĚK 6 VYR-32 POKYNY PRO SPRÁVNOU VÝROBNÍ PRAXI - DOPLNĚK 6 Platnost od 1.1.2004 VÝROBA PLYNŮ PRO MEDICINÁLNÍ ÚČELY VYDÁNÍ PROSINEC 2003 1. Zásady Tento doplněk se zabývá průmyslovou výrobou medicinálních plynů,

Více

1 METODICKÉ POKYNY AD HOC MODUL 2007: Pracovní úrazy a zdravotní problémy související se zaměstnáním

1 METODICKÉ POKYNY AD HOC MODUL 2007: Pracovní úrazy a zdravotní problémy související se zaměstnáním 1 METODICKÉ POKYNY AD HOC MODUL 2007: Pracovní úrazy a zdravotní problémy související se zaměstnáním Ad hoc modul 2007 vymezuje Nařízení Komise (ES) č. 431/2006 z 24. února 2006. Účelem ad hoc modulu 2007

Více

VYHLÁŠKA ČÁST PRVNÍ STÁTNÍ ZKOUŠKY Z GRAFICKÝCH DISCIPLÍN. Předmět úpravy

VYHLÁŠKA ČÁST PRVNÍ STÁTNÍ ZKOUŠKY Z GRAFICKÝCH DISCIPLÍN. Předmět úpravy 58 VYHLÁŠKA ze dne 10. února 2016 o státních zkouškách z grafických disciplín a o změně vyhlášky č. 3/2015 Sb., o některých dokladech o vzdělání Ministerstvo školství, mládeže a tělovýchovy stanoví podle

Více

NEJČASTĚJI KLADENÉ DOTAZY K PUBLICITĚ PROJEKTŮ OP LZZ

NEJČASTĚJI KLADENÉ DOTAZY K PUBLICITĚ PROJEKTŮ OP LZZ NEJČASTĚJI KLADENÉ DOTAZY K PUBLICITĚ PROJEKTŮ OP LZZ A) Povinnost příjemců zajišťovat publicitu projektů 1. Z čeho vyplývá povinnost příjemců podpory dodržovat vizuální identitu ESF/OP LZZ a zajišťovat

Více

Výzva zájemcům k podání nabídky a Zadávací dokumentace

Výzva zájemcům k podání nabídky a Zadávací dokumentace Výzva zájemcům k podání nabídky a Zadávací dokumentace dle 6 a 18 odst.5 Zákona č.137/2006 Sb. o veřejných zakázkách (dále jen Zákon ) a Závazných pokynů pro žadatele a příjemce podpory v OPŽP na veřejnou

Více

I. Všeobecná ustanovení

I. Všeobecná ustanovení OBCHODNÍ PODMÍNKY KAMPANĚ STUDIO X51 ACADEMY I. Všeobecná ustanovení Vyplněním registračního formuláře a souhlasem s Provizními po dmínkami,souhlasí registrující se uživatel (dále jen partner ) s podmínkami

Více

Ukázka knihy z internetového knihkupectví www.kosmas.cz

Ukázka knihy z internetového knihkupectví www.kosmas.cz Ukázka knihy z internetového knihkupectví www.kosmas.cz Mgr. Jitka Hůsková, Mgr. Petra Kašná OŠETŘOVATELSTVÍ OŠETŘOVATELSKÉ POSTUPY PRO ZDRAVOTNICKÉ ASISTENTY Pracovní sešit II/2. díl Recenze: Mgr. Taťána

Více

Česká školní inspekce Středočeský inspektorát INSPEKČNÍ ZPRÁVA. Čj.: ČŠIS-128/11-S. Mateřská škola Červený Újezd, okres Praha-západ

Česká školní inspekce Středočeský inspektorát INSPEKČNÍ ZPRÁVA. Čj.: ČŠIS-128/11-S. Mateřská škola Červený Újezd, okres Praha-západ Česká školní inspekce Středočeský inspektorát INSPEKČNÍ ZPRÁVA Název právnické osoby vykonávající činnost školy: Sídlo: Mateřská škola Červený Újezd, okres Praha-západ Červený Újezd 30, 273 51 Unhošť IČ:

Více

Všeobecné podmínky provozu sběrných míst kolektivního systému Eltma

Všeobecné podmínky provozu sběrných míst kolektivního systému Eltma Všeobecné podmínky provozu sběrných míst kolektivního systému Eltma 1. ZŘÍZENÍ SM Kolektivní systém 1.1. ELT Management Company Czech Republic s.r.o. ( Eltma ) je provozovatelem neziskového kolektivního

Více

Průzkum veřejného mínění věcné hodnocení

Průzkum veřejného mínění věcné hodnocení Příloha č. 2 ke Zprávě o posouzení a hodnocení nabídek Průzkum veřejného mínění věcné hodnocení 1. FACTUM INVENIO ad 2. Popis metodiky průzkumu 80 bodů Hodnotící komise posoudila nabídku uchazeče v tomto

Více

JAK VÍTĚZIT NAD RIZIKY. Aktivní management rizik nástroj řízení úspěšných firem

JAK VÍTĚZIT NAD RIZIKY. Aktivní management rizik nástroj řízení úspěšných firem JAK VÍTĚZIT NAD RIZIKY Aktivní management rizik nástroj řízení úspěšných firem 1 2 PhDr. Ing. Jiří Kruliš JAK VÍTĚZIT NAD RIZIKY Aktivní management rizik nástroj řízení úspěšných firem Linde Praha akciová

Více

Využití interaktivní tabule ve výuce

Využití interaktivní tabule ve výuce Využití interaktivní tabule ve výuce Vzdělávání je neustále inovováno využíváním moderní didaktické techniky a učebních pomůcek, které se pro dnešní generaci vzdělávání staly téměř nepostradatelnými. V

Více

Zdravotní nauka 2. díl

Zdravotní nauka 2. díl Iva Nováková Učebnice pro obor sociální činnost stavba lidského těla Zdravotní nauka 1. díl Učebnice pro obor sociální činnost Iva Nováková ISBN 978-80-247-3708-9 Grada Publishing, a.s., U Průhonu 22,

Více

Kritéria zelených veřejných zakázek v EU pro zdravotnětechnické armatury

Kritéria zelených veřejných zakázek v EU pro zdravotnětechnické armatury Kritéria zelených veřejných zakázek v EU pro zdravotnětechnické armatury Zelené veřejné zakázky jsou dobrovolným nástrojem. V tomto dokumentu jsou uvedena kritéria EU, která byla vypracována pro skupinu

Více

Zajištění a kontrola kvality

Zajištění a kontrola kvality Zajištění a kontrola kvality Všeobecné podmínky Zhotovitel zavede a bude dodržovat vhodný Systém zajištění kvality pro všechny své práce (plán kontrol a zkoušek). Systém bude podrobně popsán a k předání

Více

PŘÍRUČKA K PŘEDKLÁDÁNÍ PRŮBĚŽNÝCH ZPRÁV, ZPRÁV O ČERPÁNÍ ROZPOČTU A ZÁVĚREČNÝCH ZPRÁV PROJEKTŮ PODPOŘENÝCH Z PROGRAMU BETA

PŘÍRUČKA K PŘEDKLÁDÁNÍ PRŮBĚŽNÝCH ZPRÁV, ZPRÁV O ČERPÁNÍ ROZPOČTU A ZÁVĚREČNÝCH ZPRÁV PROJEKTŮ PODPOŘENÝCH Z PROGRAMU BETA č. j.: TACR/14666/2014 PŘÍRUČKA K PŘEDKLÁDÁNÍ PRŮBĚŽNÝCH ZPRÁV, ZPRÁV O ČERPÁNÍ ROZPOČTU A ZÁVĚREČNÝCH ZPRÁV PROJEKTŮ PODPOŘENÝCH Z PROGRAMU BETA Schválil/a: Lenka Pilátová, vedoucí oddělení realizace

Více

IMPLEMENTACE SW NÁSTROJE PROCESNÍHO ŘÍZENÍ ATTIS

IMPLEMENTACE SW NÁSTROJE PROCESNÍHO ŘÍZENÍ ATTIS IMPLEMENTACE SW NÁSTROJE PROCESNÍHO ŘÍZENÍ ATTIS TVORBA PROCESNÍ MAPY V PODMÍNKÁCH MĚSTSKÉHO ÚŘADU TURNOV Ostrava, 6. října 2011 www.attis.cz ATTN Consulting s.r.o. 1 Obsah Zadání projektu, jeho specifika

Více

Fakulta provozně ekonomická. Analýza způsobů financování při pořízení dlouhodobého hmotného majetku z hlediska účetního a daňového

Fakulta provozně ekonomická. Analýza způsobů financování při pořízení dlouhodobého hmotného majetku z hlediska účetního a daňového ČESKÁ ZEMĚDĚLSKÁ UNIVERZITA V PRAZE Fakulta provozně ekonomická obor Provoz a ekonomika kombinované studium Katedra obchodu a financí TEZE K DIPLOMOVÉ PRÁCI Analýza způsobů financování při pořízení dlouhodobého

Více

Programový komplet pro evidence provozu jídelny v. 2.55. modul Sklad. 2001 Sviták Bechyně Ladislav Sviták hotline: 608/253 642

Programový komplet pro evidence provozu jídelny v. 2.55. modul Sklad. 2001 Sviták Bechyně Ladislav Sviták hotline: 608/253 642 Programový komplet pro evidence provozu jídelny v. 2.55 modul Sklad 2001 Sviták Bechyně Ladislav Sviták hotline: 608/253 642 Obsah 1 Programový komplet pro evidenci provozu jídelny modul SKLAD...3 1.1

Více

Směrnice pro vedení, vypracování a zveřejňování bakalářských prací na Vysoké škole polytechnické Jihlava

Směrnice pro vedení, vypracování a zveřejňování bakalářských prací na Vysoké škole polytechnické Jihlava Vysoká škola polytechnická Jihlava Č. j. KR/11/00111 11/02088 Směrnice pro vedení, vypracování a zveřejňování bakalářských prací na Vysoké škole polytechnické Jihlava Úvod Tato směrnice obsahuje základní

Více

ATAZ PRVNÍ ATELIÉR Charakteristika předmětu Hlavní cíl práce Dílčí cíle Požadovaný standard studenta po absolvování předmětu: Obsah Volba zadání

ATAZ PRVNÍ ATELIÉR Charakteristika předmětu Hlavní cíl práce Dílčí cíle Požadovaný standard studenta po absolvování předmětu: Obsah Volba zadání ATAZ PRVNÍ ATELIÉR Charakteristika předmětu ATAZ je první zkušeností studenta s návrhem konkrétního objektu na konkrétním místě. Předmět navazuje na Architektonickou kompozici, která se věnuje tvorbě kompozice

Více

Základní teze prováděcích právních předpisů. navrhované právní úpravy

Základní teze prováděcích právních předpisů. navrhované právní úpravy VI. Základní teze prováděcích právních předpisů navrhované právní úpravy Návrh zákona, kterým se mění zákon č. 182/2006 Sb., o úpadku a způsobech jeho řešení (insolvenční zákon), ve znění pozdějších předpisů,

Více

Zákon o elektronickém podpisu

Zákon o elektronickém podpisu Zákon o elektronickém podpisu Zaručený elektronický podpis Je jednoznačně spojen s podepisující osobou (jen fyzická osoba!); umožňuje identifikaci podepisující osoby ve vztahu k datové zprávě; byl vytvořen

Více

Cvičení 1,2 Osnova studie strategie ICT

Cvičení 1,2 Osnova studie strategie ICT Cvičení 1,2 Osnova studie strategie ICT Department of Computer Systems Faculty of Information Technology Czech Technical University in Prague František Klíma, 2011 Finanční řízení informatiky, MI-FRI,

Více

1. TECHNICKÉ POŽADAVKY PRODUKTŮ VEMA... 7. 1.1 Klasifikace konfigurací z hlediska podpory... 7

1. TECHNICKÉ POŽADAVKY PRODUKTŮ VEMA... 7. 1.1 Klasifikace konfigurací z hlediska podpory... 7 Vema, a. s. Okružní 871/3a, 638 00 Brno http://www.vema.cz 17. února 2016 Obsah Obsah 1. TECHNICKÉ POŽADAVKY PRODUKTŮ VEMA... 7 1.1 Klasifikace konfigurací z hlediska podpory... 7 1.2 Technické požadavky

Více

Katalog vzdělávání 2015

Katalog vzdělávání 2015 Katalog vzdělávání 2015 Obsah Osobnostní rozvoj... 3 1. Komunikační dovednosti... 3 2. Prezentační dovednosti... 3 3. Lektorské dovednosti a kompetence... 3 4. Vyjednávání v každodenní praxi... 4 5. Jak

Více

Sbírka zákonů ČR Předpis č. 473/2012 Sb.

Sbírka zákonů ČR Předpis č. 473/2012 Sb. Sbírka zákonů ČR Předpis č. 473/2012 Sb. Vyhláška o provedení některých ustanovení zákona o sociálně-právní ochraně dětí Ze dne 17.12.2012 Částka 177/2012 Účinnost od 01.01.2013 http://www.zakonyprolidi.cz/cs/2012-473

Více

Ústavní sociální služby pro osoby s postižením v Moravskoslezském kraji

Ústavní sociální služby pro osoby s postižením v Moravskoslezském kraji , 3P Consulting, s. r. o., Římská 2, 20 00 Praha 2 telefon: (+420) 739 548 469 e-mail: info@trass.cz web: www.trass.cz Ústavní sociální služby pro osoby s v Moravskoslezském kraji Přehled a charakteristika

Více

Bezdrátové připojení (pouze u vybraných modelů) Uživatelská příručka

Bezdrátové připojení (pouze u vybraných modelů) Uživatelská příručka Bezdrátové připojení (pouze u vybraných modelů) Uživatelská příručka Copyright 2007 Hewlett-Packard Development Company, L.P. Windows je registrovaná ochranná známka Microsoft Corporation v USA. Bluetooth

Více

o diplomových a bakalářských pracích

o diplomových a bakalářských pracích Vyhláška děkana č. 01/2006 o diplomových a bakalářských pracích 1 Úvodní ustanovení (1) Tato vyhláška upřesňuje pravidla při zadávání, zpracování, odevzdání a hodnocení bakalářských, resp. diplomových

Více