SlideShare a Scribd company logo
1 of 75
Download to read offline
La Piattaforma Alfresco

    Università del Salento | Dicembre 2008




                    www.alfresco.com
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
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
                Government   Financial Services




       UK MOD




7/73
I Clienti nel Mondo
                             Professional Services
        Publishing & Media




                                Manufacturing
         Education & NFP




8/73
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
La Piattaforma ALFRESCO


               Image               Document
               Management          Management


                       Content
                      Repository


               Records              Web Content
               Management           Management




10/73
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
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
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
        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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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




        La JSR-170 Level 1 è
        destinata principalmente
        alla scrittura di semplici
        applicazioni CMS.




32/73
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)




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
         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
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
        • 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
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:
             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
Esempio: operare con gli Aspetti
                                               <<aspect>>             Import
                                            qbr: Pubblicabile
                                                                                <<type>>
                                          +qbr: DataInizio: d: date
                                                                               cm: content
                                          +qbr:DataFine: d: date
                                                                         +cm: content: d: content




                                                                                                    Associazione
                                          +qbr:isActive: d:boolean


  <aspect name=quot;qbr:Pubblicabilequot;>
   <title> Doc Pubblicabile</title>
   <properties>
     <property name=quot;qbr:DataInizioquot;>                                            <<type>>
        <type>d:date</type>
                                                                               qbr: Documento
    </property>
                                              Aspetto
    <property name=quot;qbr:DataFinequot;>
      <type>d:date</type>
    </property>
    <property name=quot;qbr:isActivequot;>                                               <<typet>>
     <type>d:boolean</type>
                                                                         qbr: Documento Offerta
     <default>false</default>
    </property>
                     QBRModel.xml
   </properties>
  </aspect>


                URI: http://www.qbr.it/model/content/1.0
                Prefisso: qbr
                File: QBRModel.xml
47/73
Esempio:Operare con gli Aspetti




                                                  Type: Documento
                                                                                           Type: Documento + Aspect: Pubblicabile




                                                                    Aspect: Pubblicabile
        <aspect name=quot;qbr:Pubblicabilequot;>
         <title> Documento Pubblicabile</title>
         <properties>
           <property name=quot;qbr:DataInizioquot;>
              <type>d:date</type>
          </property>
          <property name=quot;qbr:DataFinequot;>
            <type>d:date</type>
          </property>
          <property name=quot;qbr:isActivequot;>
           <type>d:boolean</type>
           <default>false</default>
          </property>
                            QBRModel.xml
         </properties>
        </aspect>

48/73
Esempio: Estendere le Proprietà
             <<aspect>>             Import
          qbr: Pubblicabile
                                                                        Type: Documento Offerta
                                              <<type>>
        +qbr: DataInizio: d: date
                                             cm: content
        +qbr:DataFine: d: date                                       <properties>
                                                                      <property name=quot;qbr:Agentequot;>
                                       +cm: content: d: content
        +qbr:isActive: d:boolean                                        <title>Agente</title>
                                                                        <type>d:text</type>
                                                                      </property>
                                                                      <property name=quot;qbr:Protocolloquot;>
                                                                         <title>Protocollo</title>
                                                                         <type>d:text</type>
                                                                       </property>
                                               <<type>>
                                                                       <property name=quot;qbr:Settorequot;>
                                             qbr: Documento             <title>Settore</title>
                                                                        <type>d:text</type>
                                                                       </property>
                                                                       <property name=quot;qbr:Approvataquot;>
                                                                        <title>Approvata</title>
                                                                        <type>d:boolean</type>
                                               <<typet>>               </property>
                                                                       <propertyname=quot;qbr:DataApprovazionequot;>
                                       qbr: Documento Offerta           <title>DataApprovazione</title>
                                                                        <type>d:date</type>
                                                                       </property>
                                    +qbr: Agente: d: text
                                                                     </properties>
                                    +qbr: Protocollo: d: text
                                                                                    QBRModel.xml
                                    +qbr: Settore: d: text
                                    +qbr: Approvata: d:boolean
                                    +qbr: DataApprovazione: d:date


