Il CMS Alfresco

75
La Piattaforma Alfresco Università del Salento | Dicembre 2008 www.alfresco.com

description

Presentazione generale della piattaforma e introduzione al Custom Content e Web Script

Transcript of Il CMS Alfresco

Page 1: Il CMS Alfresco

La Piattaforma Alfresco

Università del Salento | Dicembre 2008

www.alfresco.com

Page 2: Il CMS Alfresco

IndicePresentazione Generale della Piattaforma

Document ManagementRecord ManagementWeb Content Management

L’ArchitetturaI Componenti Open SourceI Protocolli e gli Standard Supportati

Standard JSR-170Estendere il Modello dei Contenuti

Custom Content ModelEsempi

Comunicare con il RepositoryWeb ScriptEsempi

Il Modello Relazionale Dei DatiConclusioni

Page 3: Il CMS Alfresco

Cosa è Alfresco

Piattaforma di Enterprise Content Management Open SourceE’ estendibile

Modello dei Dati:Custom Content ModelServizi: Web Script, Web Service

Licenza GPL (General Public License)Il Modello Open Source consente di utilizzare i piùrecenti contributi della comunità:

HibernateOpen OfficeLucene

1/73

Page 4: Il CMS Alfresco

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 AuthoringWeb Content Management (WCM): Creazione e Gestione di contenuti destinati ad essere fluiti attraverso il WebRecords 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

Page 5: Il CMS Alfresco

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

Page 6: Il CMS Alfresco

L’Obiettivo

Fornire una soluzione Open Source di ECM Superare soluzioni commerciali:

Documentum®Microsoft® SharePoint®

In Termini diCaratteristicheFunzionalitàVantaggi per gli utenti

4/73

Page 7: Il CMS Alfresco

La StoriaGennaio 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

Page 8: Il CMS Alfresco

I Vantaggi

E’ una soluzione Open Source (GPL)Utilizza Standard Aperti:

E’ basato sul JSR-170Si arricchisce frequentemente dei contributi della ComunitàOffre soluzioni innovative anche rispetto alle soluzioni commerciali

6/73

Page 9: Il CMS Alfresco

I Clienti nel Mondo

7/73

Government

UK MOD

Financial Services

Page 10: Il CMS Alfresco

8/73

I Clienti nel MondoProfessional Services

Manufacturing

Publishing & Media

Education & NFP

Page 11: Il CMS Alfresco

I Partner Tecnologici

JBoss - www.jboss.comLifeRay - www.liferay.comMySQL - www.mysql.comNovell - www.novell.comSugarCRM - www.sugarcrm.com

9/73

Page 12: Il CMS Alfresco

ContentRepository

Image Management

DocumentManagement

RecordsManagement

Web ContentManagement

La Piattaforma ALFRESCO

10/73

Page 13: Il CMS Alfresco

Il Gestore Documentale

11/73

Il Modulo permette di gestire il flusso documentale dell’Organizzazione attraverso politiche Centralizzate e Personalizzabili

Processi Documentali unificatiDigitalizzazione dei DocumentiCheck in/outVersioningConvesioni tra formatiProfilazione utenti e gruppiRicerca Full-TextWorkflow documentale

Page 14: Il CMS Alfresco

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 documentaleScalabilità: rispetto ai contenuti e agli utenti Personalizzare la UI:Web Client personalizzabile

12/73

I Bisogni dell’Utente

Page 15: Il CMS Alfresco

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

Page 16: Il CMS Alfresco

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 Autoringche 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 reteCIFS è usato soprattutto nei sistemi WindowsSamba è una implementazione free di CIFS per sistemi Linux

Page 17: Il CMS Alfresco

Il Gestore DocumentaleIntegrazione con Microsoft Office e Open Office

15/73

Funzionalità offerte:Editing dei documentimulti-utenteRicerca Full-Text deidocumentiCreazione di nuovidocumentiAccesso alle versionistoricizzate deidocumentiArchiviazione nelrepositoryModifica dei documenti

