Aleš Rybák, Jiří Kadlec
Pluginy budoucnosti
Jak se vyvíjel Liferay 4000000
2,1 M Java LOC
3500000
YAML XSLT 3000000
XSD XML Velocity Template Language
2500000
SQL SASS Maven
2000000
JSP
JSON
50 k Java LOC
1500000
Javascript Java HTML
1000000
DTD CSS Ant
500000
0 v1.7.5
v1.9.5
© 2015 IBA CZ, s. r. o.
v2.2.5
v3.6.1
v4.4.2
v5.2.3
v6.0.6
Pluginy budoucnosti
v6.1.2
v6.2.2
v7.0-m4
2
© 2015 IBA CZ, s. r. o.
Pluginy budoucnosti
3
Problém
© 2015 IBA CZ, s. r. o.
Pluginy budoucnosti
4
K tomu naše aplikace
© 2015 IBA CZ, s. r. o.
Pluginy budoucnosti
5
Problémy
Není možné určit pořadí či závislosti mezi aplikacemi © 2015 IBA CZ, s. r. o.
Pluginy budoucnosti
6
Problémy
Sdílení dat a funkčností mezi aplikacemi © 2015 IBA CZ, s. r. o.
Pluginy budoucnosti
7
Problémy
Balancujeme mezi Liferay a aplikačním serverem © 2015 IBA CZ, s. r. o.
Pluginy budoucnosti
8
Problémy
Úpravy pomocí hooků jsou křehké Úpravy JSP, které obsahují logiku ve scriptletech © 2015 IBA CZ, s. r. o.
Pluginy budoucnosti
9
Problémy
Úpravy pomocí Ext pluginu jsou považovány téměř za „sebevraždu“ Významnější změna znamená nutnost regresního testování Při každém fixu, každém updatu a každé změně je nutno provádět kontrolu na kolize
© 2015 IBA CZ, s. r. o.
Pluginy budoucnosti
10
Rozbili nám Liferay
© 2015 IBA CZ, s. r. o.
Pluginy budoucnosti
11
© 2015 IBA CZ, s. r. o.
Pluginy budoucnosti
12
Co je OSGi?
Sada specifikací Modulární systém Moduly mají definované rozhraní Moduly skrývají implementaci Moduly mezi sebou komunikují pomocí služeb
© 2015 IBA CZ, s. r. o.
Pluginy budoucnosti
13
Transformace směrem k OSGi aneb ze které strany do toho praštit
© 2015 IBA CZ, s. r. o.
Pluginy budoucnosti
14
Liferay jak ho známe
© 2015 IBA CZ, s. r. o.
Pluginy budoucnosti
15
Liferay jak ho známe
© 2015 IBA CZ, s. r. o.
Pluginy budoucnosti
16
Liferay jak ho známe
© 2015 IBA CZ, s. r. o.
Pluginy budoucnosti
17
Liferay po novu
© 2015 IBA CZ, s. r. o.
Pluginy budoucnosti
18
Liferay po novu
© 2015 IBA CZ, s. r. o.
Pluginy budoucnosti
19
Liferay po novu
© 2015 IBA CZ, s. r. o.
Pluginy budoucnosti
20
Liferay po novu
© 2015 IBA CZ, s. r. o.
Pluginy budoucnosti
21
Liferay po novu
© 2015 IBA CZ, s. r. o.
Pluginy budoucnosti
22
Liferay po novu
© 2015 IBA CZ, s. r. o.
Pluginy budoucnosti
23
Liferay po novu
© 2015 IBA CZ, s. r. o.
Pluginy budoucnosti
24
Liferay do budoucna
© 2015 IBA CZ, s. r. o.
Pluginy budoucnosti
25
Liferay – cílový stav
© 2015 IBA CZ, s. r. o.
Pluginy budoucnosti
26
Demo
© 2015 IBA CZ, s. r. o.
Pluginy budoucnosti
27
Výhody
© 2015 IBA CZ, s. r. o.
Pluginy budoucnosti
28
Výhody
Jednodušší distribuce oprav © 2015 IBA CZ, s. r. o.
Pluginy budoucnosti
29
Výhody
Sémantické verzování © 2015 IBA CZ, s. r. o.
Pluginy budoucnosti
30
Výhody
Definice nových bodů pro rozšíření © 2015 IBA CZ, s. r. o.
Pluginy budoucnosti
31
Výhody
Možnost odstranit nepotřebné moduly © 2015 IBA CZ, s. r. o.
Pluginy budoucnosti
32
Výhody
Možnost rozdělit zodpovědnosti za moduly paralelizace vývoje lepší a stabilnější rozhraní díky Conwayovu zákonu © 2015 IBA CZ, s. r. o.
Pluginy budoucnosti
33
Jak do toho zasadit vlastní aplikace? © 2015 IBA CZ, s. r. o.
Pluginy budoucnosti
34
Portletové aplikace
Změna vzhledu Změna funkcionality Přidání funkcionality © 2015 IBA CZ, s. r. o.
Pluginy budoucnosti
35
Chci mít portál podle sebe © 2015 IBA CZ, s. r. o.
Pluginy budoucnosti
36
Jak tomu bylo do nedávna
JSP Hooks Přímá úprava kódu jednotlivých komponent Liferay. Liferay poskytne mechanismus, jak tento nový kód použít místo originálu.
Co je na tom špatně
Je to křehké. Musí to dělat programátor (obsahuje logiku i vzhled). Nelze udělat více úprav do stejného JSP. Málo flexibilní – nelze to „vyklikat za běhu“. Komplikace při patchování Liferay.
© 2015 IBA CZ, s. r. o.
Pluginy budoucnosti
37
Úpravy vzhledu
© 2015 IBA CZ, s. r. o.
Pluginy budoucnosti
38
Jak to jde nyní
JSP Hooks Stále jsou k dispozici Mají v některých případech smysl.
ADT – Application Display Templates Umožňuje změnu šablony zobrazení portletu.
Velocity Freemarker
Správa šablon probíhá přímo z UI Liferay. V portálu od verze 6.2 Šablony se dají přenášet a znovu použít.
© 2015 IBA CZ, s. r. o.
Pluginy budoucnosti
39
ADT – kde se vzalo
Staví na zaběhnutých technologiích DDM (Dynamické datové listy – struktura pro zobrazení) Template engine
Přidává Administrační portlet pro správu šablon Možnost předat vlastní kontext šabloně.
© 2015 IBA CZ, s. r. o.
Pluginy budoucnosti
40
ADT – jak to funguje
ADT Šablona
Management
Template Engine
Data
© 2015 IBA CZ, s. r. o.
Pluginy budoucnosti
41
ADT – zhodnocení
Proč je to správně:
Vysoce flexibilní Lze vytvořit/měnit přímo v UI portálu. Jednodušší na správu zvládne i content editor. Dá se znovupoužít (Marketplace). Aplikovatelné na vlastní portlety (je to Framework). Site scopable – různé šablony per site.
Kde to nejde: Podpora se neustále rozšiřuje, ale pořád jsou portlety, kde nelze použít. Starší custom portlety toto zatím nemají. Upravuje vzhled zobrazení, nikoliv editace.
Proto máme pořád JSP Hooks.
© 2015 IBA CZ, s. r. o.
Pluginy budoucnosti
42
© 2015 IBA CZ, s. r. o.
Pluginy budoucnosti
43
Nové hooks LF 7
Motivace:
Jak vyřešit problém upgradů? Jak umožnit dodávat hooks více dodavatelům? Hooks musí být stabilní, nikoliv křehké. View a model musí být lépe oddělen.
Možná řešení: Views model Extensible tag points View extension points
© 2015 IBA CZ, s. r. o.
Pluginy budoucnosti
44
View models
© 2015 IBA CZ, s. r. o.
Pluginy budoucnosti
45
Extensible tag points
Pluginy budoucnosti
46
Úpravy funkcionality
© 2015 IBA CZ, s. r. o.
Pluginy budoucnosti
47
Portletové aplikace
© 2015 IBA CZ, s. r. o.
Pluginy budoucnosti
48
Kdy tam budeme, co ještě chybí
Portlety do OSGi lze nasadit. Nesplňují však spec portlet 2.0 (tj. nestandardní způsob) Chybí dokumentace Již lze využít potenciál OSGi, ale zatím nejsou dotaženy best practices.
© 2015 IBA CZ, s. r. o.
Pluginy budoucnosti
49
Audience targetting
© 2015 IBA CZ, s. r. o.
Pluginy budoucnosti
50
Audience targeting
Plugin budoucnosti Skládá se s OSGi modulů Jednoduše rozšiřitelný pomocí „nových modulů“ (OSGi)
Co to umí
Rules Tracking actions Reports
Segmentace uživatelů na základě pravidel. Zobrazování WCM na základě uživatelských segmentů. Vytváření kampaní. Sledování chování uživatele. Reporting.
Co je za tím? OSGi moduly pro jednotlivé funkce Freemarker pro frontend Nové portlety pro zobrazení dle segmentů.
© 2015 IBA CZ, s. r. o.
Pluginy budoucnosti
51
Děkujeme
© 2015 IBA CZ, s. r. o.
Pluginy budoucnosti
52