jAPS 2.0 entando - Database

Do It The jAPS Way

Eugenio Santoboni

First and complete version in Italian 
Chief Solution Engineer
AgileTec s.r.l.

Roberta Quaresima

Porting to DocBook 4.5 and translation to English 
jAPS Chief Marketing Officier
Tzente 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".

The copyright holders make no representation about the suitability of this Document for any purpose. It is provided “as is” without expressed or implied warranty. If you modify this Document in any way, identify your resulting Document as a variant of this Document.

2011-03-03

Revision History
Revision 1.62011-03-03MEM

Update for jAPS 2.0 entando version 2.2.0

Revision 1.52010-03-16MEM

Update for jAPS 2.0 entando version 2.0.10

Revision 1.42009-10-30ES

Update for jAPS 2.0 entando version 2.0.8

Revision 1.32009-03-09RQ

English and docbook adoption

Revision 1.22009-02-09ES

First public release

Abstract

The document describes the databases structure of jAPS 2.0 entando.


Chapter 1. Scopo del documento

Introduzione

Lo scopo di questa guida è quello di descrivere la struttura dei database utilizzati per jAPS 2.0 entando.

A chi è rivolto

Questo manuale è destinato a chi intende sviluppare un nuovo portale con jAPS. I candidati naturali sono dunque gli specialisti di presentazione web, gli sviluppatori Java e sistemisti.

Prerequisiti

Per poter utilizzare efficacemente le informazioni contenute in questo documento, sono necessarie conoscenze di base ed esperienza su basi di dati e database PostgreSQL.

Riferimenti

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 .

È inoltre possibile consultare la documentazione presente in:

jAPS 2.0 entando Project - Sito per gli sviluppatori

Chapter 2. Cosa è jAPS2.0

jAPS 2.0 entando è un "Enterprise Accessible Information Platform" professionale Open Source che facilita, l'aggregazione, la pubblicazione, l'accesso, la personalizzazione, fruibilità e integrazione di informazioni, servizi, processi e risorse di una organizzazione, rispettando i requisiti di accessibilità definiti nell'Allegato A – D.M. 8 Luglio 2005 (relativo alla Legge Stanca).

jAPS 2.0 entando Platform racchiude in un'unica soluzione tutte le caratteristiche "Enterprise" di performance, affidabilità, scalabilità e robustezza dei sistemi Portal, consente anche ad utenti diversamente abili di accedere e gestire le proprie informazioni e servizi ("Accessible"), è orientato alla gestione delle informazioni tramite uno strumento di Content Management ("Information") ed è utilizzabile come framework ("Platform") per la realizzazione di applicazioni verticali basate sui contenuti (Content Enabled Vertical Application).

Chapter 3. I Database

jAPS 2.0 entando è costituito da due database:

  • jAPS2.0Serv: database dei servizi
  • jAPS2.0Port: database del portale

Database dei Servizi

Il database dei servizi è costituito da 8 tabelle:

jAPS2.0Serv

Il database jAPS2.0Serv

Nei seguenti paragrafi vengono descritte le singole tabelle.

Tabella authgroups

La tabella contiene l'elenco dei gruppi. Il gruppo definisce a quali componenti (pagine, contenuti, risorse, servizi applicativi, etc..) l'utente appartenente a quel gruppo può accedere.

La tabella authgroups è composta dai seguenti campi:

  • groupname: nome del groppo
  • descr: descrizione del gruppo

Tabella authpermission

La tabella contiene l’insieme dei permessi. Nuovi permessi possono essere inseriti direttamente nella tabella authpermissions del db; il nuovo permesso sarà disponibile nella lista di permessi da associare durante la creazione nuovi ruoli.

La tabella authpermissions è composta dai seguenti campi:

  • permissionname: name del permesso
  • descr: descrizione del permesso

Tabella authrolepermissions

Definisce i ruoli degli utenti e i permessi associati ai ruoli. I dati sono gestibili attraverso l’interfaccia di amministrazione del sistema.

La tabella authrolepermissions è composta dai seguenti campi:

  • rolename: nome del ruolo
  • permissionname: nome del permesso associato al ruolo

Tabella authroles

Definisce i ruoli da assegnare agli utenti. I ruoli sono gestibili e personalizzabili dall’interfaccia di amministrazione del sistema.