49/73
Esempio: Definire le Associazioni
             <<aspect>>              Import
          qbr: Pubblicabile
                                               <<type>>
        +qbr: DataInizio: d: date
                                               cm: content
                                                                                    Type: Documento Offerta
        +qbr:DataFine: d: date
                                        +cm: content: d: content
        +qbr:isActive: d:boolean
                                                                               <associations>
                                                                                <association name=quot;qbr:DocImmquot;>
                                                                                  <title>Associazione Documento-Logo</title>
                                                                                  <target>
                                                                                    <class>qbr:LogoCliente</class>
                                                                                      <mandatory>false</mandatory>
                                                <<type>>                              <many>false</many>
                                                                                  </target>
                                              qbr: Documento                     </association>
                                                                                 <association name=quot;qbr:DocFilesquot;>
                                                                                  <title>Associazione Documento-File</title>
                                                                                  <target>
                                                                                    <class>qbr:OffertaPDF</class>
                                                                                    <mandatory>false</mandatory>
                                                 <<type>>
                                                                                   <many>false</many>
                                        qbr: Documento Offerta                    </target>
                                                                                </association>
                                                                               </associations>

                                                                                                 QBRModel.xml

                                 <<type>>                      <<type>>
                           qbr: LogoCliente                  qbr: OffertaPDF


50/73
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
                                                             Acom_OffertaMB.pdf
         Acom_OffertaMB.html




                                           Associazione




        Type: Documento Offerta
                                                          Type: Offerta_PDF


                         DocFastwebTemplate.ftl               Logo_Acom.gif

                          Template
                                                          Type: Logo_Cliente

             Presentation
51/73
Esempio: Custom Template
                                                   Type: Documento Offerta

                         Type: Logo_Cliente          Metadati Offerta
                         Logo Acom SPA




                                       Offerta PDF
                                              Type: Offerta_PDF



        Documento HTML

52/73
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

        AZIONI     SQL      HTTP


        Create     Insert   PUT
        Read       Select   GET
        Update     Update   POST


        Delete     Delete   DELETE



54/73
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
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
        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
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
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
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
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
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
Esempio CRUD: il metodo Read
        Il Template: read.get.html.ftl


    <div class=quot;textHeaderquot;><b>Directory:&nbsp;</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
Esempio CRUD: il metodo Read

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




70/73
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
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
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
Bibliografia

 http://wiki.alfresco.com/wiki/Main_Page
 http://www.optaros.com
 http://ecmarchitect.com/
Contatti


                          Grazie per l’Attenzione!


Ing. Mirco Leo
QBR ENG.
mirco.leo@qbreng.it
QBR web site: http://www.qbrgroup.it

More Related Content

What's hot

Cms, Content Management System. Sistema di gestione dei contenuti
Cms, Content Management System. Sistema di gestione dei contenutiCms, Content Management System. Sistema di gestione dei contenuti
Cms, Content Management System. Sistema di gestione dei contenutiGiulia S
 
Pregi e difetti dei principali CMS Open Source
Pregi e difetti dei principali CMS Open SourcePregi e difetti dei principali CMS Open Source
Pregi e difetti dei principali CMS Open Sourcenois3
 
Content Management: gestione dei contenuti
Content Management: gestione dei contenutiContent Management: gestione dei contenuti
Content Management: gestione dei contenutiEvolutionBook S.r.l.
 
Introduzione ai sistemi di Content Management System (CMS)
Introduzione ai sistemi di Content Management System (CMS)Introduzione ai sistemi di Content Management System (CMS)
Introduzione ai sistemi di Content Management System (CMS)Antonio Musarra
 
Hosting e la suddivisione delle risorse: le tecnologie #TipOfTheDay
Hosting e la suddivisione delle risorse: le tecnologie #TipOfTheDayHosting e la suddivisione delle risorse: le tecnologie #TipOfTheDay
Hosting e la suddivisione delle risorse: le tecnologie #TipOfTheDayAruba S.p.A.
 