Page 18: Il CMS Alfresco

Il Gestore DocumentaleSicurezza e Autenticazione

16/73

Gestione dell’Autorizzazione e Autenticazionedegli Utenti (Login, Ruoli, Permessi)Gestione di Gruppi, Sotto-gruppi e UtentiAutenticazione eseguita negli Entry Point:

CIFSFTPWebDAVWeb Service

Supporto all’Integrazione con sistemi esterni:NTLM (Windows NT LAN Manager)LDAP (Lightweight Directory Access Protocol)Active DirectorySingle Sign-on CAS (Central Authentication Service)

Page 19: Il CMS Alfresco

Il Gestore Documentale

17/73

Autorizzazione

Controllo CompletoCoordinator

Editor + ContributorCollaborator

Consumer + può aggiungere nuovi contenuti.

Contributor

Consumer + può editare Cartelle e Contenuti esistenti.

Editor

Può leggere Cartelle e contenuti.

Consumer

PermessiRuoli

Alfresco permette diassegnare dei Ruoli ad Utentie/o a Gruppi su un determinato Spazio e/oContenutoI Ruoli sono collezioni dipermessi assegnati ad Utentie/o a Gruppi e Sottogruppi in uno SpazioAlfresco supporta una serie diruoli PredefinitiI Sotto-Spazi ereditano le autorizzazioni dalla spazioPadre

Page 20: Il CMS Alfresco

18/73

Modalità di Accesso alla Piattaforma

Shared DriveCIFS

Library

Service

Workflow

EngineRicerca

Full-text

File

Store

Web Folder

FTP Client

Email

Customized Web Client

DB Relazion

aleFile

System

ALFRESCO

WebDav

FTP

SMTP

Metadati

Contenuti

Thick Client

Web BrowserHTTP/S

Port

e di Acc

esso

Porte di Accesso

Page 21: Il CMS Alfresco

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 è

Page 22: Il CMS Alfresco

Records Management (RD)

Sistema di Approvazione nei Records Management tradizionali troppo difficile da usare per gli utentiInformazioni incoerenti fra i diversi Sistemi Documentali (RM) presenti in una OrganizzazioneScarsa tempestività del trasferimento dei documenti da un sistema ad un’altroAumento dei costi per la gestione di molteplici Archivi

Limiti dei Records Management Tradizionali

20/73

Page 23: Il CMS Alfresco

Records Management (RD)

Progettato per supportare lo standard US Department ofDefense 5015.2 sulla gestione delle RegistrazioniEstrazione automatica e classificazione dei Metadati di un documentoConversione 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, Alfrescosupporta 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

Page 24: Il CMS Alfresco

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-organizzazioneI tipi di contenuti gestiti includono:

TestoHTMLXMLImmaginiContenuti 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

Page 25: Il CMS Alfresco

Web Content Management (WCM)

L’utente non tecnico può usufruire di Tool di Autoring integrati nella piattaforma per creare facilmente i contenuti:

XMLHTMLTesto

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 webAlfresco WCM incorpora il motore di ricerca testuale (Lucene) che permette la ricerca attraverso i campi metadati caratterizzanti un contenuto WebAlfresco 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 MultilinguaAlfresco WCM supporta la gestione di Siti Multipli

Le Funzionalità

23/73

Page 26: Il CMS Alfresco

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 aggiornamentiPreview: 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 / OSAlfresco

WCMData Structures

Application FrameworkDelivery

Page 27: Il CMS Alfresco

WCMArchitettura

25/73

Web Client

DB Relazionale LDAP

ALFRESCOShared Drive

CIFS

Metadati

Utenti e Gruppi

Web Team

HTTP/S

XML

CSS

PDF

PNG

WWWAlfresco

File Deployer

WWWAlfresco

File Deployer

JSP

Marketing

Team

XSD(Schema)

XSLT

FreeMarker HTMLValidazione

Page 28: Il CMS Alfresco

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

ActionsAuditing Web