La tabella authroles è composta dai seguenti campi:

  • rolename: nome del ruolo
  • descr: descrizione del ruolo

Tabella authusergroups

Definisce i gruppi associati ai singoli utenti. I dati sono gestibili attraverso l’interfaccia di amministrazione del sistema.

La tabella authusergroups è composta dai seguenti campi:

  • username: username utente
  • groupname: nome del gruppo associato all'utente

Tabella authuserroles

Definisce il ruolo associato ai singoli utenti. I dati sono gestibili attraverso l’interfaccia di amministrazione del sistema.

La tabella authuserroles è composta dai seguenti campi:

  • username: username utente
  • rolename: nome del ruolo associato all'utente

Tabella authuser

Definisce gli utenti registrati nel sistema.

La tabella authuser è composta dai seguenti campi:

  • username: username utente
  • passwd: password associata all'utente
  • registrationdate: data di registrazione/creazione dell'utente
  • lastaccess: data di ultimo accesso
  • lastpasswordchange: data ultimo campio password
  • active: specifica lo stato dell'utente ('1' attivo, '0' disabilitato)

Tabella authusershortcuts

Contiene le scorciatoie ai menu definiti dall'utente nella pagina iniziale.

La tabella authusershortcuts è composta dai seguenti campi:

  • username: il nome dell'utente
  • config: XML contenente la configurazione degli shortcut

Database Portal

Il database portale è costituito da 16 tabelle.

jAPS2.0Port

Il database jAPS2.0Port

Nei seguenti paragrafi vengono descritte le singole tabelle.

Tabella categories

jAPS consente di categorizzare le informazioni. Le categorie definite sono memorizzate su un’apposita tabella categorie.

La tabella categories è composta dai campi:

  • catcode: codice della categoria
  • parentcode: codice della categoria padre
  • titles: xml del titolo della categoria

I titoli delle categorie sono multilingua e vengono descritti attraverso un XML memorizzato nel campo titles.

Example 3.1. Esempio di xml dei titoli:

					
<?xml version="1.0" encoding="UTF-8"?>
<properties>
<property key="en">Home</property>
<property key="it">Home</property>
</properties>
					
				

Tabella contentmodels

Contiente i modelli dei contenuti. Si tratta di modelli costruiti con Velocity.

La tabella è composta dai campi:

  • modelid: identificativo univoco del modello di contenuto
  • contenttype: tipo di contenuto associato al modello
  • descr: descrizione del modello di contenuto
  • model: modello
  • stylesheet: foglio di stile associato al modello

Tabella contentrelations

La tabella viene utilizzata per descrivere le relazioni tra i singoli contenuti e pagine, risorse, altri contenuti, categorie e gruppi. In questo modo è possibile gestire vincoli referenziali sugli oggetti di un contenuto descritto in formato XML.

Le relazioni contenute in questa tabella riguardano esclusivamente i contenuti pubblicati.

La tabella è composta dai campi:

  • contentid: identificativo univoco del contenuto
  • refpage: pagina referenziata dal contenuto
  • refcontent: contenuto referenziato dal contenuto
  • refresource: risorsa referenziata dal contenuto
  • refcategory: categoria associata al contenuto
  • refgroup: gruppo associato al contenuto

Tabella workcontentrelations

La tabella viene utilizzata per descrivere le relazioni tra i singoli contenuti e categorie, unicamente per i contenuti in lavorazione (quindi non pubblicati). In questo modo è possibile gestire vincoli referenziali sugli oggetti di un contenuto descritto in formato XML.

Le relazioni contenute in questa tabella riguardano esclusivamente i contenuti pubblicati.

La tabella è composta dai campi:

  • contentid: identificativo univoco del contenuto
  • refcategory: categoria associata al contenuto

Tabella contents

La tabella contiene i contenuti creati.

La tabella è composta dai campi:

  • contentid: identificativo univoco del contenuto
  • contenttype: codice del tipo di contenuto
  • descr: descrizione del contenuto
  • status: stato del contenuto nell'area di lavoro
  • workxml: descrizione XML del contenuto che si trova in uno stato di modifica rispetto a quello presente on line
  • created: data di creazione del contenuto nel formato yyyyMMddhhmmss
  • lastmodified: data di ultima modifica nel formato yyyyMMddhhmmss
  • onlinexml: una descrizione XML del contenuto che è presente on line
  • maingroup: identificativo del contenuto proprietario del contenutot