Presentazione MomaPIX DAM
Presentazione MomaPIX DAMPresentazione MomaPIX DAM
Presentazione MomaPIX DAMMomaSoft srl
 
Content Management professionale con Python nel 2012
Content Management professionale con Python nel 2012Content Management professionale con Python nel 2012
Content Management professionale con Python nel 2012Maurizio Delmonte
 
Introduzione alla creazione di siti internet
Introduzione alla creazione di siti internetIntroduzione alla creazione di siti internet
Introduzione alla creazione di siti internetmaramazza
 
Hosting: cPanel vs Plesk, un confronto operativo tra i due pannelli #TipOfTheDay
Hosting: cPanel vs Plesk, un confronto operativo tra i due pannelli #TipOfTheDayHosting: cPanel vs Plesk, un confronto operativo tra i due pannelli #TipOfTheDay
Hosting: cPanel vs Plesk, un confronto operativo tra i due pannelli #TipOfTheDayAruba S.p.A.
 
Hosting e file HTACCESS, come funziona e come si modifica - #TipOfTheDay
Hosting e file HTACCESS, come funziona e come si modifica - #TipOfTheDayHosting e file HTACCESS, come funziona e come si modifica - #TipOfTheDay
Hosting e file HTACCESS, come funziona e come si modifica - #TipOfTheDayAruba S.p.A.
 
Reingegnerizzazione di un Content Management System verso l'accessibilità sec...
Reingegnerizzazione di un Content Management System verso l'accessibilità sec...Reingegnerizzazione di un Content Management System verso l'accessibilità sec...
Reingegnerizzazione di un Content Management System verso l'accessibilità sec...Francesco Trucchia
 

What's hot (14)

Cms, Content Management System. Sistema di gestione dei contenuti
Cms, Content Management System. Sistema di gestione dei contenutiCms, Content Management System. Sistema di gestione dei contenuti
Cms, Content Management System. Sistema di gestione dei contenuti
 
Pregi e difetti dei principali CMS Open Source
Pregi e difetti dei principali CMS Open SourcePregi e difetti dei principali CMS Open Source
Pregi e difetti dei principali CMS Open Source
 
Content Management: gestione dei contenuti
Content Management: gestione dei contenutiContent Management: gestione dei contenuti
Content Management: gestione dei contenuti
 
Cms
CmsCms
Cms
 
Introduzione ai sistemi di Content Management System (CMS)
Introduzione ai sistemi di Content Management System (CMS)Introduzione ai sistemi di Content Management System (CMS)
Introduzione ai sistemi di Content Management System (CMS)
 
Hosting e la suddivisione delle risorse: le tecnologie #TipOfTheDay
Hosting e la suddivisione delle risorse: le tecnologie #TipOfTheDayHosting e la suddivisione delle risorse: le tecnologie #TipOfTheDay
Hosting e la suddivisione delle risorse: le tecnologie #TipOfTheDay
 
Presentazione MomaPIX DAM
Presentazione MomaPIX DAMPresentazione MomaPIX DAM
Presentazione MomaPIX DAM
 
Content Management professionale con Python nel 2012
Content Management professionale con Python nel 2012Content Management professionale con Python nel 2012
Content Management professionale con Python nel 2012
 
Introduzione alla creazione di siti internet
Introduzione alla creazione di siti internetIntroduzione alla creazione di siti internet
Introduzione alla creazione di siti internet
 
Hosting: cPanel vs Plesk, un confronto operativo tra i due pannelli #TipOfTheDay
Hosting: cPanel vs Plesk, un confronto operativo tra i due pannelli #TipOfTheDayHosting: cPanel vs Plesk, un confronto operativo tra i due pannelli #TipOfTheDay
Hosting: cPanel vs Plesk, un confronto operativo tra i due pannelli #TipOfTheDay
 
Slide cms
Slide cmsSlide cms
Slide cms
 
