2. Indice
Presentazione Generale della Piattaforma
Document Management
Record Management
Web Content Management
L’Architettura
I Componenti Open Source
I Protocolli e gli Standard Supportati
Standard JSR-170
Estendere il Modello dei Contenuti
Custom Content Model
Esempi
Comunicare con il Repository
Web Script
Esempi
Il Modello Relazionale Dei Dati
Conclusioni
3. Cosa è Alfresco
Piattaforma di Enterprise Content Management Open
Source
E’ estendibile
Modello dei Dati:Custom Content Model
Servizi: Web Script, Web Service
Licenza GPL (General Public License)
Il Modello Open Source consente di utilizzare i più
recenti contributi della comunità:
Hibernate
Open Office
Lucene
1/73
4. Cosa è una piattaforma di ECM
ECM raggruppa un insieme di tecnologie Content-Centric:
Document Management (DM): Catalogare, Organizzare e
Condividere file Binari prodotti da software di Authoring
Web Content Management (WCM): Creazione e Gestione di
contenuti destinati ad essere fluiti attraverso il Web
Records Management (RM): Identificazione, Classificazione,
Archiviazione e Distruzione di Record (Pratiche elettroniche)
Digital Asset Management: Archiviazione, Catalogazione,
Gestione, Ricerca full-text di risorse e contenuti digitali
(Video, Audio, Immagini)
Collaboration: Strumenti che facilitano la collaborazione, la
condivisione di informazioni tramite Wiki, Blog, Siti Personali,
Calendari Condivisi..
Search: supporto alla ricerca dei contenuti
2/73
5. La Nascita
Alfresco è stata fondata nel 2005 da un gruppo di
persone provenienti dall’ECM Documentum®
I progettisti di Alfresco hanno alle spalle più di 15
anni di esperienza nel settore degli ECM.
I finanziatori sono aziende leader nel settore degli
investimenti
SAP Ventures.
3/73
6. L’Obiettivo
Fornire una soluzione Open Source di ECM
Superare soluzioni commerciali:
Documentum®
Microsoft® SharePoint®
In Termini di
Caratteristiche
Funzionalità
Vantaggi per gli utenti
4/73
7. La Storia
Gennaio 2005 – il team di Documentum inizia a sviluppare Alfresco.
Ottobre 2005 – lancio del prodotto Alfresco.
Maggio 2006 - Alfresco Enterprice è Open Source al 100%.
Settembre 2006 - Alfresco lancia le soluzioni: WCM e RM.
Novembre 2006 - Alfresco, MySQL e Red Hat realizzano il primo
benchmark open source JSR-170.
Dicembre 2006 - Alfresco annuncia il primo sistema ECM incorporato.
Febbraio 2007 - Alfresco è rilasciato con licenza GPL.
Febbraio 2007 – viene rilasciato Alfresco 2.0.
Luglio 2007 - Alfresco diventa licenziataria di Open Invention Network
Dicembre 2007 – Alfresco annuncia la prima piattaforma Open Source
di Social Computing di classe Enterprice.
Dicembre 2007 - Alfresco vince il premio “Red Herring 100 Global
2007 Award”
Gennaio 2008 – il benchmark sui Repository Open Source JSR-170
Compliant supera i 100 milioni di oggetti.
5/73
8. I Vantaggi
E’ una soluzione Open Source (GPL)
Utilizza Standard Aperti:
E’ basato sul JSR-170
Si arricchisce frequentemente dei contributi della
Comunità
Offre soluzioni innovative anche rispetto alle
soluzioni commerciali
6/73
9. I Clienti nel Mondo
Government Financial Services
UK MOD
7/73
10. I Clienti nel Mondo
Professional Services
Publishing & Media
Manufacturing
Education & NFP
8/73
11. I Partner Tecnologici
JBoss - www.jboss.com
LifeRay - www.liferay.com
MySQL - www.mysql.com
Novell - www.novell.com
SugarCRM - www.sugarcrm.com
9/73
12. La Piattaforma ALFRESCO
Image Document
Management Management
Content
Repository
Records Web Content
Management Management
10/73
13. Il Gestore Documentale
Il Modulo permette di gestire il flusso
documentale dell’Organizzazione
attraverso politiche Centralizzate e
Personalizzabili
Processi Documentali unificati
Digitalizzazione dei Documenti
Check in/out
Versioning
Convesioni tra formati
Profilazione utenti e gruppi
Ricerca Full-Text
Workflow documentale
11/73
14. Il Gestore Documentale
I Bisogni dell’Utente
Usare Tool di Authoring dei contenuti famigliari
Facilità di Integrazione con i Tool di Authoring usati
quotidianamente (es. Microsoft Office, Open Office)
Politiche di sicurezza centralizzate
Librerie di Servizi(Check-in/out, Versioning)
Gestione del Workflow documentale
Scalabilità: rispetto ai contenuti e agli utenti
Personalizzare la UI:Web Client personalizzabile
12/73
15. Libreria di Servizi
Sono servizi nativi forniti dal repository al Gestore
Documentale per gestire la storia di un
documento (Versioning) e la modifica in parallelo
dei documenti da parte di un gruppo di lavoro
(Check in/out)
Check-out (lock): blocca temporaneamente un
documento per permettere l’Editing da parte di un
solo utente alla volta.
Check-in(unlock): sostituisce il documento
originale bloccato con la “Working Copy”, che può
essere editata, e dopo rilascia il blocco.
Versioning: è la possibilità di mantenere traccia
delle modifiche effettuate su un documento
editato da diversi Autori
13/73
16. Il Gestore Documentale
Shared Drive Interface: CIFS
CIFS consente di navigare il
repository come il File System
locale
Gli utenti possono continuare ad
utilizzare gli strumenti di Autoring
che conoscono (Microsoft Office,
Open Office)
Il protocollo Server Message Block
(SMB) e il suo derivato Common
Internet File System (CIFS)
permettono di condividere files e
stampanti tra i vari nodi di una rete
CIFS è usato soprattutto nei
sistemi Windows
Samba è una implementazione free
di CIFS per sistemi Linux
14/73
17. Il Gestore Documentale
Integrazione con Microsoft Office e Open Office
Funzionalità offerte:
Editing dei documenti
multi-utente
Ricerca Full-Text dei
documenti
Creazione di nuovi
documenti
Accesso alle versioni
storicizzate dei
documenti
Archiviazione nel
repository
Modifica dei documenti
15/73
18. Il Gestore Documentale
Sicurezza e Autenticazione
Gestione dell’Autorizzazione e Autenticazione
degli Utenti (Login, Ruoli, Permessi)
Gestione di Gruppi, Sotto-gruppi e Utenti
Autenticazione eseguita negli Entry Point:
CIFS
FTP
WebDAV
Web Service
Supporto all’Integrazione con sistemi esterni:
NTLM (Windows NT LAN Manager)
LDAP (Lightweight Directory Access
Protocol)
Active Directory
Single Sign-on CAS (Central
Authentication Service)
16/73
19. Il Gestore Documentale
Autorizzazione Ruoli Permessi
Consumer Può leggere Cartelle e
Alfresco permette di contenuti.
assegnare dei Ruoli ad Utenti Editor Consumer + può editare
e/o a Gruppi su un Cartelle e Contenuti
esistenti.
determinato Spazio e/o
Contributor Consumer + può
Contenuto
aggiungere nuovi
I Ruoli sono collezioni di contenuti.
permessi assegnati ad Utenti Collaborator Editor + Contributor
e/o a Gruppi e Sottogruppi in Coordinator Controllo Completo
uno Spazio
Alfresco supporta una serie di
ruoli Predefiniti
I Sotto-Spazi ereditano le
autorizzazioni dalla spazio
Padre
17/73
20. Modalità di Accesso alla Piattaforma
Porte di Accesso
Web
HTTP/S Browser
Customized Web Client
CIFS
Porte di Accesso
Shared Drive
Workflow
Ricerca
WebDav Engine
Web Full-text
Folder
FTP
FTP Client File
Library
Store
Service
SMTP
Email
ALFRESCO
Thick Client
Contenuti
DB
Relazion File
ale
Metadati System
18/73
21. Records Management (RM)
Cosa è
Nuove leggi, regolamenti e norme causano cambiamenti
nella gestione delle Registrazioni nei Sistemi Documentali
(RM) all’interno di una Organizzazione.
ISO 15489:2001 definisce la gestione delle Registrazioni
come “la pratica di identificazione, classificazione,
archiviazione, conservazione e distruzione delle
Registrazioni”
ISO definisce le Registrazioni: “informazioni create,
ricevute e mantenute come elemento di prova e di
informazione da parte di una organizzazione o una
persona in virtù di obblighi di legge o di una transazione
d’affari”.
19/73
22. Records Management (RD)
Limiti dei Records Management Tradizionali
Sistema di Approvazione nei Records Management
tradizionali troppo difficile da usare per gli utenti
Informazioni incoerenti fra i diversi Sistemi
Documentali (RM) presenti in una Organizzazione
Scarsa tempestività del trasferimento dei documenti
da un sistema ad un’altro
Aumento dei costi per la gestione di molteplici
Archivi
20/73
23. Records Management (RD)
Alfresco Record Management
Progettato per supportare lo standard US Department of
Defense 5015.2 sulla gestione delle Registrazioni
Estrazione automatica e classificazione dei Metadati di un
documento
Conversione automatica dai formati di office proprietari ai
formati neutri di archiviazione di lungo termine come Open
Document Format (ODF) e Portable Document Format (PDF)
Attraverso l’integrazione con Scanner e un software di OCR
Alfresco fornisce una soluzione completa per archiviare,
categorizzare, trasformare documenti e effettuare ricerche
in modalità Full-Text sui Records dell’Organizzazione.
Anche le Mail sono considerate Documenti, Alfresco
supporta il Drag e Drop delle Mail da Microsoft Outlook nel
Repository, l’estrazione automatica dei metadati (Indirizzo
di Provenienza, Destinazione) e indicizzazione Full-Text
21/73
24. Web Content Management (WCM)
Cosa è
Il WCM è un modulo specializzato nella gestione dei contenuti
destinati ad essere pubblicati in un Sito Web o in una Web
Application.
Alfresco WCM si poggia sui servizi offerti dal repository e fornisce
le funzionalità per creare, gestire, pubblicare contenuti web in un
contesto di Multi-organizzazione
I tipi di contenuti gestiti includono:
Testo
HTML
XML
Immagini
Contenuti multimediali (Audio, Video)
Il WCM permette al personale dell’organizzazione, non tecnico, di
gestire i contenuti da pubblicare sul Portale o sulla Intranet
Aziendale senza l’aiuto degli sviluppatori
22/73
25. Web Content Management (WCM)
Le Funzionalità
L’utente non tecnico può usufruire di Tool di Autoring integrati nella
piattaforma per creare facilmente i contenuti:
XML
HTML
Testo
Il WCM integra un motore di trasformazione dei contenuti (da XML in
PDF o HTML, ri-definizione della risoluzione e del formato di una
immagine)
La funzionalità di Drag-and-Drop del layout del Sito permette
all’utente non tecnico di personalizzare l’aspetto grafico dei siti web
Alfresco WCM incorpora il motore di ricerca testuale (Lucene) che
permette la ricerca attraverso i campi metadati caratterizzanti un
contenuto Web
Alfresco WCM separa il contenuto dalla presentazione memorizzando il
contenuto in un file XML che successivamente viene trasformato dal
motore di trasformazione (XSLT, FreeMarker) nello specifico formato
di presentazione dei contenuti (HTML, JSP, PDF).
Alfresco WCM supporta la gestione dei Contenuti Multilingua
Alfresco WCM supporta la gestione di Siti Multipli
23/73
26. Web Content Management (WCM)
Funzionalità I Web Form: permettono agli utenti non
tecnici di produrre contenuti web che
saranno memorizzati nel repository in file
XML, validati da un XML Schema e
trasformati, tramite FreeMarker e/o XSLT in
HTML, PDF, JSP.
Sandboxes: ogni Editor di un sito ha
accesso ad una copia del sito nella propria
Sandbox, dove produce gli aggiornamenti
Preview: questa funzionalità permette
all’autore dei contenuti di analizzare il
contenuto prodotto prima di pubblicarlo nel
live site.
Delivery Workflow: permette di implementare
attraverso jBPM engine un processo di
Application Framework business attraverso cui sottomettere il
contenuto creato.
Data Structures
Deployment: processo che permette di
pubblicare il contenuto nel live site
WCM
Alfresco
Hardware / OS
24/73
27. WCM Web Team
Architettura
HTTP/S
Web Client WWW
Alfresco
XSLT File Deployer
PDF
XML
Validazione
HTML
FreeMarker
XSD
(Schema)
JSP
WWW
PNG
CSS Alfresco
File Deployer
Shared Drive ALFRESCO
Marketing
Utenti e Gruppi
CIFS
Team
DB
Relazionale LDAP
Metadati
25/73
28. L’ARCHITETTURA
Foundation API
Quartz
JBoss Apache
Web
JCR API
Client Scheduler
jBPM Lucene
CIFS
JavaScript API
Rules e Web SMTP
Auditing
Actions Form
WebDAV Listener FreeMarker API
Web Service API
Custom
Extraction
Rhino Web Script
FTP Trasformation
Javascript
REST API
Framework
API
Web Application
SMTP
Servlet Container
Macchina Fisica
Open Image Contenuto Lucene
Office Magick Binario Index
DB Relazionale
LDAP
File System
Storage
26/73
29. I Componenti Open Source
Componenti Open Source Funzionalità implementata
in Alfresco
Java 1.5
Spring 1.2 Aspect-Oriented Framework
MyFaces JSF Implementation Implementazione delle specifiche
JavaServer Faces (JSF) di Sun
JBoss App Server 4.0 Application Server
JBoss Portal 2.0 Portal
PDFBox – Open Source Java PDF
Library
JBoss jBPM Workflow Avanzati
27/73
30. I Componenti Open Source
Componenti Open Source Funzionalità implementata
in Alfresco
Apache Lucene Text Search Engine
Hibernate Persistenza del Database
FreeMarker Presentation per il Framework Web Script,
Views
Mozilla Rhino JavaScript Engine JavaScript engine
OpenSymphony Quartz Scheduling di processi asincroni.
Apache Axis Web Service
OpenOffice 2.0 Conversione di documenti office in PDF
Apache FOP Trasformazione di XSL:FO in PDF
Apache POI Java API per l’estrazione di Metadati da
file di Microsoft Office
ImageMagick Conversione di file di Immagini
28/73
31. Standards e Protocolli Supportati
Standard/Protocolli Note
FTP Il Contenuto può essere caricato nel
repository via FTP
WebDAV Permette di leggere e scrivere via HTTP sul
repository
CIFS Permette al repository di essere montato
come un disco condiviso
JSR-170-Java Content Alfresco è un JCR-compliant repository
Repository API
JSR-168-Java Portlet
Integration
SOAP Alfresco Web Services usa SOAP-based
web Services
RESTful API
LDAP LDAP Directory o Microsoft Active Directory
server
29/73
32. Gestione Documentale
La Soluzione
Il Problema
E’ necessario uno standard condiviso da tutti i
Content repository per semplificare e uniformare
la comunicazione con le applicazione esterne..
Oggi quasi ogni applicazione di Gestione dei
Contenuti usa il proprio “Content Repository“
JSR-170 è la Risposta
che estende un livello di storage tipicamente
un Database Relazionale aggiungendo i vari
Servizi tipici di una applicazione Content-
Centric (Versioning, Check-in/out)…
Esempio 1: nella specifica è completamente definito
Questo strato di servizio è implementato in il servizio Versioning. In questo modo una
maniera diversa da ogni Vendors… applicazione conosce come accedere allo storico
Nasce il problema della comunicazione fra delle versioni di un documento.
i diversi gestori dei contenuti prodotti dai
diversi vendors, magari presenti nella Esempio 2: il servizio di Query che permette ad un
stessa azienda adottati per rispondere a applicazione di cercare in un repository
problematiche differenti. compliant è un modello standardizzato e non
costituito da API proprietarie.
30/73
33. JSR-170
JSR-170: Content Repository API per tecnologia
JAVA: è una specifica Java Community Process (JCP)
strutturata su più livelli che definisce una serie di
interfacce per:
Accesso
Modifica
Interrogazione
Di un “Repository” contenente dati strutturati.
La JSR-170 può essere definita come il “JDBC”
dei Content Repositories
31/73
34. JSR-170
Level 1: Definisce l’accesso ai
contenuti in sola lettura e
l’interrogazione mediante
query XPath
La JSR-170 Level 1 è
destinata principalmente
alla scrittura di semplici
applicazioni CMS.
32/73
35. JSR-170
Level 2: Definisce l’accesso
ai dati in modalità
scrittura -lettura e le
funzionalità per l’integrità
referenziale dei dati.
33/73
36. JSR-170
Advanced Level: Definisce i
metodi per il versionamento
dei contenuti, la gestione
delle transazioni, le
funzionalità per interrogare il
repository utilizzando SQL e
le funzionalità per il locking
dei dati
34/73
37. JSR-170
L'utilizzo della JSR-170 API consente di scrivere
applicazioni di Enterprise Document Management in
maniera totalmente indipendente dal vendor.
Esistono sul mercato implementazioni 100% open source
di Content Repository Management JSR-170 Compliant
Esistono anche connectors per le piattaforme commerciali
più diffuse (SAP, Oracle, FileNet, ed altri)
Questo significa che se anche un sistema non è stato
progettato per supportare nativamente le specifiche JSR-
170 può disporre di un driver JSR-170 per comunicare con
i sistemi JSR-170 compliant (sul modello JDBC)
35/73
38. Apache Jackrabbit
È la reference implementation Open Source della
specifica JSR-170
Alle funzionalità JCR di 1° e 2° livello e Avanzate
aggiunge:
Integrazione con il motore di indicizzazione Full-Text
Lucene
Implementa Classi “Text Extractors” per
l’indicizzazione dei documenti nei formati di file più
comuni (PDF, MS Office, Open Office, XML, HTML)
Supporta ricerche full text con XPath o SQL
36/73
39. Estendere il Modello dei Contenuti
Alfresco permette di personalizzare e estendere il modello dei
contenti per soddisfare le diverse esigenze dell’Organizzazione
Il repository di Alfresco supporta un ricco Dizionario dei Dati in
cui vengono dichiarati i tipi di contenuti
Il Dizionario dei Dati di default è pre-popolato con le definizioni
che descrivono i contenuti con cui è inizialmente popolato il
repository (Cartelle, Documenti, Nomi)
Il Dizionario dei Dati di Alfresco è estendibile, consente all’utente
di dichiarare nuovi Tipi di Dati Personalizzati (Custom Content
Type) che soddisfano i bisogni dell’Organizzazione.
40/73
40. Modello dei Dati di Base
Il Content Model principale di Alfresco descrive come i dati sono
memorizzati nel Repository
E’ una collezione di Tipi di Contenuti, di Aspetti e di Associazioni.
Il file di configurazione del Modello dei Dati è:
ContentModel.xml
Questo file descrive il Content Domain Model di Alfresco:
I Tipi di dati Fondmentali e come questi dati vengono memorizzati nel Data Base
Relazionale sottostante (def. String, Date, Integer)
I Tipi di dati di alto livello (Cartelle, Contenuti, Persone)
Gli Aspetti di Default (Classificable, Versionable)
Le Proprietà (Metadati), specifici per ogni Tipo di Contenuto
Constraints. I vincoli che possono essere associati ad ogni tipo di proprietà
Associazioni, le relazioni che esistono fra i Tipi di Contenuto
Tomcat: <TOMCAT_HOME>/webapps/alfresco/WEB-INF/classes
41/73
41. I Blocchi Elementari: Tipi e Proprietà
Il Modello dei Dati di Alfresco può essere progettato partendo dai mattoni
primari che la piattaforma fornisce all’utente:
Tipo: il concetto di tipo è concettualmente simile al concetto di Classe
dei linguaggi Object Oriented (es. Persona, Content, Folder).
Il concetto di Tipo è usato per modellare i Business Object che hanno
proprietà personalizzate.
I Tipi ereditano le proprietà dai loro Padri.
Proprietà: sono pezzi di Metadati che appartengono ad un
determinato tipo (es. Nome_Persona, Telefono_Persona)
Tipi di Proprietà: sono i tipi di dato fondamentali, descrivono i tipi di
dati del Repository che saranno usati per memorizzare le proprietà
definite (es. strings, dates, floats, boolean).
Vincoli: i Constraints possono opzionalmente essere usati per
restringere il valore che Alfresco può memorizzare nelle proprietà. Ci
sono 4 tipi di vincoli di default disponibili dalla piattaforma: REGEX
(espressioni regolari), LIST, MINMAX e LENGTH. Anche i vincoli
possono essere estesi.
42/73
42. I Blocchi Elementari: Aspetti e Associazioni
Il Modello dei Dati di Alfresco supporta i concetti:
Aspetti: permettono di “incollare” delle Proprietà a Tipi di contenuto o
anche a singole istanze di Contenuto quando e dove abbiamo bisogno.
Associazioni: una associazione definisce relazioni fra Tipi.
Alfresco supporta due diversi tipi di Associazioni:
Peer Associations: definisce una relazione “alla Pari” fra due
oggetti nel repository, in cui nessuno dei due è subordinato
all’altro.
Child Association: definisce una relazione “Padre-Figlio” fra
due oggetti, ossia l’oggetto Target (Figlio) dell’associazione
potrebbe non esistere mentre l’oggetto Source (Padre) esiste
sicuramente (es. associazione fra il tipo “Folder” e il tipo
“Content” instaurata nel repository di Alfresco).3
43/73
43. Estendere il Modello
• Il primo passo da compiere nel processo di progettazione di una applicazione di
gestione dei contenuti personalizzata è quello di definire il Modello dei Dati che
soddisfa i requisiti di Business del Cliente
• Il modello dei dati può essere esteso editando 3 file di configurazione XML:
• QBR-Model-content.xml: permette di dichiarare alla piattaforma un
insieme di modelli di dati personalizzati che saranno resi disponibili
all’interno di Alfresco
• QBRModel.xml: permette di implementare il Content Model definito,
ossia dichiarare alla piattaforma Tipi, Aspetti, e Associazioni.
• Web-client-config-custom.xml: permette di dichiarare il modello creato
all’interfaccia utente di Alfresco: “Web Client”.
Tomcat: <TOMCAT_HOME>/shared/classes/alfresco/extension
44/73
44. Esempio: operare con gli Aspetti
Una organizzazione vuole gestire con l’ECM Alfresco:
I documenti interni al ciclo produttivo dell’azienda
I contenuti destinati ad essere pubblicati sul sito web
L’organizzazione vuole gestire tutti i documenti aziendali in
maniera unificata, ma vuole poter tracciare tutti i Documenti
prodotti per essere pubblicati sul sito Web Aziendale.
I Contenuti destinati ad essere pubblicati sul sito Web hanno
bisogno di essere etichettati con 3 proprietà:
isActive: indica se il Contenuto è pubblicabile;
Data Inizio: indica la data in cui il sistema potrà pubblicare il
contenuto sul sito Web
Data Fine: indica la data di “scadenza” del il contenuto
Queste informazioni sono “trasversali” al Documento
informativo proprio del contenuto, possono essere “incollate”
al Documento indipendentemente dal suo Tipo
45/73
45. Esempio: operare con gli Aspetti
Queste informazioni sono “trasversali” al Documento
Informativo proprio del Documento, possono essere “incollate”
indipendentemente dalla sua classe di appartenenza
La Soluzione al problema potrebbe essere:
Definire un nuovo Tipo (Classe) di Documento chiamato
1.
“DocumentoxWeb” che eredita dal Tipo “Documento”
Estendere il Tipo “Documento” con le 3 proprietà (isActive, Data
2.
Inizio, Data Fine)
Definire un nuovo Aspetto “Pubblicabile” dotato di 3 proprietà
3.
(isActive, Data Inizio, Data Fine)
Le soluzioni comportano:
Conoscere in fase di progettazione del modello esattamente quale
1.
sono i documenti destinati ad essere pubblicati sul web
Snaturare le proprietà informative del Documento aggiungendo 3
2.
campi
Gli Aspetti permettono una gestione trasversale delle proprietà
3.
Gli Aspetti permettono di implementare una ereditarietà multipla
4.
46/73
50. Esempio: Custom Template
Si vuole creare un Template di presentazione personalizzato che
permetta all’utente di Alfresco di visionare attraverso l’interfaccia
“Web Client”:
Proprietà: le proprietà (Metadati) con cui è stato esteso il Tipo:
Documento Offerta
Agente: nome dell’Agente che ha redatto una Offerta di Telefonia
Protocollo: numero di protocollo dell’offerta
Settore: offerta di Telefonia Fissa, Mobile o Convergente
Approvata: se l’offerta è stata accettata dal Cliente
Data Approvazione: Data di Approvazione dell’Offerta refatta
Associazioni: le 2 associazioni di tipo “Peer” definite fra il Tipo
“Documento Offerta” e i Tipi “LogoCliente” e “OffertaPDF”
Definito il Template (FreeMarker) per essere disponibile all’interno
della Piattaforma deve essere caricato nel Dizionario dei Dati di
Alfresco nella cartella “Presentation Template”
La funzionalità di “Prewiew in Template” fornita da Web Client
permette di “Vedere” una istanza del Type “Documento Offerta”
attraverso il template creato per osservare i metadati con cui
l’oggetto è stato esteso e i contenuti a lui associati (Logo e PDF).
51/73
52. Esempio: Custom Template
Type: Documento Offerta
Type: Logo_Cliente Metadati Offerta
Logo Acom SPA
Offerta PDF
Type: Offerta_PDF
Documento HTML
52/73
53. Comunicare con il Repository
Alfresco fornisce diversi approcci per accedere ai servizi
resi disponibili dalla piattaforma documentale:
Embed the Repository: il R. può essere incorporato
nell’applicazione, questo approccio garantisce il pieno
controllo delle funzionalità del R. attraverso l’utilizzo delle
API Alfresco Foundation
Web Service: supporto ai Web Service SOAP, ma questi
sono più pesanti dei loro cugini RESTful.
JCR API: permettono l’accesso al repository in aderenza allo
standard JSR-170 possono essere richiamate da remoto
attraverso le Remote Method Invocation (RMI) di Java.
URL Addressability: gli oggetti nel repository sono
indirizzabili attraverso l’URL, rappresenta il precursore dei
Web Script
Web Script Framework: motore per la registrazione e
l’esecuzione dei Web Script, pensati come un “pezzo di
codice” mappato da un URL facilmente leggibile dall’uomo e
dalle macchine
53/73
54. I Servizi Web RESTful
Un RESTful Web Service è un web service implementato usando HTTP
e identifcato da un:
URL: URI del Web Service
Tipo Mime: il tipo di dati che il web service ritorna (XML, JSON,
HTML)
Operazioni: set di operazioni supportate usando i metodi HTTP
(GET, POST, PUT, DELEDE)
Architettura client-server Stateless, dove ogni Risorsa è un Servizio
Web
Representation State Transfert: è un sistema per identificare e
descrivere una risorsa web attraverso un URL usando il protocollo
HTTP come canale di scambio delle informazioni
AZIONI SQL HTTP
Create Insert PUT
Read Select GET
Update Update POST
Delete Delete DELETE
54/73
55. I Servizi Web RESTful
I Benefici
Tempo di risposta migliore: basato su HTTP
Riduzione del carico del server: grazie al supporto
per la memorizzazione nella cache della
rappresentazione delle risorse
Incremento della scalabilità:perché non necessita
mantenere lo stato della sessione
Leggero sul lato Client: è necessario solo un Browser
per accedere alle risorse
55/73
56. Il Framework: Web Script
Applicazioni Content-Centric sono formate da molte
componenti
Un singolo sistema monolitico responsabile di tutti gli
aspetti della gestione dei contenuti è pesante
Più Sotto Sistemi debolmente connessi integrati per creare
soluzioni agili.
Questo approccio richiede che il CMS abbia una interfaccia
leggera e flessibile.
Il CMS è visto come un Componente che interagisce con il
Front-End attraverso servizi REST.
Si parla di Content-as-a-Service
Il Framework pensa il Web Script come un pezzo di codice
mappato da un URL
Il Web Script Framework è l’engine per la registrazione e
l’esecuzione dei Web Script
56/73
57. Cosa è un Web Script
E’ un Servizio LEGATO ad un URI che risponde ad un
Metodo HTTP (GET, POST, PUT, DELEDE).
Un Web Script permette di:
Costruire Web Service accessibili attraverso HTTP e
identificabile con un URI
Trasformare l’Alfresco Repository in un gestore di
contenuti come un Server HTTP
Accedere facilmente e gestire i Contenuti Cross-Link
attraverso API RESTful personalizzate
57/73
58. Alfresco fornisce due tipi di Web Script
Data Web Script: interfaccia del Repository
Ritorna dati strutturati:
XML
JSON
CVS
Presentation Web Script: interfaccia Utente
Ritorna codice HTML
Può utilizzare Data web Script
Supporta risposte di tipo:
HTML
Text
Atom
RSS
Portlet
58/73
59. Perché i Web Script ?
I Repository tradizionali hanno API di accesso
proprietarie complicate che rendono difficile la
condivisione dei documenti fra i diversi repository
I Repositori tradizionali sono accedibili tipicamente
tramite chiamate RPC (Remote Procedure Call) che
non facilitano l’accesso e la distribuzione uniforme
dei contenuti (JCR API)
Alfresco Web Script fornisce un accesso RESTful ai
contenuti nel repository che permette un semplice
accesso alle risorse (documenti) tramite l’URI e un
accesso uniforme alle risorse da parte di applicazioni
client (es. Browser), come sul Web.
59/73
60. Il Flusso di Esecuzione di un Web Script
Il Client- Web Script richiede un
URI
Autenticazione e esecuzione del
Web Script
Attraverso JavaScript si accede ad
una serie di servizi messi a
disposizione da Alfresco
(JavaScript API)
I Risultati sono resi attraverso un
Template FreeMarker (HTML,
JSON, XML)
Il Risultato dell’elaborazione
ritorna al Client usando lo stesso
protocollo della richiesta
Il Client Web-Script riceve la
risposta nel formato richiesto
60/73
61. Il Pattern MVC nei Web Script
Il Web Script Framework implementa il Pattern
MVC (Model View Controller):
Il Controller (opzionale): è implementato da
un componente Server Side JavaScript, un
Java Bean o da entrambi
La Vista: è implementata da uno o più
Template FreeMarker, responsabili della
costruzione della risposta al Client nel
formato specificato nella richiesta (HTML,
XML, RSS, JSON)
Il Modello: è rappresentato dalla Struttura
dei Dati a cui il Controller accede e invia alla
Vista.
61/73
62. I Componenti di un Web Script
Quale sono i componenti?
Il Descrittore: file XML che contiene l’URL del servizio,
informazioni sul metodo di autenticazione del client, gli
argomenti che lo script accetta, e il formato della
risposta
La Logica JavaScript: esegue la logica di business,
popola il modello con i dati
Il Template FreeMarker: per mappare il formato della
risposta usa una convenzione nel nome (es.
nome.html.ftl indica un tipo di risposta HTML)
Il Template ha accesso a tutti gli Argomenti della
richiesta, agli oggetti costruiti dal controller e al
repository.
Dove fare il Deploy
Nella Cartella “Data Dictionary”
Nel Classpath in
“**/alfresco/extension/templates/webscripts”
62/73
63. Configurare un Web Script
Il Metodo HTTP
I parametri di configurazione di un Web Script:
Il metodo HTTP usato per mandare la richiesta al
Web Script: per la convenzione sui nomi utilizzata, il
nome del file descrittore e il nome del template devono
contenere il metodo utilizzato (HTTP)
Questo approccio permette al Framework di mappare il
template e il descrittore con il metodo HTTP usato
fornendo la possibilità di definire più Web Script
differenziati in base ai metodi
GET: richiede una rappresentanza della risorsa, la
chiamata nondovrebbe avere effetti sul repository
POST: crea una nuova risoorsa nel repository
PUT: aggiorna una risorsa esistente nel repository
DELETE: Cancella una risorsa nel repository
63/73
64. Configurare un Web Script
L’URL e gli Argomenti
L’URL e gli Argomenti che il Web Script si aspetta
http[s]://<host>:<port>/[<contextPath>/]/<servicePath>
[/<scriptPath>][?<scriptArgs>]
Host: nome o indirizzo del server che ospita il Web Server
Port: porta sulla quale il Web Script è pubblicato sul server
ContexPath: path dole ‘applicazione è deploiata (Alfresco)
servicePath: path dove il WS è mappato (service)
scriptPath: path del Web Script definito nel file descrittore
scriptArgs: argomenti del WS definiti nel file descrittore
64/73
65. Configurare un Web Script
Il Formato della Risposta
Il Formato della risposta che il Web Script supporta
Il Framework usa la convenzione dei nomi per mappare
il Template da utilizzare in base al formato della
Risposta da inviare al Client
Es. create.post.html.ftl: il Framework capisce che
questo è il template che genera una risposta in formato
HTML
Grazie alla separazione permessa dal pattern MVC
possono essere implementate Viste diverse per la stessa
logica di business (controller)
Il Client può specificare il formato della risposta
desiderato attraverso l’URL (per default si assume HTTP)
es.1: …service/qr/helloword.xml?arg=1
Es.2: …service/qbr/helloword?arg=1&format=xml
65/73
66. Esempio Web Script API: il CRUD
Nome del URL Descrizione Formato
Web Script della
Risposta
Create /qbr/create Crea un nuovo HTML
Documento nel
Repository
Update /qbr/update Aggiorna un HTML
Documento nel
Repository
Delete /qbr/delete Cancella un HTML
elemento dal
Repository
Read /qbr/read Ritorna la lista HTML
dei documenti
contenuti in un
determinato
Folder
66/73
67. Esempio CRUD: il metodo Read
Il Descrittore: read.get.desc.xml
<webscript>
<shortname>Lista Contenuti</shortname>
<description>Ritorna l'elenco dei contenuti in un Folder</description>
<url>/qbr/read/{path}</url>
<format default=quot;htmlquot;>argument</format>
<authentication>guest</authentication>
<transaction>none</transaction>
</webscript>
67/73
68. Esempio CRUD: il metodo Read
Il Controller: read.get.js
URL: http://localhost:8080/alfresco/service/qbr/read/{path}
// Lista della Cartella dal Path
var folder = roothome.childByNamePath(url.extension);
if (folder == undefined || !folder.isContainer)
{
status.code = 404;
status.message = quot;Folder quot; + url.extension + quot; not
found.quot;;
status.redirect = true;
}
model.folder = folder;
68/73
69. Esempio CRUD: il metodo Read
Il Template: read.get.html.ftl
<div class=quot;textHeaderquot;><b>Directory: </b>${folder.displayPath}/${folder.name}</div>
<br>
<table border=quot;0quot;>
<#if folder.parent.parent?exists>
<tr>
<td><td><a href=quot;${url.serviceContext}/sample/folder<@encodepath node=folder.parent/>quot;>..</a>
</tr>
</#if>
<#list folder.children as child>
<tr>
<#if child.isContainer>
<td><img src=quot;${url.context}/images/icons/project-icon-doclibrary.gifquot; height=quot;15quot; ><td><a
href=quot;${url.serviceContext}/sample/folder<@encodepath node=child/>quot;>${child.name}</a>
<#else>
<td><td>
<a href=quot;${url.serviceContext}/api/node/content/${child.nodeRef.storeRef.protocol}/${child.nodeRef.storeRef.identifier}/$
{child.nodeRef.id}/${child.name?url}quot;>${child.name}</a>
</#if>
</tr>
</#list>
</table>
69/73
70. Esempio CRUD: il metodo Read
…/qbr/MyApplicazione/leggiFolder.html …/qbr/read/Company Home/Esempio/?path=&submit=ok
70/73
71. Il Modello Relazionale dei Dati
ALF_QNAME
ID BIGINT(20)
VERSIN BIGINT(20)
Gestione
NS_ID BIGINT(20)
LOCAL_NAME VARCHAR(200)
degli Attributi
Associazioni
Padre-Figlio
Associazioni
Peer
71/73
72. Parallelismo fra Modello Relazionale - Documentale
Funzionalità Relazionale Documentale
JSR-170
Entità Fondamentale Tabella (Tupla) Documento
Gestione di Associazioni Si Si
tra entità Peer
Contenuto Strutturato La Tabella è un contenuto Il Documento è un
strutturato (I Campi) Contenuto Strutturato (le
Proprietà)
Supporto nativo alle Non lo supporta Si
Gerarchie nativamente, deve essere
implementato
Supporto nativo al No, il versioning di un Si
Versioning campo di una tabella deve
essere progettato e
implementato
opportunamente
Supporto nativo al Si, supporta il Lock delle Si
Check-in/out Tabelle ma di breve durata
Supporto nativo Si, ma solo alcuni DBMS e Si
all’indicizzazione Full- non nativamente su tutte le
Text tabelle del DB
72/73
73. Vantaggi-Svantaggi Modello Documentale
1. Il gestore documentale offre all’utente il
supporto nativo per costruire nuove strutture
documentali Custom Content Types, Versioning,
Check-in/out, ricerca Full-Text,
Categorizzazione dei Contenuti, Associazioni fra
i Contentuti.
3. In un contesto non Content-
Centric il modello Documentale
diventa molto lento e pesante.
2. Se il Sistema da progettare fa uso massivo di join
(Report) allora il modello Documentale JSR-170
mostra i problemi di Performance
73/73