Do It The jAPS Way
Copyright © 2010 AgileTec s.r.l.
Legal Notice
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the Appendix entitled "GNU Free Documentation License".
2011-02-14
| Revision History | ||
|---|---|---|
| Revision 1.6 | 2011-02-14 | MEM |
Aggiornamento per rilascio jAPS 2.0 entando versione 2.2.0 | ||
| Revision 1.5 | 2010-02-17 | ES |
Aggiornamento per rilascio jAPS 2.0 versione 2.0.10 | ||
| Revision 1.4 | 2009-10-15 | ES |
Aggiornamento per rilascio jAPS 2.0 versione 2.0.8 | ||
| Revision 1.3 | 2009-07-29 | ES |
Aggiornamento per rilascio jAPS 2.0 versione 2.0.6 | ||
| Revision 1.2 | 2009-06-16 | ES |
Piccole modifiche al testo | ||
| Revision 1.1 | 2009-05-02 | ES |
Modifica | ||
| Revision 1.0 | 2009-04-21 | ES |
Prima versione pubblica | ||
Abstract
Lo scopo di questo documento è quello di fornire una descrizione completa della struttura del Plugin User Profile.
Table of Contents
List of Tables
Table of Contents
Lo scopo di questo documento è quello di fornire una descrizione completa della struttura del Plugin User Profile.
Questo documento è destinato a chi intende conoscere le funzionalità del jAPS Plugin User Profile,
e sta prendendo in considerazione la eventuale integrazione in un Ambiente di Produzione già funzionante
o nel proprio Ambiente di Sviluppo (Progetto in IDE Eclipse).
Il documento è indirizzato sia a Sistemisti (responsabili di installazioni di Applicazioni su base jAPS 2.0 entando) che a Java Developers (con una conoscenza base del Framework jAPS 2.0 entando).
Per poter utilizzare efficacemente le informazioni contenute in questo documento, occorre un po' di esperienza su alcune tecnologie del web base: la piattaforma Java, gli strumenti di sviluppo Eclipse, il servlet container Apache Tomcat, il database PostgreSQL, e del Framework jAPS 2.0 entando. E' inoltre necessario aver letto il documento jAPS 2.0 - Plugin Pattern.
Ulteriori informazioni possono essere richieste attraverso la mailing list ufficiale Google Group "japs-platform".
Per mandare un messaggio ai membri della lista, invia una mail a <japs-platform@googlegroups.com>.
È inoltre possibile consultare la documentazione presente in:
Table of Contents
Il Plugin User Profile consente di associare agli utenti definiti nel sistema, un profilo composto da un insieme di informazioni/attributi definiti nella configurazione del Plugin.
Il plugin è strutturato in maniera da essere inserito sia in una istanza di jAPS che usa esclusivamente le utenze locali,
che in una istanza che fa uso anche di utenze remote provenienti da una Directory Ldap (e gestite attraverso il jAPS Plugin LDAP).
Table 2.1. Riassunto delle caratteristiche
| Codice | Nome | Tipo | Versione del Plugin | Versione di jAPS 2.0 entando |
|---|---|---|---|---|
| jpuserprofile | User Profile | PurePlugin | 1.6 | 2.2.0 - |
| jpuserprofile | User Profile | PurePlugin | 1.5 | 2.0.10 |
| jpuserprofile | User Profile | PurePlugin | 1.4 | 2.0.8 |
| jpuserprofile | User Profile | PurePlugin | 1.3 | 2.0.6 |
| jpuserprofile | User Profile | PurePlugin | 1.2 | 2.0.4 |
| jpuserprofile | User Profile | PurePlugin | 1.0 | 2.0.2 |
Il modulo presenta:
Una interfaccia del Back-End tramite il quale l'utente corrente può valorizzare e modificare il proprio Profilo. Tale interfaccia aderisce perfettamente alla grafica ed impostazione del Back-End ed è accessibile attraverso una voce del menù Plugin.
Una serie di Showlet Logiche (preconfigurate su base showlet Invocazione Servlet Interna), tramite cui l'utente corrente può valorizzare e modificare il proprio Profilo e modificare la propria password. Le interfacce utente di queste Showlet non presentano nessun elemento di presentazione per consentirne la vestizione in una qualunque istanza specifica di jAPS 2.0 entando.
Il Plugin ha la funzione principale di fornire la possibilità di allegare ad ogni utente definito nel sistema una caratterizzazione attraverso il Profilo associato, ma può essere utilizzato anche a supporto di terze funzionalità (come ad esempio un modulo di Newsletter, che necessita da parte dell'utente una richiesta esplicita attraverso la valorizzazione di un elemento di profilo utente).
Table of Contents
Il plugin ha la caratteristica di Pure-Plugin, la sua installazione non modifica nessuna funzionalità presente nel sistema. Il plugin inoltre fa uso di due tecnologie, una interna alla piattaforma jAPS 2.0 entando, ed una esterna:
Il motore delle
ApsEntity(a cui fa riferimento anche il motore di Gestione Contenuti del CMS). Il motore viene utilizzato per definire in maniera libera la struttura del Tipo di Profilo, come composizione di Attributi (sia semplici che complessi).Le
@Aspectdi Spring Framework. La Programmazione per Aspetti viene utilizzata per poter inserire il Profilo all'interno dell'oggetto Utente senza dover modificare il gestore degli utenti, e senza neanche prendersi carico del tipo di gestore utenti correntemente utilizzato (se fa riferimento all'archivio locale di Utenti, o se le utenze vengono estratte da una Directory esterna). In particolare, l'AOP consente di far si che il Plugin sia un Pure-Plugin.
Il pacchetto del Plugin contiene l'insieme delle cartelle (cartelle doc ed src più il file README)
definite nel documento di descrizione generale del jAPSPlugin Pattern.
In particolare, la directory src è strutturata come di seguito descritto:
Directory
java. Contiene le sorgenti java complete e i test jUnit del Plugin.Directory
sql. Contiene gli script da eseguire nei dbPorteServprincipali e di test.Directory
webapp. La directory contiene tutti i file necessari alla webapp. In particolare, la directory contiene i file (jsp) relativi alla interfacce utente ed i file di configurazione delle stesse, i file di definizione dei bean a servizio (sia del layer di Business del Modello di jAPS 2.0 entando, che nelle action di Struts 2 relative al Layer di Presentation), le librerie (compresa la libreria ricavata dalle sorgenti java date in dotazione), le risorse statiche necessarie (css, immagini, e js).
Per eseguire l'installazione in una applicazione Web in produzione basata sulla versione di jAPS 2.0 entando dichiarata compatibile con il plugin, i passi da eseguire sono i seguenti:
Copiare il contenuto della directory
src/webapp/WEB-INF/libdel pacchetto dato in dotazione, all'interno della directorymioportale/WEB-INF/lib/in produzione.Copiare il contenuto della directory
src/webapp/WEB-INF/pluginsdel pacchetto dato in dotazione, all'interno della directorymioportale/WEB-INF/plugins/in produzione. Creare la directorypluginsse non è presente.Copiare il contenuto della directory
src/webapp/resources/pluginsdel pacchetto dato in dotazione, all'interno della directorymioportale/resources/plugins/in produzione.Eseguire i task contenuti nel file
portScript.sql(contenuto nella directorysrc/sqldel pacchetto dato in dotazione) nel dbportin produzione.Lo script è strutturato ipotizzando il version
production(variare se il version dell'ambiente di produzione è diverso).Eseguire i task contenuti nel file
servScript.sql(contenuto nella directorysrc/sqldel pacchetto dato in dotazione) nel dbservin produzione.
Le precedenti attività sono da eseguire nell'applicazione a freddo, successivamente all'arresto del container.
Per eseguire l'installazione in un progetto Eclipse basato sulla versione di jAPS 2.0 entando dichiarata compatibile con il plugin, i passi da eseguire sono i seguenti:
Copiare il contenuto della directory
src/webapp/WEB-INF/libdel pacchetto dato in dotazione, all'interno della directorymioprogetto/WebContent/WEB-INF/lib/, con l'esclusione del filejAPSPlugin-jpuserprofile-1.5.jar.Copiare il contenuto della directory
src/webapp/WEB-INF/pluginsdel pacchetto dato in dotazione, all'interno della directorymioprogetto/WebContent/WEB-INF/plugins/. Creare la directorypluginsse non è presente.Copiare il contenuto della directory
src/webapp/resources/pluginsdel pacchetto dato in dotazione, all'interno della directorymioprogetto/WebContent/resources/plugins/. Creare la directorypluginsse non è presente.Eseguire i task contenuti nel file
portScript.sql(contenuto nella directorysrc/sqldel pacchetto dato in dotazione) nel proprio dbport. Lo script è strutturato ipotizzando il versionproduction(variare se il version dell'ambiente di produzione è diverso). Modificare la struttura del modello del profilo secondo le necessità.Eseguire i task contenuti nel file
servScript.sql(contenuto nella directorysrc/sqldel pacchetto dato in dotazione) nel proprio dbserv.Eseguire i task contenuti nel file
portTestScript.sql(contenuto nella directorysrc/sqldel pacchetto dato in dotazione) nel proprio dbportdi test.Eseguire i task contenuti nel file
servTestScript.sql(contenuto nella directorysrc/sqldel pacchetto dato in dotazione) nel proprio dbservdi test.Copiare il contenuto della directory
src/java/main/comnella directorymioprogetto/src/comdel proprio progetto.Copiare il contenuto della directory
src/java/test/testnella directorymioprogetto/src/testdel proprio progetto.Copiare nella directory
mioprogetto/src/del proprio progetto il file contenuto della directorysrc/java/maindi nomejpuserprofile_japs-struts-plugin.xml. Nel caso che nella directorysrcdel progetto Eclipse sia già presente un file di nomejaps-struts-plugin.xml, copiare il contenuto del tag <struts> del filejpuserprofile_japs-struts-plugin.xmlall'interno del filejaps-struts-plugin.xmlesistente e cancellare il filejpuserprofile_japs-struts-plugin.xml. Nel caso che nella directorysrcdel progetto Eclipse non sia presente un file di nomejaps-struts-plugin.xml, rinominare il filejpuserprofile_japs-struts-plugin.xmlinjaps-struts-plugin.xml.Eliminare o commentare (attraverso un commento java) il metodo
getConfigUtils()della classeJpUserprofileBaseTestCase.javanel packagetest.com.agiletec.plugins.jpuserprofile.apsed i metodigetConfigUtils()esetInitParameters(Properties params)della classeJpUserprofileApsAdminBaseTestCase.javanel packagetest.com.agiletec.plugins.jpuserprofile.apsadmin.
Una volta eseguiti i passi sopra descritti, far partire il progetto da Eclipse e verificare la presenza della voce specifica voce di menù nell'area di amministrazione del progetto.
Table of Contents
Il Profilo Utente rappresenta un insieme di informazioni (Attributi) organizzate secondo una struttura definita dal Tipo di Profilo.
La struttura del Profilo Utente viene definito attraverso la configurazione di un xml
(inserito nel db Port dell'istanza di jAPS 2.0 entando) nel quale sono definiti gli Attributi componenti il Tipo del Profilo dell'utente.
A partire da jAPS 2.0 versione 2.0.10, la configurazione dei Tipi profili può essere effettuata direttamente attraverso una apposita interfaccia utente resa a disposizione nel Back End.
Di seguito un esempio della configurazione necessaria:
<profiles> <profile typecode="PFL" typedescr="Profilo utente/cittadino tipo"> <attributes> <attribute name="Nome" attributetype="Monotext" required="true"/> <attribute name="Cognome" attributetype="Monotext" required="true"/> <attribute name="email" attributetype="Monotext" required="true"/> <attribute name="language" attributetype="Monotext" searcheable="true" /> <attribute name="data" attributetype="Date" searcheable="true" /> <attribute name="newsletter" attributetype="Boolean" searcheable="true" /> </attributes> </profile> </profiles>
Il Tipo di Profilo è dato da un'insieme di Attributi che ne determinano numero e tipo di informazioni elementari.
Gli Attributi sono considerati come una informazione minima, un mattone elementare costituente il profilo.
Ogni Attributo è identificato, all'interno del profilo, da un nome univoco definito a piacere in configurazione.
La configurazione del Tipo di Profilo viene configurata nella stessa maniera con la quale vengono configurati i Tipi di Contenuto gestiti dal jACMS.
Nel sistema sono disponibili tutti i Tipi di Attributo (per esempio attributi di tipo Date, Number, etc...) utili per soddisfare
le diverse necessità. Attualmente i Tipi di Attributo disponibili nel sistema sono definiti in particolari file di configurazione del sistema (definiti come Beans di Spring).
Quando si configura il modello del Profilo Utente, la porzione di XML che specifica il singolo Attributo del Profilo deve obbligatoriamente contenere gli attributi XML name e attributetype;
<attribute|list|table name="CODICEATTRIBUTO" attributetype="CODICETIPOATTRIBUTO" />
Oltre a questi due attributi XML possono esserne presenti altri, caratteristici del particolare Tipo di Attributo (vedasi per esempio l'Attributo di tipo “Monolista”):
Configurazione aggiuntiva per l'obbligatorietà:
required="true|false"(valore di default: false) utilizzabile quando si vuole rendere obbligatoria la valorizzazione dell'Attributo in occasione della redazione da interfaccia di amministrazione. Durante la redazione, l'imposizione dell'obbligatorietà comporta diversi effetti a seconda del Tipo di Attributo considerato.Configurazione aggiuntiva per la ricercabilità:
searcheable="true|false"(valore di default false) utilizzabile quando si vuole utilizzare l'attributo per selezionare, ricercare, filtrare ed ordinare i profili (operazioni necessarie quando si intende ricercare Utenti in base ad elementi del Profilo Utente). Indicandotrueil valore dell'attributo è replicato in una apposita tabella su cui è possibile eseguire ricerche SQL.
IMPORTANTE: Il Plugin è strutturato in maniera da gestire un solo tipo di Profilo Utente (identificato dal codice PFL, Profilo utente/cittadino tipo) e le interfacce fornite gestiscono elementi Monolingua (nonostante si possano inserire anche Attributi Multilingua nella definizione del Tipo). Nonostante questa considerazione, il Plugin consente estensioni (da parte di Sviluppatori Java con una piccola esperienza di jAPS 2.0) in maniera da gestire diversi tipi di Profilo Utente e inserire agevolmente il multilinguismo nella gestione dei profili.
Di seguito viene descritta la configurazione di ogni tipologia di attributo di contenuto. Gli attributi vengono suddivisi in due tipologie: gli attributi semplici (monolingua e multilingua) e gli attributi composti. La documentazione seguente è corrispondente alla descrizione degli Attributi utilizzabili per strutturare i Tipi di Contenuto gestiti dal jACMS.
Gli Attributi Semplici sono i tipi di mattoni atomici componenti i Tipi di Contenuto. Essi sono quei tipi caratterizzanti da una specifica caratteristica ben definita; esempio il testo, il numero, il Link, e così via. Gli Attributi Semplici si possono dividere in attributi Monolingua e Multilingua: il primo presenta il proprio valore caratterizzante unico per tutte le lingue, il secondo presenta (o può presentare) un valore diverso per ciascuna delle lingue di sistema.
L'attributo consta di un testo semplice unico per tutte le lingue inserite nel sistema. Il testo viene inserito in una casella di input Testo posizionata all'interno del tab relativo alla redazione del contenuto nella lingua di default. Non vi sono limiti nella lunghezza del testo immeso. Esempio di utilizzo: Nome, Cognome, Indirizzo, etc...
Configurazione base su xml:
<attribute name="CODICEATTRIBUTO" attributetype="Monotext" />
Possibili configurazioni aggiuntive: required, searcheable, minlength, maxlength.
L'attributo consta di un testo semplice per ogni lingua inserita nel sistema. Il testo viene inserito in una casella di input Testo. Non vi sono limiti nella lunghezza del testo immeso. Esempio di utilizzo: Titolo di studio, Professione, etc..
Configurazione base su xml:
<attribute name="CODICEATTRIBUTO" attributetype="Text" />
Possibili configurazioni aggiuntive: required, searcheable, minlength, maxlength.
L'attributo consta di un testo semplice per ogni lingua inserita nel sistema. Il testo viene inserito in una textarea di input Testo. Non vi sono limiti nella lunghezza del testo immesso. Esempio di utilizzo: Note, Descrizione, etc..
Configurazione base su xml:
<attribute name="CODICEATTRIBUTO" attributetype="Longtext" />
Possibili configurazioni aggiuntive: required, searcheable, minlength, maxlength.
L'attributo consta di un Ipertesto per ogni lingua inserita nel sistema. Il testo viene inserito (ed eventualmente editato con grassetto, sottolineature, carattere corsivo, link interni) in una textarea trasformata in editor di ipertesti. Non vi sono limiti nella lunghezza del testo immeso. Esempio di utilizzo: Note, Descrizione, etc..
Configurazione base su xml:
<attribute name="CODICEATTRIBUTO" attributetype="Hypertext" />
Possibili configurazioni aggiuntive: required, searcheable.
L'attributo consta di un testo semplice (nel formato gg/MM/aaaa - esempio 23/06/1993) unico per tutte le lingue inserite nel sistema. Il testo viene inserito direttamente in una casella di input di Testo oppure con l'ausilio di un calendarietto. La casella è posizionata all'interno del tab relativo alla redazione del contenuto nella lingua di default. Il testo immesso è soggetto a controllo di validazione del sistema, qualunque immissione di data scorretta viene individuata dal sistema. Esempio di utilizzo: data di nascita, data Matrimonio, etc etc.
Configurazione base su xml:
<attribute name="CODICEATTRIBUTO" attributetype="Date" />
Possibili configurazioni aggiuntive: required, searcheable.
L'attributo consta di un testo semplice unico per tutte le lingue inserite nel sistema. Il testo viene scelto tra una lista di testi resi a disposizione dall'attributo stesso; la scelta del testo da associare all'attributo viene fatta attraverso una select posizionata all'interno del tab relativo alla redazione del contenuto nella lingua di default. Esempio di utilizzo: Nazione, Città, etc...
Configurazione base su xml:
<attribute name="CODICEATTRIBUTO" attributetype="Enumerator"> <![CDATA[LISTA_ITEMS]]> </attribute>
La lista di items viene inserita all'interno del tag CDATA con un adeguato separatore; il separatore di default è il carattere virgola ”,”.
Un eventuale separatore diverso può essere specificato attraverso la configurazione aggiuntiva separator.
Possibili configurazioni aggiuntive: required, searcheable, separator (carattere/stringa separatore negli item inseriti all'interno del corpo CDATA, di default è “,”) extractorBean (nome del bean definito in Spring Framework estrattore degli items da rendere disponibili nella select).
L'attributo consta di un numero unico per tutte le lingue inserite nel sistema. Il numero viene inserito direttamente in una casella di input di Testo posizionata all'interno del tab relativo alla redazione del contenuto nella lingua di default. Il numero immesso è soggetto a controllo di validazione del sistema, qualunque immissione scorretta viene individuata dal sistema. Esempio di utilizzo: Numero Civico Indirizzo, Anno di nascita, etc...
Configurazione base su xml:
<attribute name="CODICEATTRIBUTO" attributetype="Number" />
Possibili configurazioni aggiuntive: required, searcheable.
L'attributo permette la scelta tra le opzioni si e no rese disponibili attraverso due radiobutton.
Esempio di utilizzo: Date provvisorie, bagno in camera in contenuto Scheda Camera Albergo, etc...
Configurazione base su xml:
<attribute name="CODICEATTRIBUTO" attributetype="Boolean" />
Possibili configurazioni aggiuntive: nessuna.
L'attributo consta di un semplice checkbox. Esempio di utilizzo: Date provvisorie, bagno in camera in contenuto Scheda Camera Albergo, etc...
Configurazione base su xml:
<attribute name="CODICEATTRIBUTO" attributetype="CheckBox" />
Possibili configurazioni aggiuntive: nessuna.
Gli attributi composti sono gli attributi caratterizzati dalla aggregazione (sotto diverse forme) di attributi semplici.
Gli attributi di questi tipo sono composti da una lista unica (comune a tutte le lingue del sistema) composta da attributi semplici i quali possono essere sia monolingua o multilingua. Le operazioni di aggiunta di un attributo alla lista, la rimozione di un'attributo e lo spostamento di un'attributo nella lista sono operazioni disponibili nel tab relativo all redazione del contenuto nella lingua di default. All'interno dell'area relativa ad ogni attributo elemento della lista semplici, sono presenti le eventuali operazioni proprie della tipologia dell'attributo semplice (ricerca immagine, selezione link, ecc..).
Il sistema prevede le seguenti combinazioni:
Monolista di testi semplici monolingua
Configurazione base su xml:
<list name="CODICEATTRIBUTO" attributetype="Monolist" nestedtype="Monotext" />
Monolista di testi semplici multilingua
Configurazione base su xml:
<list name="CODICEATTRIBUTO" attributetype="Monolist" nestedtype="Text" />
Monolista di attributo composito
Configurazione base su xml:
<list name="CODICEATTRIBUTO" listtype="Monolist" attributetype="Composite" > <attribute name="CODICEATTRIBUTO1" attributetype="<TIPO_ATTRIBUTO_1>" /> <attribute name="CODICEATTRIBUTO2" attributetype="<TIPO_ATTRIBUTO_2>" /> . . . . <attribute name="CODICEATTRIBUTON" attributetype="<TIPO_ATTRIBUTO_N>" /> </list>
In ogni attributo è possibile la configurazione aggiuntiva l'obbligatorietà: required="true".
Essa implica che deve essere presente almeno un elemento della lista.
Gli attributi di questi tipo sono composti da una lista per ogni lingua inserita nel sistema, composta da attributi semplici i quali possono essere solo monolingua. Ogni lista di ogni lingua è indipendente dalle altre per cui ogni operazione su di essa per cui le operazioni su di essa (aggiunta di un attributo alla lista, la rimozione di un attributo e lo spostamento di un attributo nella lista) sono operazioni disponibili nel tab relativo ad ogni lingua.
Il sistema prevede l'attributo Lista di testi semplici monolingua.
<list name="CODICEATTRIBUTO" attributetype="List" nestedtype="Monotext" />
Nell'attributo è possibile la configurazione aggiuntiva per l'obbligatorietà: required="true". Essa implica che deve essere presente almeno un elemento per ciascuna delle liste di lingua.
Gli attributi di questi tipo sono composti da un’insieme di attributi elementari tra di loro disomogenei i quali possono essere sia monolingua o multilingua. L’attributo singolo composito è possibile ma la sua più utile collocazione la trova come elemento di una monolista (in quanto gli attributi elementari componenti possono essere multilingua). All'interno dell'area relativa ad ogni attributo elemento della lista semplici, sono presenti le eventuali operazioni proprie della tipologia dell'attributo semplice (ricerca immagine, selezione link, ecc..).
Configurazione base su xml (dell’attributo elementare):
<composite name="CODICEATTRIBUTO" attributetype="Composite" > <attribute name="CODICEATTRIBUTO1" attributetype="<TIPO_ATTRIBUTO_1>" /> <attribute name="CODICEATTRIBUTO2" attributetype="<TIPO_ATTRIBUTO_2>" /> . . . . <attribute name="CODICEATTRIBUTON" attributetype="<TIPO_ATTRIBUTO_N>" /> </composite>
Sono possibili le configurazioni aggiuntive proprie di ogni attributo elementare incluso con l’eccezione della configurazione aggiuntiva per la ricercabilità.
Il plugin fornisce una serie di Showlet che consente la modifica sia del proprio Profilo Utente che della propria Password.
Le showlet disponibili sono:
Edita Utente Corrente - Interfaccia di aggiornamento profilo e cambio password
Edita Password Utente Corrente - Interfaccia di cambio password
Edita Profilo Utente Corrente - Interfaccia di aggiornamento profilo
Le interfacce presentano la funzionalità pura, senza nessun elemento di Presentation, la cui gestione è in carico agli sviluppatori di Front-End responsabili del portale dove il Plugin viene inserito.
