• Non ci sono risultati.

6.3

Implementazione dei contenuti

I tipi di contenuto che definiamo sulla piattaforma corrispondo ai tipi di documenti evi- denziati nell’analisi del lavoro collaborativo. Questi vengono descritti in un file XML denominato “psContentModel.xml”.

Osservando i metadati di ciascun documento notiamo la presenza di un campo comune, costituito dal “nome e cognome del docente o dell’ATA”. Possiamo perciò sfruttare i principi dell’ereditarietà di Alfresco per individuare un tipo di contenuto padre da cui discendono tutti i tipi specializzati che implementiamo sulla piattaforma: un “Documento Portale Scuola” avente come unico metadato il nome del docente o ATA di cui parla il documento. Il file che descrive il modello dei contenuti importa le informazioni presenti in due dei modelli standard di Alfresco, ossia quello dei tipi di dato fondamentali (con prefisso d) e quello dei contenuti di base (con prefisso cm). Abbiamo quindi stabilito uno spazio dei nomi per il modello personalizzato della piattaforma, avente prefissopsc.

La descrizione dei tipi di documento si colloca all’interno del tag <types>. Riportia- mo qui solamente due esempi significativi, ossia il super-tipo dei documenti della piat- taforma (psc:documento) e il tipo che descrive le domande di ricostruzione di carriera

(psc:domandaRC).

Il tipo genitorepsc:documentodeve rappresentare un meta-dato comune a tutti i tipi di documenti utilizzati nel lavoro collaborativo, ossia il nome dell’impiegato cui il documento si riferisce. Osserviamo il codice relativo:

< t y p e n a me =" psc : d o c u m e n t o " >

< title > D o c u m e n t o P o r t a l e Scuola </ title > < parent > cm : content </ parent >

< p r o p e r t i e s >

< p r o p e r t y n a m e =" psc : n o m e I m p i e g a t o " > < type > d : text </ type >

< m a n d a t o r y > true </ m a n d a t o r y > < m u l t i p l e > false </ m u l t i p l e > </ p r o p e r t y >

</ p r o p e r t i e s > </ type >

Il tipo discende (<parent>) dal tipo base definito per i contenuti di Alfresco, ossia cm: content4, ereditandone tutte le caratteristiche.

Rappresentiamo il meta-dato specifico dei documenti Portale Scuola con una proprietà (<property>) cui diamo nome psc:nomeImpiegato. Questa è costituita da un valore di tipo testuale (<type>d:text</type>) ed è un meta-dato obbligatorio (<mandatory>true</ mandatory>). Ogni documento è relativo a un unico impiegato, dunque implementiamo la proprietà psc:nomeImpiegato affinché possa contenere un solo valore (<multiple>false</ multiple>).

La domanda di ricostruzione di carriera presenta i seguenti metadati: • nome e cognome del docente o dell’ATA

46 CAPITOLO 6. LA PIATTAFORMA SOFTWARE • autocertificazione dei servizi allegata

• documentazione allegata

Avendo fatto discendere il tipo da psc:documento, il nome dell’impiegato è rappresentato dalla proprietà descritta nel tipo padre. I rimanenti metadati sono riferimenti ad altri documenti, quindi sono rappresentati attraverso delle associazioni (<associations>).

< t y p e n a me =" psc : d o m a n d a R C " >

< title > D o m a n d a di R i c o s t r u z i o n e di C a r r i e r a </ title > < parent > psc : d o c u m e n t o </ parent >

< a s s o c i a t i o n s >

< a s s o c i a t i o n n a m e =" psc : a s s o c A S " >

< title > A u t o c e r t i f i c a z i o n e dei S e r v i z i a l l e g a t a </ title > < source >

< m a n d a t o r y > true </ m a n d a t o r y > < many > false </ many >

</ source > < target >

< class > psc : a u t o c e r t i f i c a z i o n e S e r v i z i </ class > < m a n d a t o r y > true </ m a n d a t o r y >