FormSMTP

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

Page 29: Il CMS Alfresco

I Componenti Open Source

27/73

Workflow AvanzatiJBoss jBPM

Java 1.5

Aspect-Oriented FrameworkSpring 1.2

PDFBox – Open Source Java PDF Library

PortalJBoss Portal 2.0

Application ServerJBoss App Server 4.0

Implementazione delle specifiche JavaServer Faces (JSF) di Sun

MyFaces JSF Implementation

Funzionalità implementata in Alfresco

Componenti Open Source

Page 30: Il CMS Alfresco

I Componenti Open Source

28/73

Text Search EngineApache Lucene

Persistenza del DatabaseHibernate

Conversione di file di ImmaginiImageMagick

Java API per l’estrazione di Metadati da file di Microsoft Office

Apache POI

Trasformazione di XSL:FO in PDFApache FOP

Conversione di documenti office in PDF OpenOffice 2.0

Web ServiceApache Axis

Scheduling di processi asincroni.OpenSymphony Quartz

JavaScript engineMozilla Rhino JavaScript Engine

Presentation per il Framework Web Script, Views

FreeMarker

Funzionalità implementata in Alfresco

Componenti Open Source

Page 31: Il CMS Alfresco

Standards e Protocolli Supportati

29/73

LDAP Directory o Microsoft Active Directory server

LDAP

RESTful API

Il Contenuto può essere caricato nel repository via FTP

FTP

Alfresco Web Services usa SOAP-basedweb Services

SOAP

JSR-168-Java Portlet Integration

Alfresco è un JCR-compliant repositoryJSR-170-Java ContentRepository API

Permette al repository di essere montato come un disco condiviso

CIFS

Permette di leggere e scrivere via HTTP sul repository

WebDAV

NoteStandard/Protocolli

Page 32: Il CMS Alfresco

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..

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 repositorycompliant è un modello standardizzato e non costituito da API proprietarie.

JSR-170 è la Risposta

Page 33: Il CMS Alfresco

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:

AccessoModifica Interrogazione

Di un “Repository” contenente dati strutturati.

La JSR-170 può essere definita come il “JDBC”dei Content Repositories

31/73

Page 34: Il CMS Alfresco

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.

Page 35: Il CMS Alfresco

JSR-170Level 2: Definisce l’accesso

ai dati in modalitàscrittura -lettura e le funzionalità per l’integritàreferenziale dei dati.

33/73

Page 36: Il CMS Alfresco

JSR-170Advanced Level: Definisce i

metodi per il versionamentodei contenuti, la gestione delle transazioni, le funzionalità per interrogare il repository utilizzando SQL e le funzionalità per il lockingdei dati

34/73

Page 37: Il CMS Alfresco

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 CompliantEsistono 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

Page 38: Il CMS Alfresco

Apache Jackrabbit

È la reference implementation Open Source della specifica JSR-170Alle funzionalità JCR di 1° e 2° livello e Avanzate aggiunge:

Integrazione con il motore di indicizzazione Full-Text LuceneImplementa 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

Page 39: Il CMS Alfresco

Estendere il Modello dei Contenuti

Alfresco permette di personalizzare e estendere il modello dei contenti per soddisfare le diverse esigenze dell’OrganizzazioneIl 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 ContentType) che soddisfano i bisogni dell’Organizzazione.

40/73

Page 40: Il CMS Alfresco

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 RepositoryE’ una collezione di Tipi di Contenuti, di Aspetti e di Associazioni. Il file di configurazione del Modello dei Dati è:

ContentModel.xmlQuesto 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 ContenutoConstraints. I vincoli che possono essere associati ad ogni tipo di proprietàAssociazioni, le relazioni che esistono fra i Tipi di Contenuto

Page 41: Il CMS Alfresco

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

Page 42: Il CMS Alfresco

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

Page 43: Il CMS Alfresco

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”.

Page 44: Il CMS Alfresco

Esempio: operare con gli Aspetti

