Introduzione
Il
progetto Jakarta-Jetspeed consente la costruzione di
portali enterprise attraverso le portlet.
Le portlet sono componenti web utilizzabili come plug-in
e gestite da un container (Jetspeed, appunto). Le pagine
vengono costruite assemblando le portlet, che visivamente
sono porzioni di pagina e funzionalmente sono dei canali
informativi. L'applicazione di questa modularità
permette agli utenti di costruirsi un portale personalizzato,
semplicemente scegliendo dove come e in quale pagina
disporre le portlet con diversi contenuti.
Le portlet possono essere applicazioni java di qualsiasi
tipo, basate ad esempio su delle "action"
( di Turbine, Velocity oppure Struts), contenuti di
altri siti tramite RSS [1], trasformazioni xsl, oppure
pubblicazioni operate con Cocoon [2].
Una applicazione alternativa consentita dalle portlet
è il collegamento con sistemi di content management,
grazie alla "grana fine" offerta dalle portlet.
Jetspeed mostra i contenuti in maniera consona alla
lingua e al browser; questo può essere un client
http o un cellulare wap o un palmare. Per consentire
la portabilità tra i vari portlet container commerciali,
è stata fatta richiesta al java community process
per formalizzare uno standard apposito per le portlet
(jsr 168*) Fanno parte della commissione per lo standard
oltre alla ASF, Oracle, IBM, Sun, SAP, Borland, Novell,
e molte altre.
Framework
e componenti usati in Jetspeed
Iniziamo
a vedere in maniera logico- funzionale come vengono
assemblate le pagine.
L'assemblaggio delle varie portlet in una pagina è
compito di Turbine. Turbine è un framework Jakarta
per la costruzione di applicazioni web secondo il paradigma
MVC[3].
Turbine fornisce servizi e funzionalità, in particolare
attraverso le action, servizi in background e template.
Per quanto riguarda i template esso usa Velocity[4]
oppure le Jsp.
Velocity è un template engine Jakarta, è
possibile attraverso i suoi template (.vm Velocity macro)
avere accesso agli oggetti java presenti nel suo contesto.
Velocity rappresenta la view di Turbine.
Costruzione
delle pagine
Le chiamate alle pagine di jetspeed sono del tipo:
http://www
/portal/user/nomeUtente/page/default.psml?parametriEventuali
L'url
contiene il nome dell' utente che stà richiedendo
una pagina (page) e fa riferimento ad un file psml,
seguito anche da eventuali parametri. Il file psml (Portal
structure markup language) è un file xml che
contiene la struttura del sito con le entry delle portlet
per le varie pagine (ma è anche possibile anche
avere file separati, per ogni pagina, che si referenziano
per comporre un unico file psml ). Nel file psml è
anche indicato quali controller del layout devono essere
usati per la disposizione dei componenti costituenti
la pagina es.tab-controller, card- controller.
A questo punto Jetspeed ha tutte le informazioni che
sono necessarie per far comporre la pagina. Turbine
partendo dal file default.vm di Velocity che contiene
il layout generale delle pagine assembla le portlet
secondo lo schema imposto dal controller indicato nel
psml.
Figura 1 - Architettura Jetspeed
I file Velocity macro (vm)
Sono
i template di velocity, sono dei file html con delle
variabili che vengono sostituite da Velocity
Un esempio di file vm è il seguente default.vm
<html>
<head>
$jnavigation.setTemplate("top.vm")</td>
..
$jnavigation.setTemplate("left.vm")
$screen_placeholder
.
$jnavigation.setTemplate("bottom.vm")
</body>
</html>
In
esso viene detto a Velocity di comporre il layout della
pagina con un top, un left un bottom e una parte che
viene referenziata come screen e che vedremo in seguito.
Il risultato sarà una pagina formata come in
figura 2
Figura 2 - Jetspeed layout
Ora
vediamo a cosa corrisponde $screen placeholder.
Abbiamo detto in precedenza che il file psml conteneva
le portlet da visualizzare per le pagine corrispondenti
ed esse vengono inserite per quella pagina nella parte
indicata con screen, secondo le modalità indicate
dal controller. Perciò avremo la struttura della
pagina corrispondente alla figura3 e 4, che è
la struttura delle pagine costruite da Turbine usando
i template di Velocity.
Figura 3 - Layout Turbine
Figura 4 - Layout Screen
Funzionalità
ulteriori
Dopo la spiegazione del funzionamento più comune,
usando cioè i template Velocity e chiamate http
, andiamo a vedere la struttura di jetspeed e di descrivere
le altre funzionalità. Dentro la cartella WEB-INF\templates
troviamo due sottodirectory, Jsp e Velocity, in quanto
Turbine può usare entrambi i tipi di template.
Dentro una delle due sottodirectory troveremo le cartelle
html e wml, in esse sono contenuti i template per i
browser http e in quella wml quelli per i cellulari
e i palmari.
Figura 5 - Jetspeed su browser http://www.anglonaweb.it
Figura 6 - Jetspeed su emulatore wap
Attraverso questi template viene gestita la fruizione
dei contenuti su più canali, per quanto riguarda
la localizzazione, viene gestita sia attraverso un servizio
di Turbine che viene usato da Velocity (l10n), sia attraverso
i file nelle varie lingue ove disponibili. Jetspeed
espone inoltre dei web-services di esempio. Configurando
opportunamente i template Velocity, è possibile
avere anche layout differenti per le varie pagine del
portale, l'unico limite è la fantasia del grafico
che sceglierà il layout del sito, che verrà
poi tradotto in template Velocity .
Struttura
e contenuto dei file psml (Portal structure markup language)
Esso
contiene la struttura del portale del singolo utente,
le portlet che comporranno le varie pagine, nonché
i controller per le varie pagine e anche le skin delle
portlet.
<?xml
version="1.0" encoding="iso-8859-1"?>
<portlets xmlns="http://xml.apache.org/jetspeed/2000/psml">
<metainfo>
<title>Default Jetspeed Page</title>
</metainfo>
<control name="TabControl"/>
<controller
name="CardPortletController">
<parameter name="parameter" value="pane"/>
</controller>
<skin name="orange-grey"/>
<portlets>
<entry parent="HelloVelocity"/>
<layout>
<property name="row" value="0"/>
<property name="column" value="1"/>
</layout>
</portlets>
<portlets>
<entry parent="HelloJSP"/>
<layout>
<property name="row" value="1"/>
<property name="column" value="0"/>
</layout>
</portlets>
</portlets>
</portlets
Conclusioni
In
questo primo articolo si è dato un primo sguardo
a ciò che Jetspeed e le portlet forniscono :
La possibilità agli utenti di costruirsi dei
portali a loro piacimento, in base alla lingua e al
dispositivo su cui le informazioni vengono richieste,
consentono anche il collegamento con dei Content Management
System grazie alla grana fine con cui le informazioni
possono essere veicolate, un esempio di Jetspeed con
un cms si può trovare presso :http://www.anglonaweb.it/.
La lista completa dei siti costruiti con Jetsped sono
visibili su http://jakarta.apache.org/jetspeed/site/usejetspeed.html
Dal punto di vista dello sviluppatore essendo Jetspeed
un portale che espone informazioni applicazioni e servizi
è possibile trovare in esso l'applicazione delle
ultime novità, degli standard, delle tendenze
e delle metodologie della programmazione java, nonché
l'uso altri progetti che normalmente non sono di comune
utilizzo da parte di chi non è frequentatore
delle mailing list open-source, ma che sono utilizzati
in progetti commerciali. Nel prossimo articolo vedremo
in maniera più tecnica e dettagliata le gerarchie
delle portlet, come funzionano effettivamente, quanti
e quali sono i tipi base, e come deployarle in un portlet
container.
Bibliografia
e riferimenti
Jetspeed
: Enterprise Information Portal : http://jakarta.apache.org/jetspeed
Turbine : Web Application framework :http://jakarta.apache.org/turbine
Velocity: Java Template Engine: http://jakarta.apache.org/velocity
Cocoon : Struttura di pubblicazione java: http://xml.apache.org/cocoon
jsr168 : http://www.jcp.org/en/jsr/detail?id=168
[1]
Rss (Rich Site Summary) McLaughlin, "Java e Xml",
ed. O'Reilly 2001
[2] Cocoon McLaughlin, "Java e Xml", ed. O'Reilly
2001
[3] <http://jakarta.apache.org/turbine/turbine-2.3/model2+1.html>
[4] Velocity e WebMacro Hunter-Crawford, "Java
Servlet Programming II ed.", ed. O'Reilly 2001
Massimiliano
Dessì ha iniziato a lavorare presso la Sistemi
Informativi S.p.A (IBM) come programmatore Java. Da
due anni lavora presso Atlantis S.p.A.(http://www.gruppoatlantis.com/),
dove utilizzando metodologie agili quali l'eXtreme programming
(Xp), sviluppa applicazioni enterprise Web-based con
tecnologia J2EE quali portali e content management system
per la promozione del territorio.
Nel tempo libero contribuisce al progetto open-source
jakarta -Jetspeed,
di cui ha realizzato il servizio di localizzazione e
la portlet per la localizzazione nelle varie lingue,
cura la versione italiana di Jetspeed.
Laureando in Ingegneria Elettronica presso l' Università
di Cagliari.
|