< many > false </ many > </ target > </ a s s o c i a t i o n > < a s s o c i a t i o n n a m e =" psc : d o c u m e n t a z i o n e A l l e g a t a " > < title > D o c u m e n t a z i o n e a l l e g a t a </ title > < source > < m a n d a t o r y > false </ m a n d a t o r y > < many > true </ many >

</ source > < target >

< class > cm : content </ class > < m a n d a t o r y > false </ m a n d a t o r y > < many > true </ many >

</ target > </ a s s o c i a t i o n > </ a s s o c i a t i o n s > </ type >

I collegamenti hanno identificativopsc:assocAS (per l’autocertificazione dei servizi) epsc: documentazioneAllegata(per la documentazione ulteriore) e accettano come valori rispet- tivamente:

• un puntatore singolo ad un’autocertificazione dei servizi • da zero a più puntatori a contenuti generici (cm:content)

Riportiamo lo schema dei tipi di contenuto personalizzati nella Tabella 6.1.

Il modello dei contenuti presenta un ulteriore elemento, necessario per la realizzazione del flusso di lavoro. Riferendoci alla descrizione della presentazione di domanda di carriera,

6.3. IMPLEMENTAZIONE DEI CONTENUTI 47 Documento Nome Proprietà Associazioni Documento Por- tale Scuola psc:documento psc:nomeImpiegato Certificato di ser- vizio psc:certificatoServizio psc:nomeImpiegato, psc:nomeScuola, psc:annoScolastico, psc:profilo Autocertificazione dei servizi psc:autocertificazio- neServizi psc:nomeImpiegato psc:assocDRC Domanda di rico- struzione di car- riera

psc:domandaRC psc:nomeImpiegato psc:assocAS, psc:do- cumentazioneAllega- ta

Tabella 6.1: Schema dei tipi di contenuto personalizzati

notiamo che la domanda di ricostruzione di carriera e l’autocertificazione dei servizi ven- gono protocollate dal responsabile del protocollo. Il numero di protocollo è una proprietà condivisa da documenti di tipo diverso, che abbiamo espresso come un aspetto.

L’elemento<aspects>del modello ospita un aspetto psc:protocollabiledescritto dal codice: < aspects > < a s p e c t n a m e =" psc : p r o t o c o l l a b i l e " > < title > P r o t o c o l l o </ title > < p r o p e r t i e s > < p r o p e r t y n a m e =" psc : n P r o t o c o l l o " > < type > d : text </ type >

< m a n d a t o r y > true </ m a n d a t o r y > < m u l t i p l e > false </ m u l t i p l e > </ p r o p e r t y > </ p r o p e r t i e s > </ aspect > </ aspects >

La proprietà di tipo testualepsc:nProtocollopuò così essere attribuita ai contenuti indi- pendentemente dal loro tipo e solamente quando necessaria.

I tipi descritti dal modello necessitano di moduli (o form) per la visualizzazione dei loro metadati. Abbiamo descritto tali moduli in un documento XML denominato “share- config-custom.xml”.

In primo luogo abbiamo reso disponibili i nuovi tipi e aspetti nei rispettivi menù di selezione e modifica, definendo la configurazione della DocumentLibrary (individuata con un confronto fra stringhe,evaluator="string-compare").

< c o n f i g e v a l u a t o r =" string - c o m p a r e " c o n d i t i o n =" D o c u m e n t L i b r a r y " > < aspects >

< visible >

< a s p e c t n a m e =" psc : p r o t o c o l l a b i l e "/ > </ visible >

