Post on 15-Dec-2014
description
La Piattaforma Alfresco
QBR | Luglio 2009
www.alfresco.com
Argomenti Trattati Presentazione Generale della Piattaforma – 1° PARTE
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 – 2 ° PARTE
Custom Content Model Esempi
Comunicare con il Repository Web Script Esempi
Il Modello Relazionale Dei Dati Il Workflow – 3° PARTE
Il Simple Workflow Il Workflow Avanzato
Alfresco Share Le API di Alfresco
API RAAR Conclusioni
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
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
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
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
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
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
I Clienti nel Mondo
7/73
Government
UK MOD
Financial Services
8/73
I Clienti nel MondoProfessional Services
Manufacturing
Publishing & Media
Education & NFP
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
ContentRepository
Image Management
DocumentManagement
RecordsManagement
Web ContentManagement
La Piattaforma ALFRESCO
10/73
Il Gestore Documentale
11/73
Il Modulo permette di gestire il flusso documentale dell’Organizzazione attraverso politiche Centralizzate e Personalizzabili
Processi Documentali unificati Digitalizzazione dei Documenti Gerarchie Tassonomie multiple Check in/out Versioning Convesioni tra formati Profilazione utenti e gruppi Ricerca Full-Text Workflow documentale
Il Gestore Documentale
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
I Bisogni dell’Utente
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
Il Gestore Documentale
14/73
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
Il Gestore DocumentaleIntegrazione con Microsoft Office e Open Office
15/73
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
Il Gestore DocumentaleSicurezza e Autenticazione
16/73
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)
Il Gestore Documentale
17/73
Autorizzazione Ruoli PermessiConsumer Può leggere Cartelle e
contenuti.
Editor Consumer + può editare Cartelle e Contenuti esistenti.
Contributor Consumer + può aggiungere nuovi contenuti.
Collaborator
Editor + Contributor
Coordinator Controllo Completo
Alfresco permette di assegnare dei Ruoli ad Utenti e/o a Gruppi su un determinato Spazio e/o Contenuto
I Ruoli sono collezioni di permessi assegnati ad Utenti e/o a Gruppi e Sottogruppi in uno Spazio
Alfresco supporta una serie di ruoli Predefiniti
I Sotto-Spazi ereditano le autorizzazioni dalla spazio Padre
18/73
Modalità di Accesso alla Piattaforma
Shared DriveCIFS
Library
Service
Workflow
EngineRicerca
Full-text
File
Store
Web Folder
FTP Client
Customized Web Client
DB Relazion
aleFile
System
ALFRESCO
WebDav
FTP
SMTP
Metadati
Contenuti
Thick Client
Web BrowserHTTP/S
Port
e d
i A
ccess
o
Porte di Accesso
Records Management (RM)
19/73
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”.
Cosa è
Records Management (RD)
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
Limiti dei Records Management Tradizionali
20/73
Records Management (RD)
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
Alfresco Record Management
21/73
Web Content Management (WCM)
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
Cosa è
22/73
Web Content Management (WCM)
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
Le Funzionalità
23/73
Web Content Management (WCM)
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.
Workflow: permette di implementare attraverso jBPM engine un processo di business attraverso cui sottomettere il contenuto creato.
Deployment: processo che permette di pubblicare il contenuto nel live site
Funzionalità
24/73
Hardware / OS
Alfresco
WCM
Data Structures
Application Framework
Delivery
WCMArchitettura
25/73
Web Client
DB Relazionale LDAP
ALFRESCOShared Drive
CIFS
Metadati
Utenti e Gruppi
Web Team
HTTP/S
XML
CSS
PNG
WWW
AlfrescoFile Deployer
WWWAlfresco
File Deployer
JSP
Marketing
Team
XSD(Schema)
XSLT
FreeMarkerHTML
Validazione
26/73
L’ARCHITETTURA
CIFS
WebDAV
FTP
SMTPWeb Application
Foundation API
JCR API
JavaScript API
FreeMarker API
Web Service API
REST API
Web Client
JBoss
jBPM
Apache
Lucene
Quartz
Scheduler
Rules e
Actions
Auditing Web
Form
SMTP
Listener
Rhino
Javascript
API
Web Script
Framework
Extraction
Trasformation
Custom
Servlet Container
Macchina Fisica
DB RelazionaleLDAP
Open
Office
Image
Magick
Contenuto
Binario
Lucene
Index
File System
Storage
I Componenti Open Source
27/73
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
I Componenti Open Source
28/73
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
Standards e Protocolli Supportati
29/73
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 Repository API
Alfresco è un JCR-compliant repository
JSR-168-Java Portlet Integration
SOAP Alfresco Web Services usa SOAP-based web Services
RESTful API
LDAP LDAP Directory o Microsoft Active Directory server
Installare Alfresco
Installare a Java SE DEvelopment Kit (JDK) Installare RDBMS Mysql
(http://dev.mysql.com/downloads) Configurare Alfresco con il Database Installare l’Application Server Tomcat Installare le componenti secondarie (Open Office,
ImageMagick) Installare Alfresco Run di Alfresco
40/73
Installare Alfresco
Software Requirements
40/73
Installare Alfresco
40/73
Installare il DB
40/73
Scaricare RDBMS Mysql (http://dev.mysql.com/downloads) Installare MySql Verificare il corretto funzionamento Creare il DB Alfresco con account user e pass Alfresco In <alfresco>/extras/databases/mysql‘ Eseguire il commando: mysql -u root -p <db_setup.sql Scaricare MySQL Java Connector library
http://dev.mysql.com/downloads/connector/j/ Copiare il JAR file in <container>/common/lib or <container>/server/default/lib In tomcat/shared/classes/alfresco/extension modificare I file-
custom-repository.properties comment out the HSQL connection lines (using #) uncomment the MySQL connection lines and adjust as appropriate
custom-hibernate-dialect.properties comment out the HSQL line using # uncomment the MySQL line
Installare Alfresco su Tomcat 6
40/73
Il War Zip include i binari per ImageMagick e pdf2swf Copiare Alfresco.war in <TOMCAT_HOME>/webapps Creare <TOMCAT_HOME>/Shared/classes e copia la cartelal extension dal WAR Nel file <TOMCAT-HOME>/conf/catalina.properties sostituire shared.loader=$
{catalina.base}/shared/classes,${catalina.base}/shared/lib/*.jar Configurare le variabili d’ambiente:
JAVA_HOME JRE_HOME TOMCAT_HOME
copiare la cartella lib e endorsed e i18n all’interno del common di Tomcat
Aumentare la memoria della jvm se tomcat è installato come servizio b. se installato da file .sh o .bat allora seguenti parametri
-Xms128Mb -Xmx256M
Componenti di Alfresco
40/73
Alfresco WCM OpenOffice ImageMagick Microsoft Office Add-ins Flash Player SWFTools Integrazione con MediaWiki
Lanciare Alfresco
Windows C:\alfresco alf_start.bat Linux /opt/alfresco alfresco.sh Server statup in nnnn ms ok Browse:http://localhost:8080/alfresco.
40/73
FINE PRIMO GIORNO
40/73
Gestione Documentale
Il Problema
30/73
E’ necessario uno standard condiviso da tutti i Content repository per semplificare e uniformare la comunicazione con le applicazione esterne appartenenti al mondo Java.
Oggi quasi ogni applicazione di Gestione dei Contenuti usa il proprio “Content Repository“ che estende un livello di storage tipicamente un Database Relazionale aggiungendo i vari Servizi tipici di una applicazione Content-Centric (Versioning, Check-in/out)…Questo strato di servizio è implementato in maniera diversa da ogni Vendors…Nasce il problema della comunicazione fra i diversi gestori dei contenuti prodotti dai diversi vendors, magari presenti nella stessa azienda adottati per rispondere a problematiche differenti.
La Soluzione
Esempio 1: nella specifica è completamente definito il servizio Versioning. In questo modo una applicazione conosce come accedere allo storico delle versioni di un documento.
Esempio 2: il servizio di Query che permette ad un applicazione di cercare in un repository compliant è un modello standardizzato e non costituito da API proprietarie.
JSR-170 è la Risposta
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
JSR-170
Level 1: Definisce l’accesso ai contenuti in sola lettura e l’interrogazione mediante query XPath
32/73
La JSR-170 Level 1 èdestinata principalmentealla scrittura di sempliciapplicazioni CMS.
JSR-170
Level 2: Definisce l’accesso ai dati in modalità scrittura -lettura e le funzionalità per l’integrità referenziale dei dati.
33/73
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
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) Standars CIMS.
35/73
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
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
Modello dei Dati di Base
41/73
Tomcat: <TOMCAT_HOME>/webapps/alfresco/WEB-INF/classes
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
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
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
Estendere il Modello
44/73
Tomcat: <TOMCAT_HOME>/shared/classes/alfresco/extension
• 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”.
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
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:1. Definire un nuovo Tipo (Classe) di Documento chiamato
“DocumentoxWeb” che eredita dal Tipo “Documento”2. Estendere il Tipo “Documento” con le 3 proprietà (isActive, Data
Inizio, Data Fine)3. Definire un nuovo Aspetto “Pubblicabile” dotato di 3 proprietà
(isActive, Data Inizio, Data Fine) Le soluzioni comportano:
1. Conoscere in fase di progettazione del modello esattamente quale sono i documenti destinati ad essere pubblicati sul web
2. Snaturare le proprietà informative del Documento aggiungendo 3 campi
3. Gli Aspetti permettono una gestione trasversale delle proprietà4. Gli Aspetti permettono di implementare una ereditarietà multipla
46/73
Esempio: operare con gli Aspetti
47/73
+qbr: DataInizio: d: date
+qbr:DataFine: d: date
+qbr:isActive: d:boolean
<<aspect>>
qbr: Pubblicabile<<type>>
cm: content
+cm: content: d: content
Import
<<type>>
qbr: Documento
<<typet>>
qbr: Documento Offerta
URI: http://www.qbr.it/model/content/1.0
Prefisso: qbr
File: QBRModel.xml
Asso
ciazio
ne
Aspetto
<aspect name="qbr:Pubblicabile"> <title> Doc Pubblicabile</title> <properties> <property name="qbr:DataInizio"> <type>d:date</type> </property> <property name="qbr:DataFine"> <type>d:date</type> </property> <property name="qbr:isActive"> <type>d:boolean</type> <default>false</default> </property> </properties></aspect>
QBRModel.xml
Esempio:Operare con gli Aspetti
48/73
<aspect name="qbr:Pubblicabile"> <title> Documento Pubblicabile</title> <properties> <property name="qbr:DataInizio"> <type>d:date</type> </property> <property name="qbr:DataFine"> <type>d:date</type> </property> <property name="qbr:isActive"> <type>d:boolean</type> <default>false</default> </property> </properties></aspect>
QBRModel.xml
Typ
e: D
ocu
men
to
Type: Documento + Aspect: Pubblicabile
Asp
ect: P
ubblica
bile
Esempio: Estendere le Proprietà
49/73
+qbr: DataInizio: d: date
+qbr:DataFine: d: date
+qbr:isActive: d:boolean
<<aspect>>
qbr: Pubblicabile<<type>>
cm: content
+cm: content: d: content
Import
<<type>>
qbr: Documento
<<typet>>
qbr: Documento Offerta
+qbr: Agente: d: text
+qbr: Protocollo: d: text
+qbr: Settore: d: text
+qbr: Approvata: d:boolean
+qbr: DataApprovazione: d:date
<properties> <property name="qbr:Agente"> <title>Agente</title> <type>d:text</type> </property> <property name="qbr:Protocollo"> <title>Protocollo</title> <type>d:text</type> </property> <property name="qbr:Settore"> <title>Settore</title> <type>d:text</type> </property> <property name="qbr:Approvata"> <title>Approvata</title> <type>d:boolean</type> </property> <propertyname="qbr:DataApprovazione"> <title>DataApprovazione</title> <type>d:date</type> </property></properties>
QBRModel.xml
Type: Documento Offerta
Esempio: Definire le Associazioni
50/73
+qbr: DataInizio: d: date
+qbr:DataFine: d: date
+qbr:isActive: d:boolean
<<aspect>>
qbr: Pubblicabile<<type>>
cm: content
+cm: content: d: content
Import
<<type>>
qbr: Documento
<<type>>
qbr: Documento Offerta
<<type>>
qbr: LogoCliente
<<type>>
qbr: OffertaPDF
<associations> <association name="qbr:DocImm"> <title>Associazione Documento-Logo</title> <target> <class>qbr:LogoCliente</class> <mandatory>false</mandatory> <many>false</many> </target> </association> <association name="qbr:DocFiles"> <title>Associazione Documento-File</title> <target> <class>qbr:OffertaPDF</class> <mandatory>false</mandatory> <many>false</many> </target> </association></associations>
QBRModel.xml
Type: Documento Offerta
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
Esempio: Custom Template
51/73
Acom_OffertaMB.pdf
Logo_Acom.gif
Acom_OffertaMB.html
DocFastwebTemplate.ftl
Template
Associazione
Type: Documento Offerta
Type: Logo_Cliente
Type: Offerta_PDF
Presentation
Esempio: Custom Template
52/73
Logo Acom SPA
Documento HTML
Offerta PDF
Metadati OffertaType: Logo_Cliente
Type: Documento Offerta
Type: Offerta_PDF
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
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
54/73
AZIONI SQL HTTP
Create Insert PUT
Read Select GET
Update Update POST
Delete Delete DELETE
I Servizi Web RESTful
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
I Benefici
55/73
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
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
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
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
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
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
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
Configurare un Web Script
63/73
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
Il Metodo HTTP
Configurare un Web Script
64/73
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
L’URL e gli Argomenti
Configurare un Web Script
65/73
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
Il Formato della Risposta
Esempio Web Script API: il CRUD
66/73
Nome del Web Script
URL Descrizione Formato della
Risposta
Create /qbr/create Crea un nuovo Documento nel Repository
HTML
Update /qbr/update Aggiorna un Documento nel Repository
HTML
Delete /qbr/delete Cancella un elemento dal Repository
HTML
Read /qbr/read Ritorna la lista dei documenti contenuti in un determinato Folder
HTML
Esempio CRUD: il metodo Read
67/73
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="html">argument</format> <authentication>guest</authentication> <transaction>none</transaction></webscript>
Esempio CRUD: il metodo Read
68/73
Il Controller: read.get.js
// Lista della Cartella dal Pathvar folder = roothome.childByNamePath(url.extension);if (folder == undefined || !folder.isContainer){ status.code = 404; status.message = "Folder " + url.extension + " not found."; status.redirect = true; } model.folder = folder;
URL: http://localhost:8080/alfresco/service/qbr/read/{path}
Esempio CRUD: il metodo Read
69/73
Il Template: read.get.html.ftl
<div class="textHeader"><b>Directory: </b>${folder.displayPath}/${folder.name}</div> <br> <table border="0"> <#if folder.parent.parent?exists> <tr> <td><td><a href="${url.serviceContext}/sample/folder<@encodepath node=folder.parent/>">..</a> </tr> </#if><#list folder.children as child> <tr> <#if child.isContainer> <td><img src="${url.context}/images/icons/project-icon-doclibrary.gif" height="15" ><td><a href="${url.serviceContext}/sample/folder<@encodepath node=child/>">${child.name}</a> <#else> <td><td><a href="${url.serviceContext}/api/node/content/${child.nodeRef.storeRef.protocol}/${child.nodeRef.storeRef.identifier}/${child.nodeRef.id}/${child.name?url}">${child.name}</a> </#if> </tr></#list></table>
Esempio CRUD: il metodo Read
70/73
…/qbr/MyApplicazione/leggiFolder.html …/qbr/read/Company Home/Esempio/?path=&submit=ok
Il Modello Relazionale dei Dati
71/73
ID BIGINT(20)
VERSIN BIGINT(20)
NS_ID BIGINT(20)
LOCAL_NAME VARCHAR(200)
ALF_QNAME
Associazioni Padre-Figlio
Associazioni
Peer
Gestione degli Attributi
Parallelismo fra Modello Relazionale - Documentale
72/73
Funzionalità Relazionale DocumentaleJSR-170
Entità Fondamentale Tabella (Tupla) Documento
Gestione di Associazioni tra entità Peer
Si Si
Contenuto Strutturato La Tabella è un contenuto strutturato (I Campi)
Il Documento è un Contenuto Strutturato (le
Proprietà)
Supporto nativo alle Gerarchie
Non lo supporta nativamente, deve essere
implementato
Si
Supporto nativo al Versioning
No, il versioning di un campo di una tabella deve
essere progettato e implementato
opportunamente
Si
Supporto nativo al Check-in/out
Si, supporta il Lock delle Tabelle ma di breve durata
Si
Supporto nativo all’indicizzazione Full-
Text
Si, ma solo alcuni DBMS e non nativamente su tutte le
tabelle del DB
Si
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
Vantaggi-Svantaggi Modello Documentale
3. In un contesto non Content-Centric il modello Documentale diventa molto lento e pesante.
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.
4. Associa nativamente il file binario alla tabella.
Bibliografia
http://wiki.alfresco.com/wiki/Main_Page http://www.optaros.comhttp://www.optaros.com http://ecmarchitect.com/http://ecmarchitect.com/
Contatti
Ing. Mirco Leo
QBR ENG.
mirco.leo@qbreng.it
QBR web site: http://www.qbrgroup.it
Grazie per l’Attenzione!