L'ordine indicato degli attributi xml figli diretti della root non è indicativo e può variare.

Tabella contentsearch

Contiene il riferimento a tutti i campi che sono stati definiti searchable nella definizione dei tipi di contenuto (Consultare anche la tabella sysconfig).

La tabella contentsearch lavora esclusivamente sui contenuti pubblicati: vedere a titolo di confronto, la tabella workcontentsearch

La tabella è composta dai seguenti campi:

  • contentid: identificativo univoco del contenuto
  • attrname: nome dell'attributo
  • textvalue: il testo inserito nell'attributo (per attributi tipo Text)
  • datavalue: la data inserita nell'attributo (per attributi tipo Date)
  • numvalue: il numero inserito nell'attributo (per attributi tipo Number)
  • langcode: codice univoco della lingua di riferimento (per i testi inseriti negli attributi tipo Text)

Tabella workcontentsearch

dei contenuti in lavorazione Contiene il riferimento a tutti i campi che sono stati definiti searchable nella definizione dei tipi di contenuto, relativi unicamente ai contenuti attualmente in lavorazione (e quindi non pubblicati). La struttura è la medesima della tabella contentsearch; vedere anche la tabella sysconfig.

  • contentid: identificativo univoco del contenuto
  • attrname: nome dell'attributo
  • textvalue: il testo inserito nell'attributo (per attributi tipo Text)
  • datavalue: la data inserita nell'attributo (per attributi tipo Date)
  • numvalue: il numero inserito nell'attributo (per attributi tipo Number)
  • langcode: codice univoco della lingua di riferimento (per i testi inseriti negli attributi tipo Text)

Tabella localstrings

Consente di gestire l’internazionalizzazione e localizzazione di stringhe, etichette, etc., del sistema jAPS.

La tabella è composta dai seguenti campi:

  • keycode: chiave della label
  • langcode: codice univoco della lingua di riferimento
  • stringvalue: valore della label

Tabella pagemodels

Definisce i modelli di pagina. Un modello di pagina è costituito da una jsp più la sua configurazione su tale tabella. La tabella contiene inizialmente un solo modello temporaneo, da sostituire non appena si creeranno quelli personalizzati. Il codice (colonna “code”) deve corrisponde al nome della jsp che implementa il modello di pagina.

La tabella è composta dai seguenti campi:

  • code: codice univoco del modello di pagina
  • descr: descrizione del modello di pagina
  • frames: xml che descrive l'organizzazione della pagina suddivisa in frames
  • plugincode: identificativo del plugin a cui è associato il modello

I frame devono avere posizioni numerate da 0 in poi, senza buchi intermedi. Un solo frame può avere l’attributo main=true; questo attributo sta a significare che un contenuto eventualmente pubblicato in quel frame è da considerare contenuto principale della pagina; ciò ha conseguenze nella risoluzione dei link simbolici a contenuto.

Tabella pages

Definisce le pagine del Portale, collegate in una struttura gerarchica. La struttura delle pagine può essere successivamente modificata e completata mediante l’apposita funzionalità. I titoli delle pagine sono multilingua e vengono descritti attraverso un XML memorizzato nel campo titles.

Example 3.2. Esempio di xml dei titoli:

					
<?xml version="1.0" encoding="UTF-8"?>
<properties>
<property key="en">Home</property>
<property key="it">Home</property>
</properties>
					
				

La tabella è composta dai seguenti campi:

  • code: codice univoco della pagina
  • parentcode: codice univoco della pagina padre
  • pos: posizione della pagina rispetto alle pagine sorelle all'interno dell'albero
  • modelcode: codice del modello di pagina associato
  • titles: titoli della pagina nelle lingue definite
  • groupcode: codice univoco del gruppo associato alla pagina
  • showinmenu: specifica se la pagina deve essere compresa nei menù dinamici
  • extraconfig: specifica se nella pagina debbano comparire i titoli extra

Tabella resourcerelations

La tabella resourcerelations viene utilizzata per descrivere le relazioni tra le risorse e le categorie di appartenenza.

