Guida alla esposizione multiportale delle applicazioni

Cosa si intende per "esposizione multiportale" e qual'è il livello di supporto di guigen

Con il termine "esposizione multi-portale" si intende la possibilità di esporre una stessa applicazione su due siti web differenti con l'installazione dell'applicazione in un unico ambiente server. L'installazione su più di un portale/sito tipicamente comporta:

guigen ha il seguente grado di supporto:

Inoltre la modalità multi portale è utilizzabile esclusivamente in queste condizioni:

L'architettura di implementazione dell'esposizione multiportale effettuata da guigen prevede come punto centrale l'implementazione del meccanismo di WAYF (Where Are You From), ovvero il riconoscimento a tempo di esecuzione del portale su cui l'utente corrente è collegato. Nella piattaforma CSI attuale le possibili fonti di tale informazione sono:

Le due modalità sono gestite in modo armonizzato dal codice generato:

Portal profiles

Dal punto di vista degli strumenti MDD ciascun portale è caratterizzato da un certo numero di informazioni che ne descrivono i codici identificativi, l'insieme delle librerie JS utilizzate per le funzioni di front-end, l'insieme delle risorse statiche che costituiscono lo skin.

Queste caratteristiche sono mantenute, ad uso principalemnte della modellazione guigen, ma non solo, in modelli specifici denominati Portal Profiles: ad un certo istante e per uno specifico portale esiste una versione di questo modello che ne descrive le caratteristiche.

I Portal Profiles sono modelli utilizzati da chi modella le applicazioni, ma la loro predisposizione è a carico di chi cura l'evoluzione delle componenti infrastrutturali di portale, ovver skin e librerie javascript: sarà cusa di questi ultimi mettere a disposizione di chi sviluppa l'applicazione le corrette configurazioni.

A titolo informativo si riporta di seguito l'elenco delle informazioni principali che fanno parte del Portal Profile:

Modellazione dell'esposizione multiportale

Per modellare l'esposizione dell'applicativo su un insieme di portali è sufficiente modellare, come figlio dell'elemento TargetPlatform all'interno del modello principale dell'applicazione un elemento PortalExposition per ogni deifferente esposizione; ciascuno di questi elementi:

Attività di sviluppo per l'esposizione multi-portale

Non sono previste attività di sviluppo aggiuntive per abilitare l'esposizione multi-portale, a parte la necessità di definire un progetto di risorse statiche per ogni distinta esposizione.

Attività di dispiegamento in esercizio legate all'esposizione multi-portale

Per dispiegare in esercizio un'applicazione multiportale generata con guigen è necessario:

  1. creare una location sul web server di ciascun portale coinvolto
  2. nel caso in cui sia necessario impostare il meccanismo esplicito di Where Are You From ricordarsi di aggiungere, nella pagina che contiene il link di accesso all'applicazione, il parametro "PORTALE" nell'url stesso. Il valore da impostare è il codice contenuto nel PortalProfile corrispondente

WAYF profile

E' possibile personalizzare il modo in cui il sistema risolve il portale di provenienza, utilizzando un elemento di tipo WAYFProfile, che può essere modellato nell'oggetto TargetPlatform.

Come figlio dell'oggetto WAYFProfile è necessario modellare un elemento di tipo WAYFRequestAdapter ch epermette di personalizzare il modo in cui il sistema di risoluzione del portale di provenienza ottiene le informazioni discriminanti a partire dalla request o dalla sessione.

Nell'elemento WAYFRequestAdapter è necessario modellare:

Ad esempio per fare in modo che il portale di provenienza sia risolto dall'url è, prendendo come chiave di decodifica il dominio di secondo livello, è necessario modellare un WAYFProfile con un WAYFRequestAdapter così, costituito:

Considrazioni su WAYFProfile di tipo REQUEST_URL e attiivtà di sviluppo

Come visto in precedenza è possibile modellare un WAYFProfile custom in modo tale che l'informazione discriminante sia reperita da una parte dell'URL di richiesta (es. il dominio di secondo livello). Poichè i codici associati ai vari portali di esposizione sono modellati nell'oggetto PortalProfile, una volta generato il progetto affinchè il meccanismo WAYF funzioni correttamente è necessario che l'URL di richiesta rispetti con precisione tali specifiche.

Ad esempio se nel PortalProfile viene configurato il codice "sistemapiemonte.it", il virtual host su cui deve essere esposto l'applicativo deve appartenere a tale dominio di rete.

Questo non rappresenta ovviamente un problema per gli ambienti di esercizio, ma potrebbe essere un problema se le attività di sviluppo sono effettuate utilizzando ad esempio un virtual-host situato su una rete differente.

Per superare questo problema è disponibile una modalità alternativa attivabile non a tempo di generazione ma a tempo di build, ovvero attivabile solo sugli ambienti di sviluppo, ad esempio.

La modalità si attiva tramite una proprietà di nome devmode che, se impostata a true nel file di properties specifico di un determinato ambiente di installazione, attiva un meccanismo di risoluzione alternativo che entra in gioco come "salvagente" nel caso in cui l'informazione discriminante non sia reperibile o decodificabile correttamente a partire dalla fonte specificata

Una volta abilitata la modalità di sviluppo il meccanismo di riserva deve essere innescato manualmente inserendo nella URL di accesso un parametro HTTP che:

(in pratica il meccanismo di riserva è equivalente ad un WAYFRequestAdapter di tipo REQUEST_PARAM corrispondente a quello effettivamente modellato)

Pertanto per far funzionare, ad esempio, il meccanismo di WAYF su un'applicazione installata su un apache con virtual-host non conoforme alle specifiche di nome dominio, occorrerà effettuare la prima chiamata in modo simile al seguente:

http://127.0.0.1:17000/mycontext/?DOMAIN_L2=sistemapiemonte.it

(dove ovviamente l'hostname/ip dell'apache e il nome del contesto sono solo esemplificativi, mentre il nome del parametro e il suo valore sono quelli dell'esempio di cui sopra).

N.B: si consiglia di non attivare la modalità di sviluppo per i pacchetti destinati ad ambienti dove ciò non sia necessario. In ogni caso, però, il meccanismo di riserva interviene solo in caso di fallimento del meccanismo principale.