Hosting e file HTACCESS, come funziona e come si modifica - #TipOfTheDay
Hosting e file HTACCESS, come funziona e come si modifica - #TipOfTheDayHosting e file HTACCESS, come funziona e come si modifica - #TipOfTheDay
Hosting e file HTACCESS, come funziona e come si modifica - #TipOfTheDay
 
Reingegnerizzazione di un Content Management System verso l'accessibilità sec...
Reingegnerizzazione di un Content Management System verso l'accessibilità sec...Reingegnerizzazione di un Content Management System verso l'accessibilità sec...
Reingegnerizzazione di un Content Management System verso l'accessibilità sec...
 
Quickr8 Evoluzione Di Quick Place
Quickr8 Evoluzione Di Quick PlaceQuickr8 Evoluzione Di Quick Place
Quickr8 Evoluzione Di Quick Place
 

Similar to Il CMS Alfresco

Formazione on line (e-learning) e conferenze via web
Formazione on line (e-learning) e conferenze via webFormazione on line (e-learning) e conferenze via web
Formazione on line (e-learning) e conferenze via webEvolutionBook S.r.l.
 
Webdays 2004 Blogfordummies2 Ok
Webdays 2004 Blogfordummies2 OkWebdays 2004 Blogfordummies2 Ok
Webdays 2004 Blogfordummies2 OkMassimo Schiro
 
Architetture a Microservizi con Docker Container
Architetture a Microservizi con Docker ContainerArchitetture a Microservizi con Docker Container
Architetture a Microservizi con Docker ContainerRoberto Messora
 
Linux Nelle Aziende Installfest2007
Linux Nelle Aziende Installfest2007Linux Nelle Aziende Installfest2007
Linux Nelle Aziende Installfest2007jekil
 
Presentazione X Manager
Presentazione X ManagerPresentazione X Manager
Presentazione X Managerdani_ele
 
Un ILS open source per l'automazione delle biblioteche. L'ipotesi Koha a Ca' ...
Un ILS open source per l'automazione delle biblioteche. L'ipotesi Koha a Ca' ...Un ILS open source per l'automazione delle biblioteche. L'ipotesi Koha a Ca' ...
Un ILS open source per l'automazione delle biblioteche. L'ipotesi Koha a Ca' ...Giulio Bonanome
 
Redis - Non solo cache
Redis - Non solo cacheRedis - Non solo cache
Redis - Non solo cacheLuigi Fugaro
 
Soluzioni ot per digicamere giugno 2010
Soluzioni ot per digicamere giugno 2010Soluzioni ot per digicamere giugno 2010
Soluzioni ot per digicamere giugno 2010Giuseppe Bottasini
 
Master Informatica del Testo – Edizione elettronica - Arezzo - 2012
Master Informatica del Testo – Edizione elettronica - Arezzo - 2012Master Informatica del Testo – Edizione elettronica - Arezzo - 2012
Master Informatica del Testo – Edizione elettronica - Arezzo - 2012Walter Volpi
 
OCS in un’ora - Introduzione a Open Conference Systems
OCS in un’ora - Introduzione a Open Conference Systems OCS in un’ora - Introduzione a Open Conference Systems
OCS in un’ora - Introduzione a Open Conference Systems AmmLibera AL
 
Wiki for Governance Risk and Compliance
Wiki for Governance Risk and ComplianceWiki for Governance Risk and Compliance
Wiki for Governance Risk and ComplianceFrancesco Magagnino
 
OCP-Architettura e caratteristiche della PaaS
OCP-Architettura e caratteristiche della PaaSOCP-Architettura e caratteristiche della PaaS
OCP-Architettura e caratteristiche della PaaSopencityplatform
 
La scelta di Plone per la comunicazione istituzionale dell'INAF
La scelta di Plone per la comunicazione istituzionale dell'INAFLa scelta di Plone per la comunicazione istituzionale dell'INAF
La scelta di Plone per la comunicazione istituzionale dell'INAFPlone for Research and University
 