Una organizzazione vuole gestire con l’ECM Alfresco:I documenti interni al ciclo produttivo dell’aziendaI 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 WebData 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

Page 45: Il CMS Alfresco

Esempio: operare con gli AspettiQueste informazioni sono “trasversali” al Documento Informativo proprio del Documento, possono essere “incollate”indipendentemente dalla sua classe di appartenenzaLa 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 web2. Snaturare le proprietà informative del Documento aggiungendo 3

campi3. Gli Aspetti permettono una gestione trasversale delle proprietà4. Gli Aspetti permettono di implementare una ereditarietà multipla

46/73

Page 46: Il CMS Alfresco

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

ciazione

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

Page 47: Il CMS Alfresco

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: Pu

bblicab

ile

Page 48: Il CMS Alfresco

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

Page 49: Il CMS Alfresco

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

Page 50: Il CMS Alfresco

Esempio: Custom TemplateSi 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 TelefoniaProtocollo: numero di protocollo dell’offertaSettore: offerta di Telefonia Fissa, Mobile o ConvergenteApprovata: se l’offerta è stata accettata dal ClienteData 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

Page 51: Il CMS Alfresco

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

Page 52: Il CMS Alfresco

Esempio: Custom Template

52/73

Logo Acom SPA

Documento HTML

Offerta PDF

Metadati OffertaType: Logo_Cliente

Type: Documento Offerta

Type: Offerta_PDF

Page 53: Il CMS Alfresco

Comunicare con il RepositoryAlfresco 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 FoundationWeb 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 ScriptWeb 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

Page 54: Il CMS Alfresco

I Servizi Web RESTfulUn RESTful Web Service è un web service implementato usando HTTP e identifcato da un:

URL: URI del Web ServiceTipo 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 WebRepresentation 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

DELETEDeleteDelete

POSTUpdateUpdate

GETSelectRead

PUTInsertCreate

HTTPSQLAZIONI

Page 55: Il CMS Alfresco

I Servizi Web RESTful

Tempo di risposta migliore: basato su HTTPRiduzione del carico del server: grazie al supporto per la memorizzazione nella cache della rappresentazione delle risorseIncremento della scalabilità:perché non necessita mantenere lo stato della sessioneLeggero sul lato Client: è necessario solo un Browser per accedere alle risorse

I Benefici

55/73

Page 56: Il CMS Alfresco

Il Framework: Web Script

Applicazioni Content-Centric sono formate da molte componentiUn singolo sistema monolitico responsabile di tutti gli aspetti della gestione dei contenuti è pesantePiù 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-ServiceIl Framework pensa il Web Script come un pezzo di codice mappato da un URLIl Web Script Framework è l’engine per la registrazione e l’esecuzione dei Web Script

56/73

Page 57: Il CMS Alfresco

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 URITrasformare l’Alfresco Repository in un gestore di contenuti come un Server HTTPAccedere facilmente e gestire i Contenuti Cross-Link attraverso API RESTful personalizzate

57/73

Page 58: Il CMS Alfresco

Alfresco fornisce due tipi di Web Script

Data Web Script: interfaccia del RepositoryRitorna dati strutturati:

XML JSONCVS

Presentation Web Script: interfaccia Utente Ritorna codice HTMLPuò utilizzare Data web Script Supporta risposte di tipo:

HTMLTextAtomRSSPortlet

58/73

Page 59: Il CMS Alfresco

Perché i Web Script ?

I Repository tradizionali hanno API di accesso proprietarie complicate che rendono difficile la condivisione dei documenti fra i diversi repositoryI 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

Page 60: Il CMS Alfresco

Il Flusso di Esecuzione di un Web Script

Il Client- Web Script richiede un URIAutenticazione e esecuzione del Web ScriptAttraverso 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 richiestaIl Client Web-Script riceve la risposta nel formato richiesto

60/73

Page 61: Il CMS Alfresco

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 entrambiLa 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

Page 62: Il CMS Alfresco

