Vývoj portletů František Hartman Vývoj portletů Agenda  Představení portálu  Portlety  Liferay   Úvod do vývoje portletů Portletová specifikace  J SR-168 / J SR-286  API  Portlet gag library Praktické cvičení  J ednoduchý portlet   ©2012 IBA CZ, s. r. o. 2 Využití portálu Integrační platforma  Integrace existujících aplikací Vývojová platforma  Standardizované prostředí  Správa uživatelů, rolí, oprávnění, autorizace, autorizace, single sign-on  Správa vzhledu, rozložení a hierarchie stránek  Cache  Personalizace obsahu  Ukládání nastavení    Kdy portál nepoužít? ©2012 IBA CZ, s. r. o. 3 Portletové standardy Proč – situace před 10 lety  Různí dodavatelé mají různá API  Není možná spolupráce mezi portlety a různými portálovými servery  Zákazníci uzamčeni do konkrétního portálového řešení  Neexistuje jednoduchá cesta jak integrovat aplikaci do portálu Dnes  Standardy J SR-168 a J SR-286   ©2012 IBA CZ, s. r. o. 4 Portlety 1 - JSR-1 .0 68 Portletový standard pro lokální java portlety  Dokončeno říjen 2003  http://jcp.org/en/jsr/detail?id= 168 Cíle  J ednoduchý programovací model  Přenositelnost  Využití a kooperace s technologiemi J 2EE  Interoperabilita s dalšími J ava technologiemi   ©2012 IBA CZ, s. r. o. 5 Portlety 2.0 - JSR-286 Druhá verze standardu  Dokončeno říjen 2008  http://jcp.org/en/jsr/detail?id= 286 Rozšíření J SR-168  Zpětná kompatibilita  Meziportletová komunikace  Veřejné parametry (public render parameters)  Události (events)  Poskytování obsahu  Obrázky, datové soubory  AJ AX  Filtry  Zjednodušení integrace webových rámců   ©2012 IBA CZ, s. r. o. 6 Portletové aplikace portlet.xml  Obsahuje konfigurační informace přímo pro portál  Podporované módy a stavy oken  Podporované jazyky (lokalizace)  Popis a označení portletu  Konfigurace preferencí  Veřejné parametry  Události  Filtry   A další ©2012 IBA CZ, s. r. o. 7 Životní cyklus portletu ©2012 IBA CZ, s. r. o. 8 Životní cyklus portletu ©2012 IBA CZ, s. r. o. 9 Použití portletu ©2012 IBA CZ, s. r. o. 10 Použití portletu GenericPortlet Standardní implementace rozhraní Portlet Abstraktní třída, jenž je nejčastěji rozšiřována Vlastní portlety by měly přepisovat doView() pro zpracování požadavků ve VIEW módu processAction() pro zpracování požadavků a změnu stavu portletu doEdit() doHelp() init() a destroy() pro práci se zdroji Běžně se nepřepisují metody render() a doDispatch(), která volá doView(), doEdit() nebo doHelp() na základě požadovaného portletového módu             ©2012 IBA CZ, s. r. o. 11 Stav portletu Stav okna portletu (window state) Stav okna definuje, jak bude portlet zobrazen na stránce Normal – jako součást stránky Maximized – daný portlet je na stránce sám nebo zabírá většinu plochy Minimized – většinou pouze záhlaví portletu Existují další stavy specifické pro konkrétní portály Portletové módy (portlet mode) Portletové módy umožňují zobrazení různých pohledů View – základní mód Edit – většinou pro úpravu uživatelských nastavení Help – zobrazení nápovědy k portletu Existují další módy specifické pro konkrétní portály Configure – administrace portletu               ©2012 IBA CZ, s. r. o. 12 Dů ležité objekty API PortletConfig Poskytuje portletu jeho nastavení z portlet.xml PortletContext Definuje pohled portletu na portletový kontejner Inicializační parametry jsou pouze ke čtení a nastavují se v deskriptoru web.xml Důležité metody getRequestDispatcher(java.lang.String path) getInitParameter(java.lang.String name) getInitParameterNames()           ©2012 IBA CZ, s. r. o. 13 Dů ležité objekty API PortletRequest Vytvářeny a spravovány portletovým kontejnerem Předávány jako argument protletovým metodám J sou využívány pro komunikaci mezi portletovým kontejnerem a portletem a zároveň k předávání dat v rámci zpracování požadavku Data Parametry Atributy Relace (sezení, session) Preference Informace o uživateli getRemoteUser() - login uživatele (nebo id) Atribut USER_INFO             ©2012 IBA CZ, s. r. o. 14 Dů ležité objekty API PortletResponse Rozhraní pro odesílání odpovědí na požadavek encodeUrl() - Vrací zakódované URL požadovaného zdroje (např. servlet, J SP, obrázky nebo jiný statický obsah) RenderResponse create*URL() - vytváření URL ActionResponse sendRedirect() setPortletMode() setWindowState() setRenderParameter() setRenderParameters() Parametry viditelné v processAction() se automaticky nepropagují do render()              ©2012 IBA CZ, s. r. o. 15 Dů ležité objekty API PortletPreferences Perzistentní úložiště dat spravované kontejnerem Výchozí hodnoty jsou definované v portlet.xml Pro každé portletové okno se nastavují samostatně Pro uložení dat je zapotřebí volat metodu store() Nelze volat během render fáze PortletSession Úložiště pro informace déle než na dobu jednoho požadavku Session se vytváří pro uživatele pro každou portletovou aplikaci Pozor na velikost objektů, které do session ukládáte – velké objekty mohou mít dopad na výkonnost getAttribute(String name) getAttribute(String name, int scope) setAttribute(String name, Object value) setAttribute(String name, Object value, int scope) APPLICATION_SCOPE a PORTLET_SCOPE 16                ©2012 IBA CZ, s. r. o. Data se kterými portlety pracují ©2012 IBA CZ, s. r. o. 17 Knihovna značek (Tag library) Značky pro Generování odkazů Přístup k objektům v request a response Definované značky defineObjects renderURL actionURL resourceURL namespace param           ©2012 IBA CZ, s. r. o. 18 Knihovna značek (Tag library) Vytváření odkazů < portlet:renderURL var= "detailUrl"> < portlet:param name= "view" value= "detail"/> < portlet:param name= "id" value= "42"/> < /portlet:renderURL> < href= detailUrl} Show detail< a "${ "> /a> Značka < portlet:namespace> Vrací jednoznačné označení portletu Používá se pro odlišení entit na stránce v případě, že je na ní více stejných portletů Využití J avascript Element ID                ©2012 IBA CZ, s. r. o. 19     Příště Meziportletová komunikace Obsluha zdrojů Filtry ©2012 IBA CZ, s. r. o. 20