Introduzione CMS Alfresco

6,429 views

Published on

Introduzione alla piattaforma documentale Alfresco.
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 Data Model
- Esempi
Comunicare con il Repository
- Web Script
- Esempi
Il Modello Relazionale Dei Dati
Il Workflow
- Il Simple Workflow
- Il Workflow Avanzato
Alfresco Share
- Le API di Alfresco
- API RAAR
Conclusioni

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
6,429
On SlideShare
0
From Embeds
0
Number of Embeds
8
Actions
Shares
0
Downloads
314
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide
  • Slide: due tipi di ws Pur utilizzando essenzialmente lo stessa logica di base Alfresco supporta 2 tipi di Web Script. DATA WEB SCRIPT: incapsula l’accesso a la modifica dei contenuti (DATI) memorizzati nel repository. Forniscono per le applicazioni Client una interfaccia al repository che permette di interrogare, recuperare, aggiornare ed eseguire processi utilizzando generalmente formati di documenti XML o JSON. Presentation Web Script: permettono di costruire una interfaccia utente come una dashlet per Alfresco, una portlet per un portale JSR-168, un Componente User Interface dentro un Sito Web o una Applicazione web personalizzata. Questi web script tipicamente ritoornano contenuto HTML. A differenza dei Data Web Script, i Web Script di presentazione può essere ospitato sul Alfresco Repository Server un diverso server di Presentazione, quando è ospitato su un server di presentation separato da Alfresco allora interagisce con i Data Web Script. All Web Script URLs support the format argument for specifying the response type. Formats available "out-of-the-box" are: html => text/html text => text/plain xml => text/xml atom => application/atom+xml atomentry => application/atom+xml;type=entry atomfeed => application/atom+xml;type=feed rss => application/rss+xml json => application/json opensearchdescription => application/opensearchdescription+xml mediawiki => text/plain (Media Wiki markup) portlet => text/html (head & tail chopped) fbml => text/html php => text/html js => text/javascript calendar => text/calendar
  • Slide: Implementazione del pattern MVC Il framework: Web Script rende facile implementare il pattern MVC (Model View Controller),( nel Pattern MVC tutta la logica di business risiede nel Controller che è completamente separata dalla presentazione e dalla Vista). Nel Web Script Framework di Alfresco, il Controller è implementato dal JavaScript usato come Server-Side -il Controller (ozionale) è implementato da un componente server side JavaScript, un Java Bean o da entrambi. Il controller gestisce le richieste del Client, esegue la business logic necessaria per eseguire la richiesta, popola il Modello con i dati e allora manda la richiesta alla Vista. La Vista è costituita da 1 o piu template FreeMarker che sono responsabili della costruzione della risposta al Clinet nel formato appropriato ad es. HTML, XML, RSS, JSON, CVS o qualsiasi combinazione. Il formato della risposta è mappato da un template FreeMarker attraverso la convenzione dei nomi, per es. un template che ritorna html ha nell’estensione del nome .html. Il Template ha accesso a tutti gli URI Arguments, agli oggetti costruiti dal Controller e al repository dei dati. Il Modello è essenzialmente la Struttura dei Dati che viene passata fra il Controlle e la Vista.
  • esempio
  • Introduzione CMS Alfresco

    1. 1. La Piattaforma Alfresco QBR | Luglio 2009 www.alfresco.com
    2. 2. Argomenti Trattati Presentazione Generale della Piattaforma – 1° PARTE  Document Management  Record Management  Web Content Management L’Architettura  I Componenti Open Source  I Protocolli e gli Standard Supportati Standard JSR-170 Estendere il Modello dei Contenuti – 2 ° PARTE  Custom Content Model  Esempi Comunicare con il Repository  Web Script  Esempi Il Modello Relazionale Dei Dati Il Workflow – 3° PARTE  Il Simple Workflow  Il Workflow Avanzato Alfresco Share Le API di Alfresco  API RAAR Conclusioni
    3. 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  Lucene1/73
    4. 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 contenuti2/73
    5. 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. 6. L’Obiettivo  Fornire una soluzione Open Source di ECM  Superare soluzioni commerciali:  Documentum®  Microsoft® SharePoint®  In Termini di  Caratteristiche  Funzionalità  Vantaggi per gli utenti4/73
    7. 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. 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 commerciali6/73
    9. 9. I Clienti nel Mondo Government Financial Services UK MOD7/73
    10. 10. I Clienti nel Mondo Publishing & Media Professional Services Education & NFP Manufacturing8/73
    11. 11. I Partner Tecnologici  JBoss - www.jboss.com  LifeRay - www.liferay.com  MySQL - www.mysql.com  Novell - www.novell.com  SugarCRM - www.sugarcrm.com9/73
    12. 12. La Piattaforma ALFRESCO Image Document Management Management Content Repository Records Web Content Management Management10/73
    13. 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  Gerarchie  Tassonomie multiple  Check in/out  Versioning  Convesioni tra formati  Profilazione utenti e gruppi  Ricerca Full-Text  Workflow documentale11/73
    14. 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 personalizzabile12/73
    15. 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 Autori13/73
    16. 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 Linux14/73
    17. 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 documenti15/73
    18. 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. 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 determinato Spazio e/o esistenti. Contenuto Contributor Consumer + può 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 Padre17/73
    20. 20. Modalità di Accesso alla Piattaforma Porte di Accesso Web HTTP/S Browser Customized Web Client CIFS Shared Drive Porte di Accesso Workflow Ricerca WebDav Engine Web Folder Full-text FTP FTP Client File Library Service Store SMTP Email ALFRESCO Thick Client DB Contenuti Relazion File ale Metadati System18/73
    21. 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. 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 Archivi20/73
    23. 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-Text21/73
    24. 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 sviluppatori22/73
    25. 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 Multipli23/73
    26. 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 WCM pubblicare il contenuto nel live site Alfresco Hardware / OS24/73
    27. 27. WCM Web Team Architettura HTTP/S Web Client WWW Alfresco XSLT File Deployer PDF Validazione XML HTML FreeMarker XSD (Schema) JSP PNG WWW CSS Alfresco File Deployer Shared Drive ALFRESCO Marketing CIFS Utenti e Gruppi Team DB Relazionale LDAP Metadati25/73
    28. 28. L’ARCHITETTURA Foundation API Web JBoss Apache Quartz Client Scheduler JCR API jBPM Lucene CIFS JavaScript API Rules e Auditing Web SMTP WebDAV Actions Form Listener FreeMarker API Extraction Custom Web Service API Rhino Web Script FTP Javascript Trasformation Framework REST API API Web Application SMTP Servlet Container Open Image Contenuto Lucene Macchina Fisica Office Magick Binario Index DB Relazionale LDAP File System Storage26/73
    29. 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 Avanzati27/73
    30. 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 Immagini28/73
    31. 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 server29/73
    32. 32. Installare Alfresco  Installare a Java SE DEvelopment Kit (JDK)  Installare RDBMS Mysql ( http://dev.mysql.com/downloads)  Configurare Alfresco con il Database  Installare l’Application Server Tomcat  Installare le componenti secondarie (Open Office, ImageMagick)  Installare Alfresco  Run di Alfresco40/73
    33. 33. Installare Alfresco Software Requirements40/73
    34. 34. Installare Alfresco40/73
    35. 35. Installare il DB  Scaricare RDBMS Mysql (http://dev.mysql.com/downloads)  Installare MySql  Verificare il corretto funzionamento  Creare il DB Alfresco con account user e pass Alfresco  In <alfresco>/extras/databases/mysql‘  Eseguire il commando:  mysql -u root -p <db_setup.sql  Scaricare MySQL Java Connector library http://dev.mysql.com/downloads/connector/j/  Copiare il JAR file in <container>/common/lib or <container>/server/default/lib  In tomcat/shared/classes/alfresco/extension modificare I file-  custom-repository.properties  comment out the HSQL connection lines (using #)  uncomment the MySQL connection lines and adjust as appropriate  custom-hibernate-dialect.properties  comment out the HSQL line using #  uncomment the MySQL line40/73
    36. 36. Installare Alfresco su Tomcat 6  Il War Zip include i binari per ImageMagick e pdf2swf  Copiare Alfresco.war in <TOMCAT_HOME>/webapps  Creare <TOMCAT_HOME>/Shared/classes e copia la cartelal extension dal WAR  Nel file <TOMCAT-HOME>/conf/catalina.properties sostituire shared.loader=$ {catalina.base}/shared/classes,${catalina.base}/shared/lib/*.jar  Configurare le variabili d’ambiente:  JAVA_HOME  JRE_HOME  TOMCAT_HOME  copiare la cartella lib e endorsed e i18n all’interno del common di Tomcat  Aumentare la memoria della jvm  se tomcat è installato come servizio  b. se installato da file .sh o .bat allora seguenti parametri -Xms128Mb -Xmx256M40/73
    37. 37. Componenti di Alfresco  Alfresco WCM  OpenOffice  ImageMagick  Microsoft Office Add-ins  Flash Player  SWFTools  Integrazione con MediaWiki40/73
    38. 38. Lanciare Alfresco  Windows C:alfresco  alf_start.bat  Linux /opt/alfresco  alfresco.sh  Server statup in nnnn ms  ok  Browse:http://localhost:8080/alfresco.40/73
    39. 39. FINE PRIMO GIORNO40/73
    40. 40. 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 appartenenti al mondo Java. Oggi quasi ogni applicazione di Gestione dei Contenuti usa il proprio “Content Repository“ che estende un livello di storage tipicamente JSR-170 è la Risposta 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 compliant problematiche differenti. è un modello standardizzato e non costituito da API proprietarie.30/73
    41. 41. 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 Repositories31/73
    42. 42. 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
    43. 43. JSR-170 Level 2: Definisce l’accesso ai dati in modalità scrittura -lettura e le funzionalità per l’integrità referenziale dei dati.33/73
    44. 44. 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 dati34/73
    45. 45. JSR-170  Lutilizzo della JSR-170 API consente di scrivere applicazioni di Enterprise Document Management in maniera totalmente indipendente dal vendor.  Esistono sul mercato implementazioni 100% open source di Content Repository Management JSR-170 Compliant  Esistono anche connectors per le piattaforme commerciali più diffuse (SAP, Oracle, FileNet, ed altri)  Questo significa che se anche un sistema non è stato progettato per supportare nativamente le specifiche JSR-170 può disporre di un driver JSR-170 per comunicare con i sistemi JSR-170 compliant (sul modello JDBC) Standars CIMS.35/73
    46. 46. 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 SQL36/73
    47. 47. 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
    48. 48. 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/classes41/73
    49. 49. 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
    50. 50. 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).343/73
    51. 51. 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/extension44/73
    52. 52. 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 Tipo45/73
    53. 53. Esempio: operare con gli Aspetti  Queste informazioni sono “trasversali” al Documento Informativo proprio del Documento, possono essere “incollate” indipendentemente dalla sua classe di appartenenza  La Soluzione al problema potrebbe essere: 1. Definire un nuovo Tipo (Classe) di Documento chiamato “DocumentoxWeb” che eredita dal Tipo “Documento” 2. Estendere il Tipo “Documento” con le 3 proprietà (isActive, Data Inizio, Data Fine) 3. Definire un nuovo Aspetto “Pubblicabile” dotato di 3 proprietà (isActive, Data Inizio, Data Fine)  Le soluzioni comportano: 1. Conoscere in fase di progettazione del modello esattamente quale sono i documenti destinati ad essere pubblicati sul web 2. Snaturare le proprietà informative del Documento aggiungendo 3 campi 3. Gli Aspetti permettono una gestione trasversale delle proprietà 4. Gli Aspetti permettono di implementare una ereditarietà multipla46/73
    54. 54. 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="qbr:Pubblicabile"> <title> Doc Pubblicabile</title> <properties> <property name="qbr:DataInizio"> <<type>> <type>d:date</type> qbr: Documento </property> <property name="qbr:DataFine"> <type>d:date</type> Aspetto </property> <property name="qbr:isActive"> <<typet>> <type>d:boolean</type> <default>false</default> qbr: Documento Offerta </property> </properties> QBRModel.xml </aspect> URI: http://www.qbr.it/model/content/1.0 Prefisso: qbr File: QBRModel.xml47/73
    55. 55. Esempio:Operare con gli Aspetti Type: Documento Type: Documento + Aspect: Pubblicabile Aspect: Pubblicabile <aspect name="qbr:Pubblicabile"> <title> Documento Pubblicabile</title> <properties> <property name="qbr:DataInizio"> <type>d:date</type> </property> <property name="qbr:DataFine"> <type>d:date</type> </property> <property name="qbr:isActive"> <type>d:boolean</type> <default>false</default> </property> </properties> </aspect> QBRModel.xml48/73
    56. 56. Esempio: Estendere le Proprietà <<aspect>> Import qbr: Pubblicabile <<type>> Type: Documento Offerta +qbr: DataInizio: d: date cm: content +qbr:DataFine: d: date <properties> <property name="qbr:Agente"> +qbr:isActive: d:boolean +cm: content: d: content <title>Agente</title> <type>d:text</type> </property> <property name="qbr:Protocollo"> <title>Protocollo</title> <type>d:text</type> <<type>> </property> <property name="qbr:Settore"> qbr: Documento <title>Settore</title> <type>d:text</type> </property> <property name="qbr:Approvata"> <title>Approvata</title> <type>d:boolean</type> <<typet>> </property> <propertyname="qbr:DataApprovazione"> qbr: Documento Offerta <title>DataApprovazione</title> <type>d:date</type> +qbr: Agente: d: text </property> </properties> +qbr: Protocollo: d: text +qbr: Settore: d: text QBRModel.xml +qbr: Approvata: d:boolean +qbr: DataApprovazione: d:date49/73
    57. 57. Esempio: Definire le Associazioni <<aspect>> Import qbr: Pubblicabile <<type>> +qbr: DataInizio: d: date cm: content +qbr:DataFine: d: date Type: Documento Offerta +qbr:isActive: d:boolean +cm: content: d: content <associations> <association name="qbr:DocImm"> <title>Associazione Documento-Logo</title> <target> <class>qbr:LogoCliente</class> <mandatory>false</mandatory> <<type>> <many>false</many> </target> qbr: Documento </association> <association name="qbr:DocFiles"> <title>Associazione Documento-File</title> <target> <class>qbr:OffertaPDF</class> <<type>> <mandatory>false</mandatory> <many>false</many> qbr: Documento Offerta </target> </association> </associations> QBRModel.xml <<type>> <<type>> qbr: LogoCliente qbr: OffertaPDF50/73
    58. 58. 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
    59. 59. 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 Presentation51/73
    60. 60. Esempio: Custom Template Type: Documento Offerta Type: Logo_Cliente Metadati Offerta Logo Acom SPA Offerta PDF Type: Offerta_PDF Documento HTML52/73
    61. 61. 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 macchine53/73
    62. 62. 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 DELETE54/73
    63. 63. 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 risorse55/73
    64. 64. 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 Script56/73
    65. 65. 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 personalizzate57/73
    66. 66. 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  Portlet58/73
    67. 67. 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
    68. 68. 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 richiesto60/73
    69. 69. 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
    70. 70. 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
    71. 71. 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 repository63/73
    72. 72. 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 descrittore64/73
    73. 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=xml65/73
    74. 74. 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 Folder66/73
    75. 75. Esempio CRUD: il metodo Read Il Descrittore: read.get.desc.xml <webscript> <shortname>Lista Contenuti</shortname> <description>Ritorna lelenco dei contenuti in un Folder</description> <url>/qbr/read/{path}</url> <format default="html">argument</format> <authentication>guest</authentication> <transaction>none</transaction> </webscript>67/73
    76. 76. 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 = "Folder " + url.extension + " not found."; status.redirect = true; } model.folder = folder;68/73
    77. 77. Esempio CRUD: il metodo Read Il Template: read.get.html.ftl <div class="textHeader"><b>Directory:&nbsp;</b>${folder.displayPath}/${folder.name}</div> <br> <table border="0"> <#if folder.parent.parent?exists> <tr> <td><td><a href="${url.serviceContext}/sample/folder<@encodepath node=folder.parent/>">..</a> </tr> </#if> <#list folder.children as child> <tr> <#if child.isContainer> <td><img src="${url.context}/images/icons/project-icon-doclibrary.gif" height="15" ><td><a href="$ {url.serviceContext}/sample/folder<@encodepath node=child/>">${child.name}</a> <#else> <td><td> <a href="${url.serviceContext}/api/node/content/${child.nodeRef.storeRef.protocol}/${child.nodeRef.storeRef.identifier}/$ {child.nodeRef.id}/${child.name?url}">${child.name}</a> </#if> </tr> </#list> </table>69/73
    78. 78. Esempio CRUD: il metodo Read …/qbr/MyApplicazione/leggiFolder.html …/qbr/read/Company Home/Esempio/?path=&submit=ok70/73
    79. 79. 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 Peer71/73
    80. 80. 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 DB72/73
    81. 81. Vantaggi-Svantaggi Modello Documentale 1. Il gestore documentale offre all’utente il supporto nativo per costruire nuove strutture 3. In un contesto non Content- documentali Custom Content Types, Versioning, Centric il modello Documentale Check-in/out, ricerca Full-Text, diventa molto lento e pesante. Categorizzazione dei Contenuti, Associazioni fra i Contentuti. 4. Associa nativamente il file binario alla tabella. 2. Se il Sistema da progettare fa uso massivo di join (Report) allora il modello Documentale JSR-170 mostra i problemi di Performance73/73
    82. 82. Bibliografia http://wiki.alfresco.com/wiki/Main_Page http://www.optaros.com http://ecmarchitect.com/
    83. 83. Contatti Grazie per l’Attenzione!Ing. Mirco LeoQBR ENG.mirco.leo@qbreng.itQBR web site: http://www.qbrgroup.it

    ×