I Componenti di un Web ScriptQuale 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 rispostaLa Logica JavaScript: esegue la logica di business, popola il modello con i datiIl 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 DeployNella Cartella “Data Dictionary”Nel Classpath in “**/alfresco/extension/templates/webscripts”

62/73

Page 63: Il CMS Alfresco

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 repositoryPOST: crea una nuova risoorsa nel repositoryPUT: aggiorna una risorsa esistente nel repositoryDELETE: Cancella una risorsa nel repository

Il Metodo HTTP

Page 64: Il CMS Alfresco

Configurare un Web Script

64/73

L’URL e gli Argomenti che il Web Script si aspettahttp[s]://<host>:<port>/[<contextPath>/]/<servicePath>[/<scriptPath>][?<scriptArgs>]Host: nome o indirizzo del server che ospita il Web ServerPort: porta sulla quale il Web Script è pubblicato sul serverContexPath: path dole ‘applicazione è deploiata (Alfresco)servicePath: path dove il WS è mappato (service)scriptPath: path del Web Script definito nel file descrittorescriptArgs: argomenti del WS definiti nel file descrittore

L’URL e gli Argomenti

Page 65: Il CMS Alfresco

Configurare un Web Script

65/73

Il Formato della risposta che il Web Script supportaIl Framework usa la convenzione dei nomi per mappare il Template da utilizzare in base al formato della Risposta da inviare al ClientEs. create.post.html.ftl: il Framework capisce che questo è il template che genera una risposta in formato HTMLGrazie 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=1Es.2: …service/qbr/helloword?arg=1&format=xml

Il Formato della Risposta

Page 66: Il CMS Alfresco

Esempio Web Script API: il CRUD

66/73

HTMLRitorna la lista dei documenti contenuti in un determinato Folder

/qbr/readRead

HTMLCancella un elemento dal Repository

/qbr/deleteDelete

Formato della

Risposta

DescrizioneURLNome del Web Script

HTMLAggiorna un Documento nel Repository

/qbr/updateUpdate

HTMLCrea un nuovo Documento nel Repository

/qbr/createCreate

Page 67: Il CMS Alfresco

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>

Page 68: Il CMS Alfresco

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}

Page 69: Il CMS Alfresco

Esempio CRUD: il metodo Read

69/73

Il Template: read.get.html.ftl

<div class="textHeader"><b>Directory:&nbsp;</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>

Page 70: Il CMS Alfresco

Esempio CRUD: il metodo Read

70/73

…/qbr/MyApplicazione/leggiFolder.html …/qbr/read/Company Home/Esempio/?path=&submit=ok

Page 71: Il CMS Alfresco

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

Page 72: Il CMS Alfresco

Parallelismo fra Modello Relazionale - Documentale

72/73

SiSi, ma solo alcuni DBMS e non nativamente su tutte le

tabelle del DB

Supporto nativo all’indicizzazione Full-

Text

SiSi, supporta il Lock delle Tabelle ma di breve durata

Supporto nativo al Check-in/out

SiNo, il versioning di un campo di una tabella deve

essere progettato e implementato

opportunamente

Supporto nativo al Versioning

SiNon lo supporta nativamente, deve essere

implementato

Supporto nativo alle Gerarchie

Il Documento è un Contenuto Strutturato (le

Proprietà)

La Tabella è un contenuto strutturato (I Campi)

Contenuto Strutturato

SiSiGestione di Associazioni tra entità Peer

DocumentoTabella (Tupla)Entità Fondamentale

DocumentaleJSR-170

RelazionaleFunzionalità

Page 73: Il CMS Alfresco

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.

Page 74: Il CMS Alfresco

Bibliografia

http://wiki.alfresco.com/wiki/Main_Pagehttp://www.optaros.comhttp://www.optaros.comhttp://ecmarchitect.com/http://ecmarchitect.com/

Page 75: Il CMS Alfresco

Contatti

Ing. Mirco LeoQBR [email protected] web site: http://www.qbrgroup.it

Grazie per l’Attenzione!