Your SlideShare is downloading. ×
0
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Corso Avanzato Alfresco Ecm

10,912

Published on

Published in: Technology, News & Politics
0 Comments
6 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
10,912
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
792
Comments
0
Likes
6
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Alfresco ECM Corso avanzato Edoardo Fraioli – IT Area Manager
  • 2. PROGRAMMA 1/2 giornata di introduzione all’architettura di Alfresco 1/2 giornata Demo Alfresco live 1 giorno di approfondimenti alla customizzazione di Alfresco / utilizzo delle API
  • 3. PROGRAMMA: architettura <ul><li>1/2 giornata di introduzione all’architettura di Alfresco </li></ul><ul><ul><li>L’architettura generale </li></ul></ul><ul><ul><li>I componenti open source utilizzati </li></ul></ul><ul><ul><li>Gli standard e i protocolli utilizzati </li></ul></ul>
  • 4. PROGRAMMA: live <ul><li>1/2 giornata Demo Alfresco live </li></ul><ul><ul><li>Le business rule </li></ul></ul><ul><ul><li>L’auditing </li></ul></ul><ul><ul><li>Il recupero di file </li></ul></ul><ul><ul><li>Gestione sicurezza /ruoli </li></ul></ul><ul><ul><li>ricerca </li></ul></ul>
  • 5. PROGRAMMA: customizzazioni 1 giorno di approfondimenti alla customizzazione di Alfresco / utilizzo delle API configurazioni base indicizzazione, database, mail, cache, tuning JVM, sistema di archivio, log file, backup e restore configurazioni avanzate Image magick, come configurare e usare la full text search e indicizzazione, reportistica,  trasformazioni, configurare il Versioning, JMX Console 
  • 6. <ul><li>Alfresco è sviluppato da una squadra composta da membri di punta di Documentum e Interwoven con 15 anni di esperienza nella gestione dei contenuti aziendali (ECM, Enterprise Content Management), incluso il co-fondatore di Documentum. </li></ul><ul><li>John Newton – co-fondatore di Documentum </li></ul><ul><li>John Powell – già Direttore operativo di Business Objects </li></ul><ul><li>Dr. Ian Howells – già Vicepresidente marketing di SeeBeyond® </li></ul><ul><li>Matt Asay – fondatore e organizzatore della Open Source Business Conference </li></ul><ul><li>Tecnici e dipendenti, in precedenza, di Documentum, FileNet, OpenText, Interwoven e Vignette. </li></ul>CHI E’ ALFRESCO – il team
  • 7. <ul><ul><li>Alfresco Wiki </li></ul></ul><ul><ul><ul><li>Informazioni tecniche su configurazione, amministrazione e personalizzazioni </li></ul></ul></ul><ul><ul><ul><li>http://wiki.alfresco.com/wiki/Document_Management </li></ul></ul></ul><ul><ul><li>Alfresco Forums </li></ul></ul><ul><ul><ul><li>Post dalla Community e dallo staff di Alfresco </li></ul></ul></ul><ul><ul><ul><li>http://forums.alfresco.com/en/ </li></ul></ul></ul><ul><ul><li>Alfresco Forge </li></ul></ul><ul><ul><ul><li>Contributi software dalla community </li></ul></ul></ul><ul><ul><ul><li>http://forge.alfresco.com </li></ul></ul></ul><ul><ul><ul><li>http://wiki.alfresco.com/wiki/Developer_Guide </li></ul></ul></ul>I Contenuti
  • 8. <ul><ul><li>Alfresco </li></ul></ul><ul><ul><li>Enterprise Content Management Implementation </li></ul></ul><ul><ul><li>by Munwar Shariff, Packt Publishing </li></ul></ul><ul><ul><li>Alfresco Developer Guide </li></ul></ul><ul><ul><li>By Jeff Potts, Packt Publishing </li></ul></ul>RISORSE: libri
  • 9. COSA C’E’ SOTTO 1/4 I maggiori componenti Open Source usati per costruire Alfresco sono:   Apache Lucene ( http://lucene.apache.org/ ) Full-text and metadata search Hibernate 3.0 ( http://www.hibernate.org/ ) Database persistence Apache MyFaces 1.0.9 ( http://myfaces.apache.org/ ) JSF components in the web client FreeMarker ( http://freemarker.org/ ) Web script framework views, custom views in the web client, web client dashlets, email templates
  • 10. COSA C’E’ SOTTO 2/4 I maggiori componenti Open Source usati per costruire Alfresco sono:   Mozilla Rhino JavaScript Engine ( http://www.mozilla.org/rhino/ ) Web script framework controllers, Server-side JavaScript, Actions OpenSymphony Quartz ( http://www.opensymphony.com/quartz/ ) Scheduling of asynchronous processes Spring ACEGI ( http://www.acegisecurity.org/ ) Security (authorization), roles, and permissions Apache Axis ( http://ws.apache.org/axis/ ) Web services
  • 11. COSA C’E’ SOTTO 3/4 I maggiori componenti Open Source usati per costruire Alfresco sono:   OpenOffice.org ( http://www.openoffice.org/ ) Conversion of office documents into PDF Apache FOP ( http://xmlgraphics.apache.org/fop/ ) Transformation of XSL:FO into PDF Apache POI ( http://poi.apache.org/ ) Metadata extraction from Microsoft Office files JBoss jBPM ( http://www.jboss.com/products/jbpm ) Advanced workflow
  • 12. COSA C’E’ SOTTO 4/4 I maggiori componenti Open Source usati per costruire Alfresco sono:   ImageMagick ( http://www.imagemagick.org ) Image file manipulation Chiba ( http://chiba.sourceforge.net/ ) Web form generation based on Xforms Questo non significa che bisogna essere esperti di tutti questi prodotti per utilizzare o customizzare Alfresco.  
  • 13. STANDARD 1/4 I maggiori standard e protocolli supportati da Alfresco:   FTP E’ possibile accedere ai contenuti del repository via FTP. Secure FTP non è ancora supportato. WebDAV WebDAV è un protocollo HTTP-based comunemente supportato dai Content Management vendors. E’ un modo per rappresentare il repository come un file system. CIFS ( Common Internet File System) CIFS permette al repository di essere montato come un drive condiviso da altre macchine. A differenza di WebDAV, non c’è differenza tra un repository “montato” come uno shared drive attraverso CIFS e un file server tradizionale.
  • 14. STANDARD 2/4 I maggiori standard e protocolli supportati da Alfresco:   JSR-170 JCR è una Java API per il mantenimento e l’accesso ai contenuti. Alfresco è un JCR-compliant repository di livello 1. E’ vicino al Level 2 compliant. Portlet API (JSR-168) Il Web Script Framework permette di definire RESTful API verso il repository. Web Scripts possono restituire XML, HTML, JSON, e JSR-168 portlets. Nell’attuale release, è richiesto che il portal e Alfresco girino sulla stessa JVM. SOAP API Web Services usano SOAP-based web services.
  • 15. STANDARD 3/4 OpenSearch ( http://www.opensearch.org ) Alfresco repository può essere configurato come una sorgente dati di tipo OpenSearch che permette ad Alfresco di partecipare a ricerche federate. OpenSearch è una collezione di tecnologie che permettono di pubblicare I risultati di una ricerca in un formato disponibile per syndication e aggregation. E’ un modo per siti web e search engine di pubblicare risultati di ricerca in un formato standard e accessibile attraverso I seguanti componenti: OpenSearch Description files : XML files che identificano e descrivono un search engine. OpenSearch Query Syntax : descrive dove recuperare i risultati dela ricerca OpenSearch RSS (in OpenSearch 1.0) o OpenSearch Response (in OpenSearch 1.1): formato per fornire gli open search results. OpenSearch Aggregators : Siti che possono visualizzare OpenSearch results. OpenSearch &quot; Auto-discovery &quot; per segnalare la presenza di un searchplugin link all’utente e link embedded nell’ header odelle pagine HTML
  • 16. STANDARD 4/4 XForms, XML Schema I form web sono definiti usando XML Schema. Non tutti i widgets XForms widgets sono supportati. XSLT, XSL:FO I dati delle form web possono essere trasforamti usando XSL 1.0. LDAP Può esser usato LDAP directory o un Microsoft Active Directory server.
  • 17. ECM <ul><li>Alfresco è un piattaforma per l’Enterprise Content Management che include: </li></ul><ul><li>Document Management (DM): cattura, organizazione, e condivisione di filetipicamente prodotti da software per l’office automation. </li></ul><ul><li>Web Content Management (WCM): gestione files e contenuto utilizzabili dal web. </li></ul><ul><li>Digital Asset Management (DAM): gestione di oggetti grafici, video e audio. E’ un DM con funzionalità specifiche ai bisogni di lavorare con rich media, thumbnailing, transcoding, e editing. </li></ul><ul><li>Records Management (RM): gstione dei contenuti come legal record. Retention policies, records plans, e audit trails. </li></ul><ul><li>Imaging : cattura, tagging, e routing delle immagini dei documenti dagli scanners. </li></ul>
  • 18. Architettura
  • 19. Architettura - spring Ogni parte del Repository di Alfresco è un componente o un servizio. Un component è una implementazione black box che fornisce una specifica caratteristica o capacità Un service è una interfaccia. Questo approccio permette di modificare i componenti esistenti con nuove implementazioni, e nuovi componenti di esser aggiunti con facilità. Permette ai cliet di connettersi e usare I servizi senza conoscere come sono implementati. Alfresco ha fatto di Spring il core della sua architettura.
  • 20. Architettura - spring
  • 21. Architettura aspetti fondamentali <ul><li>Alfresco è responsabile per lo storage e il recupero del contenuto. </li></ul><ul><li>Questa responsabilità è soddisfatta con i seguenti Servizi fondamentali: </li></ul><ul><li>Nodes, che forniscono metadati e struttura al contenuto. Un nodo può supportare proprietà (e.g. author) e essere in relazione con altri nodi (e.g. represent folder hierarchies or annotations). </li></ul><ul><li>Content, l’informazione che viene salvata es. un Word document o un XML fragment. Meta-dati e contenuto possono essere strutturati secondo le regole definite nel Content Model. Per esempio, il Document Management si basa su un modello di Folders e Files. </li></ul><ul><li>Search Service – indicizzazione dell’informazione pemettere il recupero di metadati. </li></ul>
  • 22. Architettura : data storage Per default, Alfresco ha scelto di immagazzinare i metadati nel database e il contenuto nel file system. Usando un database si ottengono immediatamente I benefici tipice del database quali il supporto alle transazionie, scalabilità e capacità di aministrazione. Il Contenuto è immagazzinato nel file system per permettere per grandi quantità di contenuti, accesso random, streaming, Hibernate e Lucene.
  • 23. Architettura: data storage
  • 24. Architettura: protocolli <ul><li>Un repository non viene usato se il contenuto gestito non può essere acceduto. </li></ul><ul><li>Alfresco supporta diversi protocolli di accesso: </li></ul><ul><li>CIFS (Common Internet File System) </li></ul><ul><li>WebDAV </li></ul><ul><li>FTP </li></ul><ul><li>Tutti questi protocolli espongono il paradigma delle Folders di Files. </li></ul><ul><li>In Windows, con CIFS, è possibile usare la sincronizzazone Offline e la caratteristica delle cartelle per lavorare offline. </li></ul><ul><li>IMPORTANTE Alfresco non supporta ad oggi Offline Synchronization per MS Vista. </li></ul>
  • 25. Architettura: protocolli
  • 26. Architettura
  • 27. PROGRAMMA: live <ul><li>1/2 giornata Demo Alfresco live </li></ul><ul><ul><li>Le business rule </li></ul></ul><ul><ul><li>L’auditing </li></ul></ul><ul><ul><li>Il recupero di file </li></ul></ul><ul><ul><li>Gestione sicurezza /ruoli </li></ul></ul><ul><ul><li>ricerca </li></ul></ul>
  • 28. Best Practices <ul><ul><li>Le categorie possono essere editate solo dall’amministratore </li></ul></ul><ul><ul><li>Se hai bisogno di uno stesso documento in più parti, non inserirlo più volte, </li></ul></ul><ul><ul><li>ma usa il link. Attenzione a manutenere i link. Creare link al contenuto </li></ul></ul><ul><ul><li>Definisci le regole di sicurezza e accesso per Gruppi e non per individui </li></ul></ul>
  • 29. Creare link al contenuto <ul><ul><li>Se l’oggetto di un link viene rimosso, tutti I link diventano orfani. Inversamente, </li></ul></ul><ul><ul><li>rimuovendo un link, non si hanno effetit sul documento target. </li></ul></ul><ul><ul><li>Identifica il documento target e click sula action Copy. </li></ul></ul><ul><ul><li>Il documento sarà posto nella clipboard (visualizzazione shelf). </li></ul></ul><ul><ul><li>Posizionati nello space dove ti piacerebbe creare il link al contenuto. </li></ul></ul><ul><ul><li>Click su “Paste Content as Link” icon nella clipboard per creare il link. </li></ul></ul><ul><ul><li>Utilità : con l’utilizzo dei link (doc o space) è possibile creare una struttura </li></ul></ul><ul><ul><li>ad albero linkata, effettuando salti di livello, permettendo di accedere a spaces, </li></ul></ul><ul><ul><li>anche se il parent non è accessibile. Ai link è possibile associare diritti. </li></ul></ul>
  • 30. Security Model <ul><ul><li>Users e Group </li></ul></ul><ul><ul><li>Permissions e Ruoli </li></ul></ul><ul><ul><li>Authentication </li></ul></ul><ul><ul><li>Come la Security è imposta Alfresco ? </li></ul></ul>
  • 31. Security Model <ul><ul><li>Users sono membri individuali, mentre i gruppi sono categorizzazioni logiche di utenti. </li></ul></ul><ul><li>Permessi definiscono i diritti di accesso agli space e al content. Un gruppo di permessi è un conveniente raggruppamento di permessi, ognuno dei quali è applicabile agli space, space properties, sub-space, content, </li></ul><ul><li>content properties, e business rules. </li></ul><ul><li>Tipici gruppi di permessi sono: </li></ul><ul><li>– Read </li></ul><ul><li>– Edit </li></ul><ul><li>– Add </li></ul><ul><li>– Delete </li></ul>
  • 32. Security Model <ul><ul><li>I ruoi sono collezioni di permessi assegnati ad un utente </li></ul></ul><ul><ul><li>Ogni ruolo comprende un set di permessi. </li></ul></ul><ul><ul><li>Alfresco fornisce out-of-the-box supporto per i seguenti ruoli, configurabili da file: </li></ul></ul><ul><ul><li>– Consumer può leggere un contenuto </li></ul></ul><ul><ul><li>– Editor può leggere ed editare un contenuto </li></ul></ul><ul><ul><li>– Contributor può leggere ed aggiungere un contenuto </li></ul></ul><ul><ul><li>– Collaborator può leggere, editare e aggiungere un contenuto </li></ul></ul><ul><ul><li>– Coordinator può leggere, editare , aggiungere e cancellare un contenuto(full access) </li></ul></ul>
  • 33. Security Model: autenticazione <ul><ul><li>Alfresco impone autenticazione usando user name e password. </li></ul></ul><ul><ul><li>– Web client </li></ul></ul><ul><ul><li>– CIFS </li></ul></ul><ul><ul><li>– FTP </li></ul></ul><ul><ul><li>– WebDAV </li></ul></ul><ul><ul><li>– Web Services </li></ul></ul><ul><ul><li>– Spring beans esposti come servizi pubblici in Java </li></ul></ul>
  • 34. Security Model: utenti In Alfresco ogni utente può avere il proprio space individuale. La location e il nome dello space può essere specificato mentre si crea l’account utente. L’utente per il quale viene creato uno space diventa l’owner di quello space Come owner, l’utente può avere full access al suo space
  • 35. Permessi di default 1/2 <ul><ul><li>Alfresco supporta di default i seguenti permessi per gli spaces: </li></ul></ul><ul><ul><ul><li>– ReadProperties — Read space properties </li></ul></ul></ul><ul><ul><ul><li>– ReadChildren — Read the content within a space </li></ul></ul></ul><ul><ul><ul><li>– WriteProperties — Update properties such as title their description </li></ul></ul></ul><ul><ul><ul><li>– DeleteNode — Delete space </li></ul></ul></ul><ul><ul><ul><li>– DeleteChildren — Delete content and sub-spaces within a space </li></ul></ul></ul><ul><ul><ul><li>– CreateChildren — Create content within a space </li></ul></ul></ul>
  • 36. Permessi di default 1/2 <ul><ul><li>Permessi per gli items: </li></ul></ul><ul><ul><ul><li>– ReadContent — Read file </li></ul></ul></ul><ul><ul><ul><li>– WriteContent — Update file </li></ul></ul></ul><ul><ul><ul><li>– ReadProperties — Read file propertie </li></ul></ul></ul><ul><ul><ul><li>– WriteProperties — Update file properties such as title, description, etc. </li></ul></ul></ul><ul><ul><ul><li>– DeleteNode — Delete file </li></ul></ul></ul><ul><ul><ul><li>– ExecuteContent — Execute file </li></ul></ul></ul><ul><ul><ul><li>– SetOwner — Set ownership on a content item </li></ul></ul></ul><ul><li>A complete list of default permissions and roles is provided in the Alfresco </li></ul><ul><li>configuration file <config>modelpermissionDefinitions.xml. </li></ul>
  • 37. Permessi di default 1/2 <!-- --> <!-- Global permissions apply regardless of any particular node context. --> <!-- They can not be denied by the permissions set on any node. --> <!-- --> <!-- Admin can do anything to any ndoe --> <globalPermission permission=&quot;FullControl“ authority=&quot;ROLE_ADMINISTRATOR&quot;/> <!-- For now, owners can always see, find and manipulate their stuff --> <globalPermission permission=&quot;FullControl&quot; authority=&quot;ROLE_OWNER&quot;/> <!-- Unlock is granted to the lock owner --> <globalPermission permission=&quot;Unlock&quot; authority=&quot;ROLE_LOCK_OWNER&quot;/> <!-- Check in is granted to the lock owner --> <globalPermission permission=&quot;CheckIn&quot; authority=&quot;ROLE_LOCK_OWNER&quot;/> <!-- Cancel check out is granted to the locak owner --> <globalPermission permission=&quot;CancelCheckOut&quot; authority=&quot;ROLE_LOCK_OWNER&quot;/>
  • 38. Invitare gli utenti Si possono dare permessi agli utenti a fare specifiche attività nel proprio space. Per fare questo si possono invitare gli utenti nel proprio space. Ogni ruolo viene applicato solo allo spazio in cui è assegnato. Per esempio, potresti invitare un utente (o gruppo) a uno dei tuoi spaces come un editor. Potresti invitare lo stesso utente (or group) a differenti spaces come un collaborator. Lo stesso utente (o group) potrebbe essere invitato da qualcun altro come un coordinator.
  • 39. Sicurezza per i gruppi Scenario 1 : Utente 1 è in grado di contribuire nello space &quot;X“, ed è editore degli space &quot;Y“ e &quot;Z&quot;. Se cancelliamo l’utente 1 dal sistema, è necessario cancellarlo manualmente dagli space X, Y e Z. Alfresco non fornisce nessun report che indichi tutti gli space ai quali un particlare utente può accedere. Scenario 2 : Due utenti che appartengono all’area vendite sono aggiunti con contributori agli space &quot;Sales&quot; e &quot;Finance&quot; e qualche altro space. Se una nuova persona viene assunta nell’area vendite, è necessario aggiungerla agli stessi space e questo è un grosso lavoro di manteinance . Invece, fornendo al gruppo sales accesso a questi space, l’aggiunta e la cancellazione di membri del gruppo vendite, assumerà automaticamente le stesse regole di sicurezza e collaborazione richieste dal sistema Raggruppare sempre gli utenti. Un utente può appartenere a più di un gruppo. Usare I gruppi per definire sicurezza sugli space.
  • 40. Maintenance – Best Practice Quando viene cancellato un item (contenuto o space) in Alfresco, l’item non sarà cancellato dal server, ma sarà spostato in una cartella temporanea chiamata archive space store. Questo da una opportunità di recover il contenuto cancellato Gli item cancellati (nella cartella temporanea, consumano spazio, quindi è buona pratica pulire periodicamente la cartella. Questi item non potranno più essere recuperati. E’ raccomandabile un backup regolare dei propri dati.
  • 41. Recuperare un item cancellato
  • 42. Data Dictionary e Space Template <ul><li>La Company Home space è la root space che contiene sub-spaces quali </li></ul><ul><ul><li>Data Dictionary, </li></ul></ul><ul><ul><li>Guest Home, </li></ul></ul><ul><ul><li>Users Home </li></ul></ul><ul><ul><li>The Data Dictionary space contiene tutte le definizioni gestite dall’utente; </li></ul></ul><ul><ul><li>Guest Home è lo spazio creato per l’utente creato di default Guest; </li></ul></ul><ul><ul><li>E’ buona pratica creare un singolo space che contiene spaces per tutti gli utenti individuali. Creare uno space “NomeCognome” il cui padre è User Homes. </li></ul></ul><ul><ul><li>Username e password devono essere tra 3 e 32 caratteri di lunghezza. </li></ul></ul>
  • 43. Data Dictionary Data Dictionary è una shared resource. Tutti gli script e i template presenti in data dictionary possono essere definiti dall’amministratore e usati dagli utenti. Email Templates : contiene I templates per la notifica via mail di un invito ad uno space, documento, o da una regola o azione. Email templates sono scritti in FreeMarker template language e hanno l’estensione .ftl. Presentation Templates : templete di presentazione, usati per la visualizzazione del contenuto in deversi modi. Presentation templates sono scritti in FreeMarker template language e hanno l’estensione .ftl. RSS Templates : usati per fornire RSS feeds degli space. Saved Searches : pre-built queries, salvate da un utente per la generazione di report. Ogni utente avrà il proprio spazio privato di ricerche salvate. Inoltre qesto space conterrà tutte le ricerche salvate e sharate come pubbliche. Scripts : JavaScript files, usati per effettuare certe operazioni sul contenuto
  • 44. Space Templates Space Templates: contiene le strutture degli space che possono esser usate come templae per creare nuovi space. Ogni space può essere salvato come un template per un riuso futuro dela struttura e dei dati. Invece di creare ripetutamente la stessa struttura per ogni progetto, si può mantenere un Project template e replicarlo per ogni progetto. Tutto il lavoro fatto manualmente potrebbe essere fatto in pochi secondi semplicemente usando un template.
  • 45. Implementare Business Rules <ul><ul><li>Organizzare automaticamente i documenti in spaces specifici quando si fa un caricamento massivo di documenti </li></ul></ul><ul><ul><li>Definire la sequenza di business rules su uno space </li></ul></ul><ul><ul><li>Run time-consuming business rules in background </li></ul></ul><ul><ul><li>Cotrollo automatico delle versioni dei documenti su specifici documenti in specifici spaces </li></ul></ul><ul><ul><li>Categorizzazione Automatica dei documenti basata sui nomi </li></ul></ul><ul><ul><li>Inviare notifiche basate su uno specifico evento su un documento </li></ul></ul><ul><ul><li>Trasformare documenti da un formato ad un altro </li></ul></ul><ul><ul><li>Aggiungere dinamicamente proprietà custom ai documenti basato sulla location </li></ul></ul><ul><ul><li>Configurare business rules come azioni schedulate per eseguire periodicamente </li></ul></ul><ul><ul><li>Estendere business rules usando JavaScript files customizzati </li></ul></ul>
  • 46. Organizzare automaticamente i documenti <ul><ul><li>Si possono ottenere tutti I documenti come un upload massivo in uno space Drop Zone (space mappato come network folder). </li></ul></ul><ul><ul><li>Se il nome del documento include Check -> *Check* </li></ul></ul><ul><ul><li>(es. Client1Check_7003.jpg), allora la regola è spostarlo nel Customer Checks space. </li></ul></ul><ul><ul><li>Se il nome include Invoice -> *Invoice* (es. Vendor2Invoice_20060815.pdf), allora la regola impostata è spostarlo nel Vendor Invoices space. </li></ul></ul><ul><ul><li>Tutti gli altri documenti nello space Contracts e Other Documents. </li></ul></ul>
  • 47. Applicazione regole <ul><ul><li>Inbound significa che la regola è richiamata quando un documento è creato (tramite Web Client) o copiato o spostato (da qualche altro space) o aggiunto ( usando le Web Services API ) o rimosso (usando drag-and-drop di CIFS, WebDAV, or FTP) nello space Drop Zone </li></ul></ul><ul><ul><li>Outbound significa che la regola è richiamata quando un documento è cancellato o tagliato dallo space Drop Zone. </li></ul></ul><ul><ul><li>Update significa che la regola è richiamata quando un documento è updatato. Manual updating nel Web Client, update attraverso network drives (CIFS, FTP, o WebDAV), update attraverso Web Services API . </li></ul></ul>
  • 48. Run Rules in Background per migliorare le performance <ul><ul><li>Es. Una business rule che transforma 25 megabytes di un documento Microsoft Word in PDF. Considera che la regola sia applicata a centinaia di file di questo tipo. Se si effettua l’upload di un grande file word via web, potresti dover aspettare finchè la business rule non termini. </li></ul></ul><ul><ul><li>Ugualmente, pensa ad una business rule che invia email a centinaia di utenti. </li></ul></ul><ul><ul><li>Queste regole prendono un significativo ammontare di tempo e risorse per essere eseguite. </li></ul></ul><ul><ul><li>Per migliorare le performance del sistema, la best practice è eseguire queste business rules in background. </li></ul></ul><ul><ul><li>I risultati possono non apparire immediatamente. </li></ul></ul>
  • 49. Aggiungere dinamicamente proprietà ad un documento <ul><ul><li>Ci potrebbero essere situazioni in cui è necessario aggiungere proprietà a tutti I documenti in un particolare space. </li></ul></ul><ul><ul><li>Si possono definire business rule su uno space per assegnare prorpietà aggiuntive dinamicamente a tutti o a certi insiemi di documenti. </li></ul></ul><ul><ul><li>Supponiamo di dover tracciare la data di decorrenza e expiration per tutti i documenti in determinati sub-spaces. </li></ul></ul><ul><ul><li>Esiste un built-in aspect chiamato Effectivity che aggiunge due proprietà ad un documento effective date and expiration date </li></ul></ul>
  • 50. Versioning automatico 1/2 <ul><ul><li>In Alfresco, il versionamento è disabilitato per default </li></ul></ul><ul><ul><li>E’ possibile abilitare il versioning per ogni documento, ma è un lavoro pesante per grandi quantità. </li></ul></ul><ul><ul><li>Si può customizzare il content model per abilitare il versioning per ogni documento. Ma questo approccio potrebbe essere inefficiente se non si vogliono versionare tutti i documenti </li></ul></ul>
  • 51. Versioning automatico 2/2 <ul><ul><li>“ Customer Checks” space contiene immagini scannerizzate e il versioning non ha senso, si avrà una sola immagine per ogni scannerizzazione. </li></ul></ul><ul><ul><li>Lo stesso vale per lo spazio contenente le fatture </li></ul></ul><ul><ul><li>I documenti in Contracts e Other Documents space richiedono invece supporto al versioning. </li></ul></ul><ul><ul><li>Quindi ha senso inserire il versioning solo per questa cartella, aggiungendo una regole, selezionando un Versionable aspect , per ogni documento aggiunto. </li></ul></ul>
  • 52. Mail di notifica <ul><ul><li>Notifiche quando vengono aggiunti documenti a public space </li></ul></ul><ul><ul><li>Notifiche quando vengono effettuati cambi ad alcuni importanti documenti in determinati spaces. </li></ul></ul><ul><ul><li>Inviare email a tutte le persone che appartengono ad un gruppo. </li></ul></ul><ul><ul><li>Seleziona Actions e seleziona “Send an email to specified users” e scegliere i valori: </li></ul></ul><ul><ul><li>Soggetto </li></ul></ul><ul><ul><li>Uso del template </li></ul></ul><ul><ul><li>messaggio </li></ul></ul>
  • 53. Regole delle Rules 1/2 Le Inbound rules non saranno applicate ai documenti che già sono presenti nello space prima della creazione della regola. Le Inbound rules saranno applicate solo ai documenti che sono aggiunti dopo che la regola è creata. Se uno space ha più di una regola, tutte le regole saranno eseguite in sequenza.
  • 54. Regole delle Rules 1/2 Le regole definite negli space padre (con l’opzione “applica la regola ai sub-spaces) saranno anche eseguite nello space corrente. Un documento può essere uploadato in uno space in modi differenti usando Web Client o FTP o WebDAV o CIFS. La Inbound rule in uno space sarà avviata quando un documento è uploadato nello space, a prescindere da come viene uploadato .
  • 55. Aspect Oriented programming <ul><li>Il framework Alfresco supporta Aspect-Oriented Programming , che è una tecnologia usata per cambiare il comportamento del server dinamicamente senza cambi al codice. </li></ul><ul><li>Si devono definire </li></ul><ul><li>La condizione per applicare la regola </li></ul><ul><li>L’azione </li></ul><ul><li>Il tipo di evento che fa scatenare l’azione (inbound, outbound, update) </li></ul><ul><li>you can also define your own aspects as per your business requirements. More details about changing the data model and defining custom aspects are covered in Chapter 7 di Alfresco Enterprise Content Management Implementation. </li></ul>
  • 56. Condizioni <ul><li>Specifico name pattern? </li></ul><ul><li>E’ in una categoria particolare? </li></ul><ul><li>E’ di uno tipo specifico o formato? </li></ul><ul><li>Una proprietà del contenuto ha un particolare valore? </li></ul><ul><li>Aggiungendo un numero maggiore di condizioni un item deve soddisfare tutte le condizioni per essere selezionato </li></ul>
  • 57. Built in ations <ul><ul><li>Add aspect to item : aggiunge proprietà e comportamenti al documento </li></ul></ul><ul><ul><li>Add simple workflow : aggiunge approve e reject workflow </li></ul></ul><ul><ul><li>Check in content : Check in del documento </li></ul></ul><ul><ul><li>Check out content : Check out del documento </li></ul></ul><ul><ul><li>Copy item to a specific space : Copia il documento in uno space </li></ul></ul><ul><ul><li>Execute a script : esegue un JavaScript come una action </li></ul></ul><ul><ul><li>Extract common metadata fields from content : Extract document metadata </li></ul></ul><ul><ul><li>Import Alfresco content package : Import come content package </li></ul></ul><ul><ul><li>Link item to category : Link document ad una categoria esistente </li></ul></ul><ul><ul><li>Move item to a specific space : Sposta il documetno in uno space </li></ul></ul><ul><ul><li>Remove an aspect from an item : Rimuove property o set di properties </li></ul></ul><ul><ul><li>Send an email to specific users : Send email notifications a utenti o gruppi </li></ul></ul><ul><ul><li>Specialize the type of an item : Definisce il content type di un documento </li></ul></ul><ul><ul><li>Transform and copy content to a specific space : Trasformazione del contenuto e sposta il file risultato in uno space specifico </li></ul></ul><ul><ul><li>Transform and copy image to a specific space : Trasformazione e resize di una immagine da un formato ad un altro formato e sposta il file risultato in uno space specifico </li></ul></ul>
  • 58. 1- Aspetti Ogni aspetto ha differente significato: Classifiable : abilita la categorizzazione così che le categorie possono essere linkate al documento Complianceable : aggiunge una proprietà di conformità chiamata Remove after to the document. Dublin Core : aggiunge metadati Dublin core al documento. Publisher, Contributor, Subject, and Rights. Effectivity : aggiunge la proprietà di validità. Effective From and Effective To to the document. Emailed : aggiunge un insieme di proprietà. Email Data to the document, usata per cattuare le informazioni della mail, se il documento è un attachment di email. Localizable : aggiunge la proprietà Locale Summarizable : aggiunge la proprietà Summary. Templatable : Enable template view. Translatable : aggiunge la proprietà Translations al documento. Versionable : abilita il versioning.
  • 59. 6- Built in JS as Action <ul><li>E’ possibile eseguire un file JavaScript selezionando Execute a script as an action in the Rules Wizard. </li></ul><ul><li>I files JavaScript già presenti sono: </li></ul><ul><ul><li>backup.js </li></ul></ul><ul><ul><li>append copyright.js </li></ul></ul><ul><ul><li>backup and log.js </li></ul></ul><ul><li>Ad esempio backup.js script crea un backup di un file copiandolo in uno space di backup. </li></ul><ul><li>La lista di tutti i JavaScript riguarda tutti quelli disponibili in Company Home | Data Dictionary | Scripts space </li></ul>
  • 60. 6- Costruire JavaScript as Action <ul><li>Supponiamo di ricevere un contratto con l’ammontare come una delle proprietà. Si può eseguire un JavaScript che aggiorna un sistema finanziario esterno con le informazione estratte dal documento. </li></ul><ul><li>L’uso delle azioni di controllo della validità di un documento sono spesso usate per gestire i contenuti da tenere In un ambiente di produzione da quelli expired, qundi archiviati: </li></ul><ul><ul><li>The Staging space stages the transformed and approved content </li></ul></ul><ul><ul><li>The Production space contains the effective content </li></ul></ul><ul><ul><li>The Archived space contains the expired content </li></ul></ul>
  • 61. 6- Custom JavaScript Creare un file JavaScript, .js, con il seguente codice. Lo script verifca il contenuto nello space Staging e sposta il contenuto, la cui proprietà di decorrenza ha un valore minore alla data di oggi, allo space di produzione var stagingFolder = companyhome.childByNamePath(&quot;Intranet/Marketing Communications/Website Documents/Staging&quot;); var productionFolder = companyhome.childByNamePath(&quot;Intranet/Marketing Communications/Website Documents/Production&quot;); if(stagingFolder != null) { var i=0; var today = new Date(); stagingChildren = stagingFolder.children; stagingTotal = stagingChildren.length; for(i=0; i<stagingTotal;i++) { child = stagingChildren[i]; if(child.properties[&quot;cm:from&quot;] <= today) { child.move(productionFolder); } } }
  • 62. 6- Eseguire Custom JavaScript Creando una business rule su uno space. Un altro modo è eseguire la business rule manualmente come un comando Run Action sullo space. Usando le Java Script API si possono trovare i nodi (via XPath), navigare la gerarchia dei nodi, effettuare ricerche (incluse Lucene full-text searches), esaminare e modificare le proprietà dei nodi, e modificare gli aspetti applicati ai nodi. In aggiunta, scripts possono creare nuovi files e cartelle e copy/move/delete nodi. Applicare tutta la security e ACL permissions tipiche di Alfresco. Una descrizione dettagliata circa le API JavaScript di Alfresco: http://wiki.alfresco.com/wiki/JavaScript_API
  • 63. Execute Custom JavaScript Il secondo modo è usare direttamente l’indirizzamento URL per una chiamata stile REST. Il web client di Alfresco è una servlet chepermette l’esecuzione di script direttamente via URL Questa caratteristica permette di accedere agli script e I risultati degli script sono ritornati come stream html nella respone.
  • 64. Scripting usage I seguenti oggetti sono disponibili agli scripts per default in root scope: Named object Description companyhome The Company Home node userhome Current user's Home Space node person Node representing the current user's Person object space The current space node (if any); note that for a script executing from a rule, the space object will be the space that the rule resides in document The current document script The node representing the script itself search A host object providing access to Lucene and Saved Search results people A host object providing access to people and groups in Alfresco session Session-related information (session.ticket for the authentication ticket) Classification Read access to classifications and root categories .
  • 65. Scripting Esempi // test accesso alle proprieta di un documento e modifica var docname = document.name.substring(0, document.name.lastIndexOf('.')); document.properties.name = &quot;12345 &quot; + document.properties.name; document.save(); / modifcare il contenuto appendendo una stringa alla fine document.content = content + &quot; Here is another line added from a script!“ // creare una cartella nello stesso space var folderNode = space.createFolder(docname + &quot; - added by script&quot;); // copia il doc in una nuova cartella nodo creata var copy = document.copy(folderNode); // spoasa la folder node in companyhome folderNode.move(companyhome); // aggiungere una aspetto copy.addAspect(&quot;cm:translatable&quot;);
  • 66. Auditing <ul><ul><li>Content versioning . </li></ul></ul><ul><ul><li>Accesso a versioni precedenti </li></ul></ul><ul><ul><li>Ripubblicarle come sono o con cambiamenti. </li></ul></ul><ul><ul><li>Recuperare contenuti cancellati. </li></ul></ul><ul><li>Full audit di tutte le attività degli utenti. </li></ul><ul><li>Mentre il contenuto può essere rimosso dal sito, l’audit sarà sempre recuperabile. </li></ul><ul><li>. </li></ul><ul><li>In Alfresco, l’auditing è fornito a livello dei servizi del repository, quindi disponibile agli utenti e ad applicazioni. </li></ul><ul><li>Date, time, user, comments, e i cambi al contenuto sono immagazzinati e accessibili dagli utenti. </li></ul>
  • 67. Auditing Auditing è disabilitato per default. Per abilitare la configurazione di default bisogna cambiare l’attributo enabled. Per abilitare l’auditing tramite un metodo deve essere abilitato on “unset” sul metodo, abilitato o disabilitato sul service e abilitato al livello più alto dell’elemento da controlalre. Se l’elemento è marcato enabled=&quot;false&quot; dovunnque nello stack l’auditing sarà disabled. L’audit configuration file è <configRoot>auditConfig.xml.
  • 68. Auditing <ul><li><Audit xmlns=&quot;http://www.alfresco.org/model/audit/1.0&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; enabled=&quot;false&quot; auditInternal=&quot;false&quot; mode=&quot;all&quot;> </li></ul><ul><ul><ul><li><!-- The File/Folder Service --> </li></ul></ul></ul><ul><ul><ul><li><Service name=&quot;FileFolderService&quot; mode=&quot;none&quot;> </li></ul></ul></ul><ul><ul><ul><ul><li><Method name=&quot;rename&quot; mode=&quot;all&quot;/> </li></ul></ul></ul></ul><ul><ul><ul><ul><li><Method name=&quot;move&quot; mode=&quot;all&quot;/> </li></ul></ul></ul></ul><ul><ul><ul><ul><li><Method name=&quot;copy&quot; mode=&quot;all&quot; auditInternal=&quot;true&quot;/> </li></ul></ul></ul></ul><ul><ul><ul><ul><li><Method name=&quot;create&quot; mode=&quot;all&quot;/> </li></ul></ul></ul></ul><ul><ul><ul><ul><li><Method name=&quot;delete&quot; mode=&quot;all&quot;/> </li></ul></ul></ul></ul><ul><ul><ul><ul><li><Method name=&quot;makeFolders&quot; mode=&quot;all&quot;/> </li></ul></ul></ul></ul><ul><ul><ul><ul><li><Method name=&quot;getWriter&quot; mode=&quot;all&quot;/> </li></ul></ul></ul></ul><ul><ul><ul><li></Service> </li></ul></ul></ul><ul><ul><ul><li><Service name=&quot;NodeService&quot; mode=&quot;none&quot;> </li></ul></ul></ul><ul><ul><ul><ul><li><Method name=&quot;createStore&quot; mode=&quot;all&quot;/> </li></ul></ul></ul></ul><ul><ul><ul><ul><li><Method name=&quot;createNode&quot; mode=&quot;all&quot;/> </li></ul></ul></ul></ul><ul><ul><ul><ul><li><Method name=&quot;moveNode&quot; mode=&quot;all&quot;/> </li></ul></ul></ul></ul><ul><ul><ul><ul><li><Method name=&quot;setChildAssociationIndex&quot; mode=&quot;all&quot;/> </li></ul></ul></ul></ul><ul><ul><ul><ul><li><Method name=&quot;setType&quot; mode=&quot;all&quot;/> </li></ul></ul></ul></ul><ul><ul><ul><ul><li><Method name=&quot;addAspect&quot; mode=&quot;all&quot;/> </li></ul></ul></ul></ul><ul><ul><ul><ul><li>… .. </li></ul></ul></ul></ul><ul><ul><ul><ul><li><Method name=&quot;restoreNode&quot; mode=&quot;all&quot;/> </li></ul></ul></ul></ul><ul><ul><ul><li></Service> </li></ul></ul></ul>
  • 69. Auditing <ul><ul><ul><li><Service name=&quot;PersonService&quot; mode=&quot;none&quot;> </li></ul></ul></ul><ul><ul><ul><ul><li><Method name=&quot;setCreateMissingPeople&quot; mode=&quot;all&quot;/> </li></ul></ul></ul></ul><ul><ul><ul><ul><li><Method name=&quot;setPersonProperties&quot; mode=&quot;all&quot;/> </li></ul></ul></ul></ul><ul><ul><ul><ul><li><Method name=&quot;createPerson&quot; mode=&quot;all&quot;/> </li></ul></ul></ul></ul><ul><ul><ul><ul><li><Method name=&quot;deletePerson&quot; mode=&quot;all&quot;/> </li></ul></ul></ul></ul><ul><ul><ul><li></Service> </li></ul></ul></ul><ul><ul><ul><ul><li><Service name=&quot;VersionService&quot; mode=&quot;none&quot;> </li></ul></ul></ul></ul><ul><ul><ul><ul><li><Method name=&quot;createVersion&quot; mode=&quot;all&quot;/> </li></ul></ul></ul></ul><ul><ul><ul><ul><li><Method name=&quot;revert&quot; mode=&quot;all&quot;/> </li></ul></ul></ul></ul><ul><ul><ul><ul><li><Method name=&quot;restore&quot; mode=&quot;all&quot;/> </li></ul></ul></ul></ul><ul><ul><ul><ul><li><Method name=&quot;deleteVersionHistory&quot; mode=&quot;all&quot;/> </li></ul></ul></ul></ul><ul><ul><ul><li></Service> </li></ul></ul></ul><ul><ul><ul><li></Audit> </li></ul></ul></ul><ul><ul><ul><li>Per abilitare l’auditing, aprire il file <configRoot>auditConfig.xml e cambiare il valore dell’attributo enabled a true. </li></ul></ul></ul>
  • 70. Auditing <ul><ul><ul><li>Edita un documento e per lo stesso documento usa il Preview in Template e seleziona show_audit.ftl template dalla lista. </li></ul></ul></ul><ul><ul><ul><li>Verranno visualizzate le informazioni di audit. </li></ul></ul></ul><ul><ul><ul><li>La colonna Method nel report, riguarda le azioni eseguite sul documento. </li></ul></ul></ul><ul><ul><ul><li>In Company Home | Data Dictionary | Presentation Templates space si può esaminare il codice del file show_audit.ftl. </li></ul></ul></ul><ul><ul><ul><li>E’ un semplice audit template fornito per visualizzare le informazioni di audit. </li></ul></ul></ul>
  • 71. Workflow Alfresco ha due opzioni per implementare I workflow: simple workflow o advanced workflow. Con I simple workflows gli utenti finali possono configurarli direttamente senza avere skill tecninci. &quot;add a simple workflow&quot; ad un document quando è inserito in una cartella Quando un ocumento ha un simple workflow significa che ha un &quot;forward step“ e un &quot;backward step“ ad esempio &quot;Approve“ e &quot;Reject&quot;. Quando uno step è invocato il contenuto può esser copiato o spostato in una altra cartella. Per esempio ci potrebbero essere cartelle chiamate &quot;Draft&quot;,”In Review&quot;, e &quot;Approved&quot;. Lo stato del documento è determinato dalla cartella in cui si trova.
  • 72. Workflow <ul><li>Simple workflows hanno delle limitazioni: </li></ul><ul><ul><li>Possono essere solo dei processi seriali. Il contenuto può essere spostato avanti o indietro, uno step alla volta </li></ul></ul><ul><ul><li>Un contenuto può essere in un processo ad una orario dato </li></ul></ul><ul><ul><li>Contenuto deve cambiare location fiisca per riflettere il cambio di stato. </li></ul></ul><ul><ul><li>Non è possibile catturare o agire sui metadati relativi al processo </li></ul></ul><ul><ul><li>Tasks non possono essere assegnati a persone o gruppi </li></ul></ul><ul><ul><li>Oltre che aggiungere regole o azioni delle regole non c’è modo di aggiungere altra logica </li></ul></ul>
  • 73. Customizzazione base Se la customizzazione consiste nella configurazione di files o properties web-client-config-custom.xml or webclient.properties, si possono porre I file di customizzazione nella extension folder Tomcat: <alfresco>/tomcat/shared/classes/alfresco/extension Quando Alfresco parte, legge tutti I file di default di configurazione e dopo legge gli item customizzati (nella extension folder). Quindi la customizzazione o estende o sovrascrive l’item di configurazione.
  • 74. Server Configuration http://wiki.alfresco.com/wiki/Server_Configuration <ul><li>CORE: </li></ul><ul><ul><li>Repository Configuration </li></ul></ul><ul><ul><li>Repository Cache Configuration </li></ul></ul><ul><ul><li>Uso dello spazio </li></ul></ul><ul><ul><li>Log </li></ul></ul><ul><ul><li>Disabilitare l’archivio Documenti </li></ul></ul><ul><li>EXTENDED CONFIGURATION: </li></ul><ul><ul><li>ImageMagick Configuration </li></ul></ul><ul><ul><li>Full-Text Search Configuration </li></ul></ul><ul><ul><li>Transformations Configuration </li></ul></ul><ul><ul><li>Metadata Extraction Configuration </li></ul></ul><ul><ul><li>Aggiungere un Mime Type </li></ul></ul><ul><ul><li>Versioning </li></ul></ul><ul><ul><li>JMX </li></ul></ul>
  • 75. Server Configuration http://wiki.alfresco.com/wiki/Server_Configuration <ul><li>CORE: </li></ul><ul><ul><li>Repository Configuration </li></ul></ul><ul><ul><li>Repository Cache Configuration </li></ul></ul><ul><ul><li>Uso dello spazio </li></ul></ul><ul><ul><li>Log </li></ul></ul><ul><ul><li>Disabilitare l’archivio Documenti </li></ul></ul><ul><li>EXTENDED CONFIGURATION: </li></ul><ul><ul><li>ImageMagick Configuration </li></ul></ul><ul><ul><li>Full-Text Search Configuration </li></ul></ul><ul><ul><li>Transformations Configuration </li></ul></ul><ul><ul><li>Metadata Extraction Configuration </li></ul></ul><ul><ul><li>Aggiungere un Mime Type </li></ul></ul><ul><ul><li>Versioning </li></ul></ul><ul><ul><li>JMX </li></ul></ul>
  • 76. Repository Configuration repository.properties Alfresco omcatwebappsalfrescoWEB-INFclassesalfresco Lucene configuration: path dei file degli indici – path dove il contenuto binario è immagazzinato Database configuration : database connection properties Mail configuration Admin username
  • 77. Repository cache Configuration Le cache in Alfresco sono implementate usando Ehcache library, transazionale e clusterizzabile La cache migliora le performance del repository di Alfresco ma può consumare considerevole Java heap memory. I settings usati dipendono dall’uso e dalla memoria disponibile sul server. Il file di default ehcache.xml è adeguato alla maggior parte dei sistemi ed è impostato per approssimativi 512MB di cache heap memory – questo è il default raccomandato per una Java heap size di1GB
  • 78. Tuning - uso dello spazio La dimensione del repository di Alfresco è pari alla quantità di spazio disco necessario. Il contenuto in Alfresco è per default immagazzinato direttamente sul disco, quinid per mantenere 1000 documenti di 1MB ci sarà bisogno di 1000MB di spazio disco. Considerare lo spazio per I file temporanei e le versioni – ogni versione di un file è immagazzianto sul disco come copia separata del file. E’ altamente raccomandato l’uso di SCSI RAID disk array.
  • 79. Configurazione posta <ul><li>Inviare emails da un SMTP server. Non supporta secure SMTP servers. </li></ul><ul><li>1. file: <configRoot>/alfresco/repository.properties. </li></ul><ul><li>2. email properties: </li></ul><ul><ul><ul><li># Email configuration </li></ul></ul></ul><ul><ul><ul><li>mail.host= <the name of your SMTP host> </li></ul></ul></ul><ul><ul><ul><li>mail.port=25 <the port that your SMTP service runs on (the default is 25)> </li></ul></ul></ul><ul><ul><ul><li>mail.username=anonymous <the account you want e-mail to be sent from > </li></ul></ul></ul><ul><ul><ul><li>mail.password= <password> </li></ul></ul></ul><ul><li>3. Crea un nuovo file nella <extension> directory. </li></ul><ul><li>4. Copia il blocco email properties in questo file. </li></ul><ul><li>5. Modifica le proprietà </li></ul><ul><li>6. Salvare il file con un nome significativo che finisce con .properties. </li></ul>
  • 80. Configurazione posta From Email Address Per modificare il ‘from’ email address quando gli utenti sono invitati a uno space, aggiungere al web-client-config-custom.xml file nella extension folder: <config> <client> <from-email-address>someone@your-domain.com </from-email-address> </client> </config>
  • 81. Configurazione log files <ul><li>I files di log sono posizionati nella <install_folder> . </li></ul><ul><li>Impostare una cartella di log modificando la property inserendo un path </li></ul><ul><li>log4j.appender.File.File=alfresco.log in tutti I file log4j.properties. </li></ul><ul><li>Tomcat application server crea un file di log al giorno. </li></ul><ul><li>Il log corrente è alfresco.log e alla fine del giorno viene fatto il backup come alfresco.log.YYYY-MM-DD (for example, alfresco.log.2006-09-18). </li></ul><ul><li>Si può configurare il file di log modificando il file Alfresco omcatwebappsalfrescoWEB-INFclasseslog4j.properties. </li></ul><ul><li>Si può impostare il livello di logging come info or debug or error in base all’ammontare delle informazioni desiderate (For example, log4j.logger.org.alfresco.web=info). </li></ul>
  • 82. Disabilitare l’archivio Documenti Per default tutti i documenti e le cartelle che non sono taggate con l’aspetto sys:temporary saranno archiviti al momento della cancellazione Se questa funzionalità non è richiesta, può essere disabilitata nel file togliendo la riga in “rosso”: Node-services-context.xml <!-- Map stores to archive stores --> <bean id=&quot;storeArchiveMap&quot; class=&quot;org.alfresco.repo.node.StoreArchiveMap&quot;> <property name=&quot;archiveMap&quot;> <map> <entry key=&quot;workspace://SpacesStore&quot;><value>archive://SpacesStore</value></entry> </map> </property> </bean>
  • 83. Server Configuration http://wiki.alfresco.com/wiki/Server_Configuration <ul><li>EXTENDED CONFIGURATION: </li></ul><ul><ul><li>ImageMagick Configuration </li></ul></ul><ul><ul><li>Full-Text Search Configuration </li></ul></ul><ul><ul><li>Transformations Configuration </li></ul></ul><ul><ul><li>Metadata Extraction Configuration </li></ul></ul><ul><ul><li>Aggiungere un Mime Type </li></ul></ul><ul><ul><li>Versioning </li></ul></ul><ul><ul><li>JMX </li></ul></ul>
  • 84. ImageMagick Configuration <ul><li>Installare ImageMagick </li></ul><ul><li>Puntare ImageMagick binaries nel path di sistema </li></ul><ul><li>rinominare l’eseguibile convert in imconvert per evitare un conflitto con Windows convert.exe </li></ul><ul><li>ImageMagick è una suite di programmi liberi per la modifica di immagini. </li></ul><ul><li>È distribuita con una licenza compatibile con la GPL, ed è disponibile su tutti i principali sistemi operativi. </li></ul><ul><li>Le funzioni di ImageMagick includono la creazione, la visualizzazione, la conversione da un formato all'altro, e le più svariate operazioni di modifica. </li></ul>
  • 85. Full-Text Search Configuration 1/2 <ul><li>dir.indexes=${dir.root}/lucene-indexes </li></ul><ul><li>dir.indexes.lock=${dir.indexes}/locks </li></ul><ul><li>The number of terms from a document that will be indexed # lucene.indexer.maxFieldLength=10000 </li></ul><ul><li>Atomic=&quot;true&quot; </li></ul><ul><li>true allora la proprietà è indicizzata nella transazione altrimenti in background. L’indicizzazione del contenuto che richiede una trasformazione prima di essereindicizzato (pdf) non osserva il “true”, viene sempre in background. </li></ul><ul><li>Tokenised=&quot;true&quot; </li></ul><ul><li>Se true, il valore viene tokenizzato prima di essere indicizzato; se false, è indicizzato &quot;as is&quot; come una singola stringa. </li></ul><ul><li>Il tokenizer è determinato dal property type nel data dictionary (Italiano, inglese) </li></ul>
  • 86. Full-Text Search <ul><li>Per default il contenuto in Alfresco è ricercabile in modalità full-text. </li></ul><ul><li>Ogni contenuto dei seguenti tipologie sarà convertito internamente in testo, indicizzato e ricercabile: </li></ul><ul><ul><li>Microsoft Office documents: MS Word, Excel, PowerPoint </li></ul></ul><ul><ul><li>Open Office documents </li></ul></ul><ul><ul><li>XML/HTML </li></ul></ul><ul><ul><li>PDF </li></ul></ul><ul><ul><li>Emails </li></ul></ul><ul><ul><li>Content in foreign languages </li></ul></ul>
  • 87. Full-Text Search <ul><li>Fare una ricerca su Alfresco è facile. Semplicemente inserire nel campo di ricerca i termini che descrivono l’informazione che si desidera, e premere enter. </li></ul><ul><li>Si può usare la sintassi Google-style: </li></ul><ul><li>Customer : ritorna tutti i documenti che contengono il testo “Customer&quot; (come file name o contenuto nel file) </li></ul><ul><li>-Customer : ritorna tutti i documenti che non contengono il testo &quot;Customer&quot; </li></ul><ul><li>Customer Alfresco : ritorna tutti i documenti che contengono &quot;Customer&quot; o &quot;Alfresco&quot;. Equivale a scrivere Customer +Alfresco </li></ul><ul><li>Customer –Alfresco : ritorna tutti I documenti che contengono &quot;Customer&quot; e non contengono &quot;Alfresco&quot; </li></ul><ul><li>* inter *: ritorna tutti i documenti che contengono &quot;inter&quot; come porzione qualsiasi di una parola come International. Wild card search. </li></ul>
  • 88. Search <ul><li>E’ più veloce cercare il contenuto tramite il nome di un file se si conosce il file name o porzione di esso. </li></ul><ul><li>Ci sono diverse opzioni di ricerca: </li></ul><ul><ul><li>All Items : cerca l’intero contenuto e tutte le proprietà </li></ul></ul><ul><ul><li>File names and contents : cerca l’intero contenuto e il nome del file </li></ul></ul><ul><ul><li>File names only : cerca solo il nome del file </li></ul></ul><ul><ul><li>Space names only : cerca solo il nome dello space </li></ul></ul>
  • 89. Limitare i risultati del Search <ul><li>Ti ricordi di aver mai cliccato fino alla pagina 10 di una pagina risultato di una ricerca? </li></ul><ul><li>Si possono limitare i risultati della ricerca customizzando il web‑client-config-custom.xml nella extension folder (<alfresco_install_folder> omcatsharedclassesalfrescoextension) . </li></ul><ul><li>Aggiungere dopo la prima linea <alfresco-config>. </li></ul><ul><ul><li><config> </li></ul></ul><ul><ul><li><client> </li></ul></ul><ul><ul><li><!-- Override the from email address --> </li></ul></ul><ul><ul><li><from-email-address>munwar@cignex.com</from-email-address> </li></ul></ul><ul><ul><li><!-- the minimum number of characters required for a valid </li></ul></ul><ul><ul><li>earch string --> </li></ul></ul><ul><ul><li><search-minimum>3</search-minimum> </li></ul></ul><ul><ul><li><!-- set this value to true to enable AND text terms for </li></ul></ul><ul><ul><li>simple/advanced search by default --> </li></ul></ul><ul><ul><li><search-and-terms>false</search-and-terms> </li></ul></ul><ul><ul><li><!-- Limit search results. -1 for unlimited. --> </li></ul></ul><ul><ul><li><search-max-results>100</search-max-results> </li></ul></ul><ul><ul><li></client> </li></ul></ul><ul><ul><li></config> </li></ul></ul>
  • 90. Limitare i risultati del Search <ul><ul><li>Best Practices </li></ul></ul><ul><li>L’opzione di ricerca booleana AND è disabilitata di default per migliorare le ricerche. </li></ul><ul><li>Restart Alfresco per rendere effettivi I cambi. </li></ul>
  • 91. Lucene queries
  • 92. Lucene queries Roster Questa ricerca non ritorna risultati per default, quando usando la ricerca per nodi, solo la full text è effettuata e sebbene il nome e la descrizione includono “roster”, il documento non contiene la stringa. Sample whitepaper Questa ricerca ritorna tutti e 3 I documenti perchè questa query è la stessa cosa di &quot;sample OR whitepaper&quot;. Sample AND whitepaper Ritorna solo sample-a.pdf e sample-b.pdf. E’ la stessa cosa di usare il più (&quot;+&quot;) come in +sample +whitepaper. L’operatore + richiede che un termine sia nel documento per esser eincluso
  • 93. Lucene queries -sample whitepaper Ritorna solo class roster. Il meno (&quot;-&quot;) specifica che il risultato non deve includere la parola &quot;sample&quot;. M?urice Ab* Lauren~ Riotrnano tutte class roster. (&quot;?&quot;) è un carattere jolly. L’asterisco (&quot;*&quot;) è un wildcard. Tilde (&quot;~&quot;) denota una fuzzy search—cerca parole similari. In questo caso &quot;Lauren&quot; to &quot;Loren&quot;. sample effective whitepaper sample^10 effective whitepaper Compara queste due ricerche.ritornano sample PDFs e class roster. Nella prima ricerca, class-roster.txt è mostrata al top della lista dei risultati. Nella seconda, il (&quot;^&quot;) carattere è usato per incrementare il peso del terminedi un fattore 10. Questo rende i PDFs più pesanti. Così si trovano al top della lista
  • 94. Ricerca Properties So far you've searched the full text of the sample documents, but what if you wanted to search against a specific property? To do that, use the at (&quot;@&quot;) symbol followed by the namepsace and property name, and then the search phrase. @cm:description:read This search returns both sample PDFs because both contain the word read in their description fields. @cm:description:(whitepaper -sample) This search shows a combination of a field-based search with the minus operator to return only the documents that have whitepaper, but not sample in their description property. In this case, the search returns only class-roster.txt. @sc:isActive:true Searches for custom properties work as well. This one returns documents where the SomeCo isActive property is set to true.
  • 95. Ricerca per prossimità Proximity Search If you need to find documents where two words appear within certain proximity of each other, you can use a proximity search. @cm:description:&quot;wonderful absorb&quot;~12
  • 96. Ricerca per range Properties can also be searched by range. @cm:created:[2008-07-01T00:00:00 TO 2008-07-22T00:00:00] returns the sample PDFs, but not the class roster. This is because at least for this particular sample set, the class roster was created on July 24, 2008. @cm:name:([clam TO dog]) Range searches work on strings as well. This search returns class-roster.txt, but neither of the sample Whitepapers.
  • 97. Report Usare le ricerche salvate come report Spesso c’è la necessità di ripetere una ricerca che soddisfi gli stessi criteri di ricerca. Invece di ripetere la selezione delle opzioni ogni volta è possibile salvare I criteri per riusare la ricerca così impostata. Si crea così un report personalizzato. Questo può essere “condiviso” con altri rendendo la ricerca salvata come “pubblica” . Altri report, possono essere considerati “privati” e saranno inseriti nella lista come report privati solo per l’owner
  • 98. Report – best practices Tutti i report (ricerche salvate) possono essere loclizzate in Company Home | Data Dictionary | Saved Searches space. Si possono riusare I criteri di ricerca salvati, selezionadoli dalla form Advanced Search.
  • 99. Trasformations Configuration 1/3 Alfresco permette la trasformazione di documenti tra diversi formati usando librerie di terze parti, come pdfbox e applicazioni come OpenOffice (running in modalità server-side). I default Content transformers sono dichiarati ed inizializzati in <configRoot>/alfresco/content-services-context.xml , ma le estensioni dovrebbero essere aggiunte come file extension <extension>/alfresco/extension/my-transformers-context.xml . Default transformers sono dichiarati nel package org.alfresco.repo.content.transform Usare javadocs per vedere gli effetti delle diverse impostazioni.
  • 100. Trasformations Configuration 2/3 Se è richiesta una trasformazione da mimetype X->Z ma sono disponibili solo X-Y e Y-Z, il transformation registry non assumerà automaticamente di effettuare le trasformazioni come catena di operazioni da fare. Le trasformazioni possono essere linkate, dichiarate manualmente usando ComplexContentTransformer.
  • 101. Trasformations Configuration 3/3 Estrarre il testo da PowerPoint non è possibile direttamente. Open Office può esportare PowerPoint come un PDF, e poi PDFBox project permette la conversione da PDF a text. <bean id=&quot;transformer.complex.OpenOffice.PdfBox&quot; class=&quot;org.alfresco.repo.content.transform.ComplexContentTransformer&quot; parent=&quot;baseContentTransformer&quot; > <property name=&quot;transformers&quot;> <list> <ref bean=&quot;transformer.OpenOffice&quot; /> <ref bean=&quot;transformer.PdfBox&quot; /> </list> </property> <property name=&quot;intermediateMimetypes&quot;> <list> <value>application/pdf</value> </list> </property> </bean>
  • 102. Aggiungere un Mime Type <ul><li>Ci sono due file che contengono le definizionie dei mimetype : </li></ul><ul><ul><li>mimetype-map.xml </li></ul></ul><ul><ul><li>mimetype-map-openoffice.xml </li></ul></ul><ul><li>Sono contenuti all’interno del alfresco.war->repository.jar e non dovrebbero essere editati direttamente. </li></ul><ul><li>Invece, si può fare un override del mimetypeConfigService bean in un extension file, quale <extension>/alfresco/extension/custom-services-context.xml. </li></ul>
  • 103. Configurazione del Versioning <ul><li>Out-of-the-box: il contenuto in Alfresco non è versionabile. </li></ul><ul><li>Il contenuto deve essere specificatamente marcato come versionabile via web e così viene creata la version history contenente uno shap-shot. </li></ul><ul><li>Se si vogliono tutti I contenuti versionabili dal momento della creazione è necessario modificare la definizione del dizionario del tipo di contenuto per includere il mandatory aspect Versionable. </li></ul><ul><ul><li><mandatory-aspects> </li></ul></ul><ul><ul><li> <aspect> </li></ul></ul><ul><ul><li>cm:versionable </li></ul></ul><ul><ul><li></aspect> </li></ul></ul><ul><ul><li></mandatory-aspects> </li></ul></ul><ul><li>Si può anche controllare quali tipi di contenuto versionare automaticamente e a quali no, applicando l’aspetto versinable a custom sub-type del cm:content. </li></ul>
  • 104. Auto Versioning Per default tutto il contenuto versionabile ha l’AUTO-Version attivo. Questo vuol dire che una nuova versione è creata nella history quando il contenuto è uploadato. L’Auto-Versioning segue le seguenti regole: La initialVersion indica che quando l’aspetto versionabile è applicato allora uno snapshot iniziale del nodo è preso a quel punto. autoVersion indica che quando avviene un cambio al contenuto del nodo, una nuova versiona sarà creata Questo può essere impostato a on o off per ottenere il comportamento desiderato. La caratteristica dell’auto-version può essere impostata a off anche per uno specifico contenuto agendo sulla proprietà via UI.
  • 105. Auto Versioning: contentModel.xml <aspect name=&quot;cm:versionable&quot;> <title>Versionable</title> <properties> <property name=&quot;cm:versionLabel&quot;> <title>Version Label</title> <type>d:text</type> <protected>true</protected> </property> <property name=&quot;cm:initialVersion&quot;> <title>Initial Version</title> <type>d:boolean</type> <default>false</default> </property> <property name=&quot;cm:autoVersion&quot;> <title>Auto Version</title> <type>d:boolean</type> <default> false </default> </property> </properties> </aspect>
  • 106. JMX Console Per default, i System Administrators possono riconfigurarre Alfresco spegnendo il server, editando I file cdi configurazione o proprerties quindi riaviando il server. Certe operazioni di supporto dovrebbero poter essere effettuate on demand a runtime senza la necessità di riavviare il server. Per esempio dovrebbe essere possibile cambiare temporaneamente il livelli dei log per debuggare il sistema.
  • 107. JMX Console <ul><li>http://wiki.alfresco.com/wiki/JMX </li></ul><ul><ul><li>JSR-160 support </li></ul></ul><ul><ul><li>cambiare log levels (eg. turn debug on/off) </li></ul></ul><ul><ul><li>enable/disable file servers (FTP/CIFS/NFS) </li></ul></ul><ul><ul><li>server read-only mode </li></ul></ul><ul><ul><li>server single-user mode </li></ul></ul><ul><ul><li>server max user limit - including ability to prevent further logins </li></ul></ul><ul><ul><li>user session/ticket count </li></ul></ul><ul><ul><li>user session/ticket invalidation </li></ul></ul>
  • 108. JMX Console <ul><li>Ogni cambio fatto con l’interfaccia JMX sono transitorie, ad esempio si può cambiare il livello dei log temporaneamente. </li></ul><ul><li>Quindi tutti questi cambi andarnno persi quando il server riparte. </li></ul><ul><li>Se alcuni di questi cambi dinamici necessitano di essere persistenti (così da sopravvivere al restar del server) allora dovrebbero essere applicati ai file di configurazione. </li></ul><ul><li>Per esempio: </li></ul><ul><ul><li>log level change - edit log4j.properties on the classpath </li></ul></ul><ul><ul><li>max users - edit custom repository properties file (server.maxusers property) </li></ul></ul><ul><ul><li>singe-user mode - edit custom repository properties file (server.singleuseronly.name property) </li></ul></ul><ul><ul><li>read-only mode - edit custom transaction properties file (server.transaction.allow-writes property) </li></ul></ul><ul><ul><li>disable/enable file servers (FTP/CIFS/NFS) - edit custom file servers config xml file </li></ul></ul>
  • 109. Altre Configurazioni <ul><li>Altre configurazioni non incluse in questa presentazione </li></ul><ul><li>EXTENDED CONFIGURATION: </li></ul><ul><ul><li>Cluster </li></ul></ul><ul><ul><li>Active Directory, LDAP </li></ul></ul><ul><ul><li>High Availability </li></ul></ul><ul><ul><li>JBPM </li></ul></ul><ul><ul><li>Cambio delle porte di default </li></ul></ul>
  • 110. Backup Il Backup di un repository Alfresco deve prevedere il backup delle directory puntate dalla dir.root e quelle che vengono usate dal database. Fare il backup dei uno senza gli altri fa si che il backup non potrà essere restorato. dir.root directory è definita in <configRoot>/alfresco/extension/custom-repository.properties. Per default questa directory è nominata alf_data ed è locata nella directory di installazione di Alfresco. Backup del database Backup degli indici Backup dei documenti Backup applicativo Sistema di configuration management
  • 111. Backup <ul><li>Per default, la dir.root contiene sia il contenuto che gli indici così per un backup a freddo è possibile effettuare il solo contenuto e fare una reindicizzazione quando il backup è effettuato. </li></ul><ul><li>BestPractice: una completa rindicizzazione può impiegare parecchio tempo , meglio includere gli indici nel backup: </li></ul><ul><li>Stop Alfresco. </li></ul><ul><ul><li>Backup il database a cui alfresco punta Alfresco, usando il tool del database. </li></ul></ul><ul><ul><li>Backup Alfresco dir.root directory nella sua interezza </li></ul></ul><ul><ul><li>Memorizza database e Alfresco dir.root backups insieme. </li></ul></ul><ul><li>Start Alfresco. </li></ul>
  • 112. Backup – Best Practice La possibilità di effettuare un backup a caldo dipende dalle capacità del database e dalla possibilità di quest’ultimo con un tool che può effettuare uno &quot;snapshot“ consistente di Alfresco database (transactionally consistent copy of all of the tables in the Alfresco database) Non eseguire mai, il backup della sottodirectory degli indici di lucene mentre Alfresco è Running. Fare questo è causa della corruzione degli indici di Lucene. Alfresco include un background job responsabile del backup degli indici che per default è configurato per essere eseguito alle 3am di ogni notte. L’hot backup process must not run concurrently with this background job, so you should either ensure that the hot backup completes by 3am, or wait until the index backup job has completed before initiating a hot backup.
  • 113. Restore <ul><li>Stop Alfresco. </li></ul><ul><li>Copia la dir.root esistente in una cartella temporanea. </li></ul><ul><li>Restore dir.root. </li></ul><ul><li>If you are restoring from a hot backup, rename dir.root/backup_lucene_index to dir.root/lucene-indexes. </li></ul><ul><li>Restore the database from the database backups. </li></ul><ul><li>Start Alfresco. </li></ul>
  • 114. Restore – Best Practice <ul><li>Alfresco per default controlla se gli indici sono “datati” ed effettua una reindicizzazione incrementale partendo dall’ultimo backup se il contenuto è cambiato. </li></ul><ul><li>Notevole risparmio di tempo su grandi repository, effettuando la reindicizzazione parziali rispetto a quella totale. </li></ul><ul><li>Nota importante: per la reindicizzazione incrementale bisogna impostare la proprietà index.recovery.mode a &quot;AUTO&quot; o lasciarlo al suo valore di default &quot;VALIDATE&quot;. </li></ul><ul><li>Settare questa proprietà a &quot;FULL&quot; forza una full reindex anche se l’incrementale fosse possibile. </li></ul>
  • 115. Maintenance – Best Practice Quando viene cancellato un item (contenuto o space) in Alfresco, l’item non sarà cancellato dal server, ma sarà spostato in una cartella temporanea chiamata archive space store. Questo da una opportunità di recover il contenuto cancellato Gli item cancellati (nella cartella temporanea, consumano spazio, quindi è buona pratica pulire periodicamente la cartella. Questi item non potranno più essere recuperati. E’ raccomandabile un backup regolare dei propri dati.
  • 116. Web Services <ul><ul><ul><li>Web scripts sono una delle più interessanti aggiunte all’architettura di Alfresco. </li></ul></ul></ul><ul><ul><ul><li>Next Generation Internet (NGI) o Web 2.0 è construita su servizi RESTful . </li></ul></ul></ul><ul><ul><ul><li>La ragione è che I servizi RESTFul sono tipicamente molto più facili da lavorare usando linguaggi di scripting e toolkit Ajax piuttosto che servizi SOAP-based, perchè sono invocati attraverso semplici URL. </li></ul></ul></ul><ul><ul><ul><li>Quando un repository ha una interfaccia Restful è molto più facile integrarlo in una soluzione NGI. </li></ul></ul></ul><ul><ul><ul><li>Il Web Script framework, basato sul pattern Model- view – Control (MVC) permette di costruire le API Restful al repository. </li></ul></ul></ul>
  • 117. REST <ul><ul><ul><li>REST sta per Representational State Transfer. </li></ul></ul></ul><ul><ul><ul><li>Il Framework Web Script è stato introdotto dalla versione 2.1 </li></ul></ul></ul><ul><ul><ul><li>REST descrive uno stile architetturale per interazioni basate su semplpici URL-based richieste e risposte su HTTP. </li></ul></ul></ul><ul><ul><ul><li>Web scripts stanno diventando velocemente il metodo preferito di integrazione tra frontend e backend con Alfresco, particolarmente per portali o siti web dinamici. </li></ul></ul></ul>
  • 118. REST <ul><ul><ul><li>Vedremo come </li></ul></ul></ul><ul><ul><ul><li>Scrivere web scripts che creano, leggono o cancellano dati nel repository di backend e ritornano risposte in HTML, XML, e JSON (è un modo per descrivere JavaScript objects come text invece del più verboso XML) </li></ul></ul></ul><ul><ul><ul><li>Usare sia JavaScript e Java per scrivere la &quot;controller&quot; logic </li></ul></ul></ul><ul><ul><ul><li>Fare chiamate asynchronous JavaScript (AJAX) ai web scripts </li></ul></ul></ul><ul><li>Storicamente c’erano due approcci per interagire con Alfresco attraverso servizi: </li></ul><ul><li>SOAP-based Web Services e REST. </li></ul><ul><li>Alfresco ha avuto SOAP-based Web Services API disponibili per abbastanza tempo, ma i serivizi SOAP-based prendono troppo tempo per svilupparli e bisogna prevedere requisiti pesanti lato client rispetto ai servizi RESTful. </li></ul>
  • 119. MVC <ul><ul><ul><li>Il Framework Web Script rende facile seguire il pattern Model-View-Controller (MVC). </li></ul></ul></ul><ul><ul><ul><li>Il controller è JavaScript server-side, un Java Bean, o entrambi. </li></ul></ul></ul><ul><ul><ul><li>Il controller cattura la request, effettua la business logic che è necessaria, popola il modello con i dati, e quindi effettua il forward della request alla view. </li></ul></ul></ul><ul><ul><ul><li>La view è costituita da uno o più template FreeMarker responsabili di costruire una response nel formato appropriato. </li></ul></ul></ul><ul><ul><ul><li>Il modello è essenzialmente una struttura dati che viene passata dal controller alla view. </li></ul></ul></ul><ul><ul><ul><li>Il mapping della URL al controller è fatto attraverso un XML descriptor, se lo script richiede una transazione o no, e i requisiti di autenticazione. </li></ul></ul></ul><ul><ul><ul><li>Il descriptor opzionalmente descrive argomenti che possono essere passati allo scrip così come i formati di risposta disponibili. </li></ul></ul></ul>
  • 120. Costruire soluzioni con Web script <ul><ul><ul><li>Si possono usare I web script per: </li></ul></ul></ul><ul><ul><ul><li>Abilitare una applicazione di front end scritta in qualsiasi linguaggio che colloquia in http per ricevere dati dal repository in XML, JSON, o ogni altro formato </li></ul></ul></ul><ul><ul><ul><li>Popolare JSR-168 portlets senza coding Java a differenza delle portlet API </li></ul></ul></ul><ul><ul><ul><li>Catturare e salvare contenuto/dati firniti dagli utenti </li></ul></ul></ul><ul><ul><ul><li>Interagire con business process (jBPM workflow) attraverso cliente con interfaccia non-web quali email </li></ul></ul></ul><ul><ul><ul><li>Creare ATOM o RSS feeds per il contenuto </li></ul></ul></ul><ul><ul><ul><li>Decomporre il web client esistente in più piccoli componenti </li></ul></ul></ul><ul><ul><ul><li>Alfresco 3.0 Share client è interamente basato sui web scripts </li></ul></ul></ul>
  • 121. <ul><li>Visita il nostro sito </li></ul><ul><li>http://www.4it.it </li></ul>

×