Strumenti Web2.0
Strumenti Web2.0Strumenti Web2.0
Strumenti Web2.0sidelab1
 

Similar to Il CMS Alfresco (20)

Formazione on line (e-learning) e conferenze via web
Formazione on line (e-learning) e conferenze via webFormazione on line (e-learning) e conferenze via web
Formazione on line (e-learning) e conferenze via web
 
Webdays 2004 Blogfordummies2 Ok
Webdays 2004 Blogfordummies2 OkWebdays 2004 Blogfordummies2 Ok
Webdays 2004 Blogfordummies2 Ok
 
DDive - 8.5.2 Xpages - L'evoluzione continua
DDive - 8.5.2 Xpages - L'evoluzione continuaDDive - 8.5.2 Xpages - L'evoluzione continua
DDive - 8.5.2 Xpages - L'evoluzione continua
 
Strumenticollaborativiopen
StrumenticollaborativiopenStrumenticollaborativiopen
Strumenticollaborativiopen
 
Architetture a Microservizi con Docker Container
Architetture a Microservizi con Docker ContainerArchitetture a Microservizi con Docker Container
Architetture a Microservizi con Docker Container
 
Linux Nelle Aziende Installfest2007
Linux Nelle Aziende Installfest2007Linux Nelle Aziende Installfest2007
Linux Nelle Aziende Installfest2007
 
Tools & librerie PHP
Tools & librerie PHPTools & librerie PHP
Tools & librerie PHP
 
Presentazione X Manager
Presentazione X ManagerPresentazione X Manager
Presentazione X Manager
 
Un ILS open source per l'automazione delle biblioteche. L'ipotesi Koha a Ca' ...
Un ILS open source per l'automazione delle biblioteche. L'ipotesi Koha a Ca' ...Un ILS open source per l'automazione delle biblioteche. L'ipotesi Koha a Ca' ...
Un ILS open source per l'automazione delle biblioteche. L'ipotesi Koha a Ca' ...
 
Redis - Non solo cache
Redis - Non solo cacheRedis - Non solo cache
Redis - Non solo cache
 
Grasso Frameworks Ajax
Grasso Frameworks AjaxGrasso Frameworks Ajax
Grasso Frameworks Ajax
 
Soluzioni ot per digicamere giugno 2010
Soluzioni ot per digicamere giugno 2010Soluzioni ot per digicamere giugno 2010
Soluzioni ot per digicamere giugno 2010
 
Ddive Xpage852
Ddive Xpage852Ddive Xpage852
Ddive Xpage852
 
Master Informatica del Testo – Edizione elettronica - Arezzo - 2012
Master Informatica del Testo – Edizione elettronica - Arezzo - 2012Master Informatica del Testo – Edizione elettronica - Arezzo - 2012
Master Informatica del Testo – Edizione elettronica - Arezzo - 2012
 
OCS in un’ora - Introduzione a Open Conference Systems
OCS in un’ora - Introduzione a Open Conference Systems OCS in un’ora - Introduzione a Open Conference Systems
OCS in un’ora - Introduzione a Open Conference Systems
 
Wiki for Governance Risk and Compliance
Wiki for Governance Risk and ComplianceWiki for Governance Risk and Compliance
Wiki for Governance Risk and Compliance
 
OCP-Architettura e caratteristiche della PaaS
OCP-Architettura e caratteristiche della PaaSOCP-Architettura e caratteristiche della PaaS
OCP-Architettura e caratteristiche della PaaS
 
La scelta di Plone per la comunicazione istituzionale dell'INAF
La scelta di Plone per la comunicazione istituzionale dell'INAFLa scelta di Plone per la comunicazione istituzionale dell'INAF
La scelta di Plone per la comunicazione istituzionale dell'INAF
 
Strumenti Web2.0
Strumenti Web2.0Strumenti Web2.0
Strumenti Web2.0
 
Introduzione a Docker
Introduzione a DockerIntroduzione a Docker
Introduzione a Docker
 