La tabella è composta dai seguenti campi:

  • resid: codice univoco della risorsa
  • refcategory: categoria associata alla risorsa

Tabella resources

La tabella resources contiene le risorse definite nel sistema.

La tabella è composta dai seguenti campi:

  • resid: identificativo univoco della risorsa
  • restype: identificativo del tipo della risorsa (può essere Image o Attach)
  • descr: descrizione della risorsa
  • maingroup: nome/codice del gruppo proprietario della risorsa
  • xml: descrittore della risorsa
  • masterfilename: il nome del file associato alla risorsa

Nell'xml sono presenti tutti i dati caratterizzanti la risorsa ed alcuni di essi (identificativo, tipo e descrizioni) sono presenti anche in colonne specifiche nella tabella del db per facilitarne la ricerca.

Note

La posizione su disco della risorsa dipende principalmente da 2 fattori:

  • dal gruppo del contenuto
  • dal tipo del contenuto (se Attach o Image).

Posizione fisica delle Risorse Libera (appartenente al gruppo free) Il percorso fisico della risorsa è dato da:

					
<resourceDiskRootFolder_param>/cms/<type_folder>/<FILENAME>
					
				

resourceDiskRootFolder_param = valore del parametro resourceDiskRootFolder il cui valore si trova nel file systemParams.properties posizionato nella cartella WEB_APP/WEB-INF/conf

type_folder = nome cartella dipendente dal tipo; se il tipo della risorsa è Image il folder avrà nome images, se il tipo della risorsa è Attach il folder avrà nome documents.

FILENAME = il nome del file della risorsa, estratto dall'xml di definizione della risorsa

Posizione fisica delle Risorse Non Libera (appartenente ad un gruppo diverso all gruppo free). Il percorso fisico della risorsa è dato da:

					
<protectedResourceDiskRootFolder_param>/cms/<type_folder>/<group_name>/<FILENAME>
					
				

protectedResourceDiskRootFolder_param = valore del parametro protectedResourceDiskRootFolder il cui valore si trova nel file systemParams.properties posizionato nella cartella WEB_APP/WEB-INF/conf

type_folder = nome cartella dipendente dal tipo; se il tipo della risorsa è Image il folder avrà nome images, se il tipo della risorsa è Attach il folder avrà nome documents.

group_name = nome/codice del gruppo della risorsa creata.

FILENAME = il nome del file della risorsa, estratto dall'xml di definizione della risorsa

Tabella showletcatalog

Contiene l’elenco delle showlet disponibili nel sistema.

La tabella è composta dai seguenti campi:

  • code: identificativo univoco della showlet; nel caso di showlet non logica, deve corrispondere al nome della jsp che implementa la showlet
  • titles: i titoli della showlet nelle lingue definite
  • parameters: xml di configurazione; viene utilizzato per caricare parametri di configurazione di una showlet
  • plugincode: identificativo del plugin a cui è associata la showlet
  • parenttypecode: codice della showlet parente (nel caso di showlet logica)
  • defaultconfig: configurazione della showlet logica
  • locked: stato della showlet logica

Tabella showletconfig

La tabella è composta dai seguenti campi:

  • pagecode: identificativo univoco della pagina
  • frameposition: posizione
  • showletcode: identificativo univoco della showlet associata alla pagina
  • config: xml di configurazione
  • publishedcontent: codice univoco del contenuto pubblicato

Tabella sysconfig

La tabella sysconfig è la tabella di configurazione del sistema jAPS. Contiene varie informazioni di configurazione del sistema. La tabella è predisposta per ospitare diverse configurazioni contemporaneamente.

La tabella è composta dai seguenti campi:

  • version: specifica la versione cui si riferisce ogni record. E’ sufficiente definire una sola versione di configurazione
  • item: specifica la tipologia di informazione
  • descr: breve descrizione
  • config: contiene il valore dell’item e può essere una semplice stringa o un intero testo XML.

Tabella uniquekeys

Contiene l’ultimo valore di una sequenza utilizzata per le chiavi univoche. In fase di installazione del sistema deve contenere un record con id=1.

La tabella è composta dai seguenti campi:

  • id: identificativo univoco
  • key value: valore della chiave.