48 CAPITOLO 6. LA PIATTAFORMA SOFTWARE < addable > </ addable > < r e m o v e a b l e > </ r e m o v e a b l e > </ aspects > < types > < t y p e n a me =" cm : c o n t e n t " > < s u b t y p e n a m e =" psc : d o c u m e n t o " / > < s u b t y p e n a m e =" psc : c e r t i f i c a t o S e r v i z i o " / > < s u b t y p e n a m e =" psc : a u t o c e r t i f i c a z i o n e S e r v i z i "/ > < s u b t y p e n a m e =" psc : d o m a n d a R C "/ > </ type > < t y p e n a me =" psc : d o c u m e n t o " > < s u b t y p e n a m e =" psc : c e r t i f i c a t o S e r v i z i o "/ > < s u b t y p e n a m e =" psc : a u t o c e r t i f i c a z i o n e S e r v i z i "/ > < s u b t y p e n a m e =" psc : d o m a n d a R C "/ > </ type > </ types > </ config >

Per quanto riguarda gli aspetti, vediamo chepsc:protocollabileè stato inserito in un tag

<visible>ed appunto “visibile”. Si sono lasciati i<addable>(aggiungibile) e<removeable>

(rimuovibile) vuoti perché Alfresco inserisce di default in queste “categorie” tutti gli aspetti visibili, salvo diversa specificazione.

Come si può osservare dal codice, sono inseriti come tipi solo i contenuti “radice”, mentre i loro discendenti sono categorizzati come sottotipi (subtype). La struttura tipo-sottotipo gestisce i possibili cambiamenti (voce “Cambia tipo” nel menù di ogni documento) e ciò sta alla base del fatto che ogni elemento compaia due volte nella configurazione. Inserendo incm:content non solo il suo discendente direttopsc:documento, ma anche quelli indiretti, diventa possibile trasformare, per esempio, qualsiasi contenuto in un tipopsc:domandaRC.

Descriviamo quindi i form per modificare le proprietà dei nodi (documenti) esistenti, utilizzando come base la configurazione dei nodi di tipo cm:content5. Riutilizziamo le tre definizioni di form (ognuna rappresentata da un tagform) in esso contenute (generico, pop- up per la modifica dei metadati inline e modifica inline), inserendole nelle configurazioni dei tipi di nodo (evaluator="node-type") da noi definiti.

Per ogni <form> estendiamo la lista dei campi visibili (<field-visibility>) con un elemento <show> per ogni proprietà o associazione definita nel modello (ad esclusione dell’aspettopsc:protocollabile), per esempio:

< s h o w id =" psc : n o m e I m p i e g a t o "/ >

Le indicazioni su come visualizzare i diversi campi sono contenute nell’elemento<appearance >. Le proprietà definite nel modello sono tutte di tipo testuale e le abbiamo implementate definendo un campo (<field>) con un controllo che stabilisce la lunghezza massima della stringa contenuta:

6.3. IMPLEMENTAZIONE DEI CONTENUTI 49

< f i e l d id =" psc : n o m e I m p i e g a t o " label - id =" p r o p . p s c _ n o m e I m p i e g a t o " > < control >

< control - p a r a m n a m e =" m a x L e n g t h " >100 </ control - param > </ control >

</ field >

L’attributolabel-idrimanda all’etichetta da associare alle voci del form, definita succes- sivamente. Le associazioni presentano anch’esse la descrizione di un campo, a cui però non imponiamo controlli:

< f i e l d id =" psc : a s s o c A S " label - id =" a s s o c . p s c _ a s s o c A S "/ >

L’aspetto psc:protocollabile è visualizzato (quando presente) con una scheda aggiunti- va, che definiamo in una configurazione a parte6. Trattandosi di un piccolo modulo non utilizziamo come basecm:content, ma rendiamo disponibile unicamente un campo testuale:

< c o n f i g e v a l u a t o r =" a s p e c t " c o n d i t i o n =" psc : p r o t o c o l l a b i l e " > < forms > < form > < field - v i s i b i l i t y > < s h o w id =" psc : n P r o t o c o l l o "/ > </ field - v i s i b i l i t y > < a p p e a r a n c e > < f i e l d id =" psc : n P r o t o c o l l o " label - id =" p r o p . p s c _ n P r o t o c o l l o "/ > </ a p p e a r a n c e > </ form > </ forms > </ config >