Il CMS Alfresco

  • 1. La Piattaforma Alfresco Università del Salento | Dicembre 2008 www.alfresco.com
  • 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
  • 46. Esempio: operare con gli Aspetti <<aspect>> Import qbr: Pubblicabile <<type>> +qbr: DataInizio: d: date cm: content +qbr:DataFine: d: date +cm: content: d: content Associazione +qbr:isActive: d:boolean <aspect name=quot;qbr:Pubblicabilequot;> <title> Doc Pubblicabile</title> <properties> <property name=quot;qbr:DataInizioquot;> <<type>> <type>d:date</type> qbr: Documento </property> Aspetto <property name=quot;qbr:DataFinequot;> <type>d:date</type> </property> <property name=quot;qbr:isActivequot;> <<typet>> <type>d:boolean</type> qbr: Documento Offerta <default>false</default> </property> QBRModel.xml </properties> </aspect> URI: http://www.qbr.it/model/content/1.0 Prefisso: qbr File: QBRModel.xml 47/73
  • 47. Esempio:Operare con gli Aspetti Type: Documento Type: Documento + Aspect: Pubblicabile Aspect: Pubblicabile <aspect name=quot;qbr:Pubblicabilequot;> <title> Documento Pubblicabile</title> <properties> <property name=quot;qbr:DataInizioquot;> <type>d:date</type> </property> <property name=quot;qbr:DataFinequot;> <type>d:date</type> </property> <property name=quot;qbr:isActivequot;> <type>d:boolean</type> <default>false</default> </property> QBRModel.xml </properties> </aspect> 48/73
  • 48. Esempio: Estendere le Proprietà <<aspect>> Import qbr: Pubblicabile Type: Documento Offerta <<type>> +qbr: DataInizio: d: date cm: content +qbr:DataFine: d: date <properties> <property name=quot;qbr:Agentequot;> +cm: content: d: content +qbr:isActive: d:boolean <title>Agente</title> <type>d:text</type> </property> <property name=quot;qbr:Protocolloquot;> <title>Protocollo</title> <type>d:text</type> </property> <<type>> <property name=quot;qbr:Settorequot;> qbr: Documento <title>Settore</title> <type>d:text</type> </property> <property name=quot;qbr:Approvataquot;> <title>Approvata</title> <type>d:boolean</type> <<typet>> </property> <propertyname=quot;qbr:DataApprovazionequot;> qbr: Documento Offerta <title>DataApprovazione</title> <type>d:date</type> </property> +qbr: Agente: d: text </properties> +qbr: Protocollo: d: text QBRModel.xml +qbr: Settore: d: text +qbr: Approvata: d:boolean +qbr: DataApprovazione: d:date 49/73
  • 49. Esempio: Definire le Associazioni <<aspect>> Import qbr: Pubblicabile <<type>> +qbr: DataInizio: d: date cm: content Type: Documento Offerta +qbr:DataFine: d: date +cm: content: d: content +qbr:isActive: d:boolean <associations> <association name=quot;qbr:DocImmquot;> <title>Associazione Documento-Logo</title> <target> <class>qbr:LogoCliente</class> <mandatory>false</mandatory> <<type>> <many>false</many> </target> qbr: Documento </association> <association name=quot;qbr:DocFilesquot;> <title>Associazione Documento-File</title> <target> <class>qbr:OffertaPDF</class> <mandatory>false</mandatory> <<type>> <many>false</many> qbr: Documento Offerta </target> </association> </associations> QBRModel.xml <<type>> <<type>> qbr: LogoCliente qbr: OffertaPDF 50/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
  • 51. Esempio: Custom Template Acom_OffertaMB.pdf Acom_OffertaMB.html Associazione Type: Documento Offerta Type: Offerta_PDF DocFastwebTemplate.ftl Logo_Acom.gif Template Type: Logo_Cliente Presentation 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:&nbsp;</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
  • 75. Contatti Grazie per l’Attenzione! Ing. Mirco Leo QBR ENG. mirco.leo@qbreng.it QBR web site: http://www.qbrgroup.it