Tutti noi utilizziamo ogni giorno un portale web, per le ragioni più disparate. Cerchiamo di inquadrare l‘argomento e di introdurre alcuni concetti di base come punto di partenza per il nostro viaggio nell‘affascinante mondo dei portali in ambiente Java EE.
Introduzione
Con il presente articolo iniziamo una serie dedicata allo sviluppo di portali in ambiente Java EE. Come sempre, cercheremo di fornire una serie di concetti di base utili alla comprensione del contesto di riferimento, prima di addentrarci a esaminare aspetti di maggior dettaglio legati alla tecnologia e alla implementazione pratica delle soluzioni.
L’argomento dei portali web è di grande interesse e attualità visto che questo strumento è entrato ormai nell’uso comune; chi non ha mai utilizzato i servizi forniti da un portale per ricaricare il proprio cellulare, controllare il proprio conto corrente o acquistare un libro ? La tematica è vasta e affrontabile da angolature diverse. Noi cercheremo di definire il concetto di portale da un punto di vista funzionale analizzando poi, dalla parte di chi i portali li realizza, il modo in cui costruire portali web architetturalmente solidi fondati su solide piattaforme di sviluppo. Quando inizieremo a parlare delle soluzioni implementative, ci concentreremo sulle tecnologie messe a disposizione dal mondo open source e scopriremo che esistono framework che consentono di realizzare portali di livello enterprise utilizzando le tecnologie open source più note e sperimentate nel panorama delle applicazioni web Java.
Definizione del concetto di portale
Prima di proseguire è necessario innanzitutto definire e chiarire il termine portale, compito non così semplice. Il termine “portale” è ormai di uso comune e non solo da parte degli addetti ai lavori, ma probabilmente non è così chiaro cosa si intenda con questa affascinante parola. Definire cosa sia un portale in termini informatici non è così semplice anche perche’ una definizione univoca in realtà non esiste. Riflettendoci su, è il termine stesso che contiene in se’ la propria definizione: “un portale è una porta di accesso unica a un insieme di applicazioni, dati e servizi”.
Per capire meglio questa definizione possiamo pensare al concetto di applicazione web che ormai ben conosciamo e di cui abbiamo parlato diffusamente nelle pagine di MokaByte. Una applicazione web generalmente nasce con lo scopo di risolvere uno specifico problema e fornisce funzionalità verticali realizzate allo scopo. Possiamo pensare a una applicazione web per la gestione del personale di una azienda o per la gestione della contabilità, piuttosto che una applicazione web per la prenotazione di un volo aereo. Ogni singola applicazione ha la sua interfaccia, le sue funzioni e magari la sua funzione di autenticazione. All’interno di una organizzazione, soprattutto se di grandi dimensioni quali ad esempio una grande azienda o un grande ente pubblico, è possibile avere tante di queste applicazioni a disposizione degli utenti, interni o esterni che siano. Ma se volessi fornire un unico punto di accesso per i miei utenti a tutto il mio parco applicativo mediante una interfaccia unica, coerente e organizzata? La soluzione è ciò di cui stiamo parlando, il portale .
Una delle definizioni di portale che calza con il nostro esempio è quella data in [1] che riporto integralmente :
“A portal is designed to be a single web-based environment from which all of a user’s applications can run, and these applications are integrated together in a consistent and systematic way”.
La definizione esprime proprio il concetto che stavamo esponendo. Questa definizione inquadra un portale dal punto di vista dell’aggregazione in un’unica interfaccia di molteplici applicazioni, quindi inquadra il portale dal punto di vista di una delle sue funzioni principali: quella di strumento di integrazione.
Ma un portale non è solo questo. Dal punto di vista funzionale possiamo dire che un portale copre le esigenze in tre grandi aree:
- aggregazione di applicazioni
- gestione di contenuti
- collaborazione
Un portale quindi è molto di più di quanto abbiamo detto fino ad ora e ci fa comprendere come le potenzialità di uno strumento simile sono enormi purche’ se ne comprenda a fondo la differenza rispetto a una normale applicazione web e si utilizzino piattaforme che forniscono tutti gli strumenti necessari a realizzare le funzionalità nelle aree elencate.
Portale come aggregatore di applicazioni
Dal punto di vista più strettamente applicativo, il ruolo di integrazione che può svolgere un portale è quello più interessante e promettente. Il problema delle eterogeneità di applicazioni è da sempre presente nelle organizzazioni che quasi sempre, tranne che in pochi casi fortunati, si trovano al proprio interno un patrimonio informativo fatto di applicazioni diversificate per funzioni, tecnologie realizzative e interfacce. Il problema dell’integrazione è uno dei più dibattuti in ambito informatico e sulle soluzioni possibili esiste una bibliografia sterminata. Un’ottima esposizione dell’argomento si trova negli articoli sull’argomento pubblicati su MokaByte [2] e [3].
Senza entrare nei dettagli dell’argomento, indipendentemente dalla soluzione di integrazione scelta tra quelle possibili, un portale può svolgere il ruolo fondamentale dell’integrazione lato interfaccia utente delle sorgenti dati, delle applicazioni o dei servizi con i quali il nostro sistema informativo è costruito. Ciò consentirà all’utente di accedere dalla medesima interfaccia in una modalità integrata coerente e personalizzabile a molteplici sorgenti informative. Questo perche’, come vedremo più avanti, la pagina di un portale è costruita assemblando tante “mini-applicazioni”, passatemi il termine poco rigoroso, che forniscono una vista sui dati, sulle applicazioni verticali e sui servizi del nostro patrimonio informativo. Il tutto ovviamente in modo trasparente all’utente che fruisce delle funzionalità e delle informazioni in modo omogeneo senza dover accedere singolarmente alle diverse sorgenti. Come realizzare tutto ciò sarà forse più chiaro proseguendo negli approfondimenti, ma sono evidenti la potenzialità e i benefici di uno strumento simile se usato nella maniera opportuna.
Portale come gestore di contenuti
Fino ad ora abbiamo concentrato la nostra attenzione sulla integrazione di applicazioni. Un portale è però anche un gestore di contenuti. Tutti noi fruiamo ogni giorno sul web di contenuti più disparati sia che navighiamo nel portale della nostra squadra del cuore sia che leggiamo un quotidiano su internet. Documenti, animazioni, foto, video, immagini sono il pane quotidiano di ogni utilizzatore di internet. Mentre prima ci siamo soffermati sul portale guardandolo dal punto di vista applicativo, è forse molto più evidente il ruolo del portale come strumento informativo in senso stretto. Se il primo aspetto è più rivolto a chi sviluppa applicazioni e sistemi informativi e a chi fruisce di funzionalità applicative via web, un dipendente di una organizzazione che utilizza il portale aziendale per la registrazione dei dati di una trasferta o il cittadino che dispone un bonifico sul portale della propria banca, il secondo è comprensibile a qualsiasi navigatore internet.
Basti pensare alle pagine web nelle quali troviamo un articolo su un argomento di nostro interesse, con una bella foto, la versione PDF dell’articolo da scaricare e magari un video sull’argomento reperito da YouTube; una singola pagina in cui tutti questi contenuti sono pubblicati in forma aggregata e organizzati per una fruizione utente omogenea ed efficace.
Anche in questo caso sono le funzionalità del portale che consentono un simile risultato. Dell’integrazione e dell’aggregazione di sorgenti informative diverse abbiamo parlato, ma entra in gioco anche l’esigenza di gestire una molteplicità di contenuti da pubblicare e quindi il bisogno di strumenti flessibili ed efficaci per la gestione degli stessi. Le funzionalità di gestione dei contenuti vanno sotto il nome di CMS, Content Management System. Una piattaforma di gestione di portali non è semplicemente un CMS ma generalmente fornisce le funzionalità tipiche dei CMS quali la redazione di contenuti secondo template personalizzabili, la pubblicazione di contenuti, la definizione di workflow per il processo redazionale, la gestione di categorie e il tagging dei contenuti, la gestione multilingua, l’ottimizzazione per i motori di ricerca e così via.
Una piattaforma di sviluppo di portali che si rispetti deve consentire quindi la gestione e la pubblicazione di contenuti testuali e multimediali. Se uniamo questo alla possibilità di aggregare contenuti di tipo applicativo vediamo come le potenzialità a nostra disposizione diventano sempre più vaste ed interessanti.
Portale come strumento di collaborazione
Da diverso tempo a questa parte si fa un gran parlare di Web 2.0 e delle nuove modalità di interazione e di utilizzo delle tecnologie web. Quello che è certo è che internet tra le altre cose è diventato sempre più uno strumento “sociale” che consente a comunità di utenti più disparate di comunicare, collaborare e scambiare informazioni. Il web è sempre più interattivo e consente a ciascuno di creare e condividere i propri spazi e i propri contenuti. Non ci addentreremo in questa affascinante tematica, sulla quale si possono trovare interessanti spunti nelle pagine di MokaByte [4], in quanto non è oggetto specifico della nostra serie.
È bene però mettere in evidenza che una valida piattaforma per la realizzazione di portali deve fornire i tipici strumenti di collaborazione quali blog, wiki, message board, instant messaging, mail, shared calendar e così via.
Il portale quindi può essere utilizzato come uno strumento per la collaborazione di team di lavoro in una intranet aziendale piuttosto che per la creazione di comunità di utenti su internet, quindi è uno strumento abilitante al social networking tanto di moda al giorno d’oggi.
Integrazione di applicazioni, gestione di contenuti e collaborazione tutti integrati in un’unica piattaforma fanno di un portale uno strumento dalle potenzialità enormi che unisce in se’ mondi diversi e che fornisce agli utenti possibilità sterminate.
Conclusioni
Abbiamo introdotto il concetto di portale e abbiamo visto cosa intendiamo con questo termine. Dalla discussione fatta emerge che i campi di applicazione sono molto vasti e le potenzialità enormi. Una piattaforma per la realizzazione di portali di alto livello abilita con un unico strumento la aggregazione di applicazioni, la possibilità di pubblicate contenuti e le funzionalità per la collaborazione tra gli utenti. È evidente che tutte queste possibilità insieme aprono scenari infiniti al progettista web, molto più vasti di quelli tipici di una applicazione web verticale e quindi anche più complessi da affrontare e da indirizzare correttamente per ottenere risultati efficaci e di reale utilità per gli utenti.
Se guardiamo il titolo della serie una domanda potrebbe sorgere spontanea. E Java cosa c’entra? È vero, nel presente articolo abbiamo volutamente evitato qualsiasi riferimento a tecnologie specifiche proprio perche’ lo scopo era quello di introdurre il lettore nel contesto, prima di approfondire la discussione sulle tecnologie che abbiamo a disposizione nel mondo Java per realizzare tutto ciò. Lo scopo del prossimo articolo sarà proprio quello di iniziare ad introdurre le tecnologie che costituiranno le nostra fondamenta per la costruzione di portali enterprise in architettura Java EE.
Riferimenti
[1] Ashish Sarin, “Portlets in Action”, Manning Publications, 2009
[2] Marco Piraccini – Stefano Rossini, “Architetture di Integrazione – I parte: Introduzione”, MokaByte 105, Marzo 2006
[3] Marco Piraccini – Stefano Rossini, “Architetture di Integrazione – II parte: Le architetture EAI”, MokaByte 106, Aprile 2006
[4] Stefano Rossini – Gianluca Morello, “Il Web 2.0 – I parte: principi e tecnologie, una visione introduttiva ” MokaByte 117, Aprile 2007 (si vedano anche tutti gli articoli successivi della stessa serie)