I tipi di contenuti personalizzati permettono di potenziare le funzionalità di ricerca avanza- ta della piattaforma di Alfresco. Per rendere disponibili i tipi sostituiamo la configurazione esistente con una ad hoc (grazie all’attributoreplace="true"):

< c o n f i g r e p l a c e =" t r u e " e v a l u a t o r =" string - c o m p a r e " c o n d i t i o n =" A d v a n c e d S e a r c h " > < a d v a n c e d - search > < forms > < f o r m l a b e l I d =" s e a r c h . f o r m . l a b e l . c m _ c o n t e n t " d e s c r i p t i o n I d =" s e a r c h . f o r m . d e s c . c m _ c o n t e n t " > cm : content </ form > < f o r m l a b e l I d =" s e a r c h . f o r m . l a b e l . c m _ f o l d e r " d e s c r i p t i o n I d =" s e a r c h . f o r m . d e s c . c m _ f o l d e r " > cm : folder </ form > < f o r m l a b e l I d =" t y p e . p s c _ d o c u m e n t o " d e s c r i p t i o n I d =" s e a r c h . f o r m . d e s c . p s c _ d o c u m e n t o " > psc : d o c u m e n t o </ form > < f o r m l a b e l I d =" t y p e . p s c _ c e r t i f i c a t o S e r v i z i o " d e s c r i p t i o n I d =" s e a r c h . f o r m . d e s c . p s c _ c e r t i f i c a t o S e r v i z i o " > psc : c e r t i f i c a t o S e r v i z i o </ form > 6In questo caso il confronto avviene sugli aspetti.

50 CAPITOLO 6. LA PIATTAFORMA SOFTWARE

Nome Id Form

Start startevent1 psw:avviaRichiestaCS Crea Certificato di Ser-

vizio creaCSS psw:activitiCreaCSSemplice Valuta Certificato di Servizio (semplice) valutaCSS psw:activitiValutaCS Revisiona Certificato di Servizio revisionaCSS psw:activitiRevisionaCS Notifica di Approvazio- ne notificaApprovazioneS psw:activitiNotificaApprovazione Notifica di Rifiuto notificaRifiutoS psw:activitiNotificaRifiuto

Tabella 6.2: Schema della richiesta di certificato di servizio

< f o r m l a b e l I d =" t y p e . p s c _ a u t o c e r t i f i c a z i o n e S e r v i z i " d e s c r i p t i o n I d =" s e a r c h . f o r m . d e s c . p s c _ a u t o c e r t i f i c a z i o n e S e r v i z i " > psc : a u t o c e r t i f i c a z i o n e S e r v i z i </ form > < f o r m l a b e l I d =" t y p e . p s c _ d o m a n d a R C " d e s c r i p t i o n I d =" s e a r c h . f o r m . d e s c . p s c _ d o m a n d a R C " > psc : d o m a n d a R C </ form > </ forms > </ a d v a n c e d - search > </ config >

Trattandosi di una configurazione sostitutiva, dobbiamo riportare anche gli elementi<form > relativi ai contenuti di default di Alfresco (cm:content e cm:folder). Vengono così resi disponibili form di ricerca differenziati a seconda del tipo di contenuto selezionato.

Le schede di ricerca sono descritte nelle configurazioni relative ai nuovi nodi (evaluator ="model-type") all’interno di elementi<form> con attributoid="search".

Implementiamo come filtri di ricerca unicamente le proprietà e non i collegamenti. Anche in questo caso estendiamo la configurazione definita percm:contentcon le tecniche

mostrate precedentemente. Cambiano unicamente i controlli sui modi di visualizzazione che richiamano un modello (template) messo a disposizione da Alfresco:

< f i e l d id =" psc : n o m e I m p i e g a t o " label - id =" p r o p . p s c _ n o m e I m p i e g a t o " > < c o n t r o l t e m p l a t e ="/ org / a l f r e s c o / c o m p o n e n t s / f o r m / c o n t r o l s /

t e x t f i e l d . ftl "/ > </ field >

Documenti correlati