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.
4.
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.
7.
8.
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 " Auto-discovery " 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.
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.
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.
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.
36.
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="FullControl“ authority="ROLE_ADMINISTRATOR"/> <!-- For now, owners can always see, find and manipulate their stuff --> <globalPermission permission="FullControl" authority="ROLE_OWNER"/> <!-- Unlock is granted to the lock owner --> <globalPermission permission="Unlock" authority="ROLE_LOCK_OWNER"/> <!-- Check in is granted to the lock owner --> <globalPermission permission="CheckIn" authority="ROLE_LOCK_OWNER"/> <!-- Cancel check out is granted to the locak owner --> <globalPermission permission="CancelCheckOut" authority="ROLE_LOCK_OWNER"/>
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 "X“, ed è editore degli space "Y“ e "Z". 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 "Sales" e "Finance" 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.
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.
46.
47.
48.
49.
50.
51.
52.
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.
56.
57.
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.
60.
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("Intranet/Marketing Communications/Website Documents/Staging"); var productionFolder = companyhome.childByNamePath("Intranet/Marketing Communications/Website Documents/Production"); 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["cm:from"] <= 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 = "12345 " + document.properties.name; document.save(); / modifcare il contenuto appendendo una stringa alla fine document.content = content + "Here is another line added from a script!“ // creare una cartella nello stesso space var folderNode = space.createFolder(docname + " - added by script"); // 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("cm:translatable");
66.
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="false" dovunnque nello stack l’auditing sarà disabled. L’audit configuration file è <configRoot>uditConfig.xml.
68.
69.
70.
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. "add a simple workflow" ad un document quando è inserito in una cartella Quando un ocumento ha un simple workflow significa che ha un "forward step“ e un "backward step“ ad esempio "Approve“ e "Reject". Quando uno step è invocato il contenuto può esser copiato o spostato in una altra cartella. Per esempio ci potrebbero essere cartelle chiamate "Draft",”In Review", e "Approved". Lo stato del documento è determinato dalla cartella in cui si trova.
72.
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.
75.
76. Repository Configuration repository.properties AlfrescoomcatebappslfrescoEB-INFlasseslfresco 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.
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.
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="storeArchiveMap" class="org.alfresco.repo.node.StoreArchiveMap"> <property name="archiveMap"> <map> <entry key="workspace://SpacesStore"><value>archive://SpacesStore</value></entry> </map> </property> </bean>
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 "sample OR whitepaper". Sample AND whitepaper Ritorna solo sample-a.pdf e sample-b.pdf. E’ la stessa cosa di usare il più ("+") 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 ("-") specifica che il risultato non deve includere la parola "sample". M?urice Ab* Lauren~ Riotrnano tutte class roster. ("?") è un carattere jolly. L’asterisco ("*") è un wildcard. Tilde ("~") denota una fuzzy search—cerca parole similari. In questo caso "Lauren" to "Loren". 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 ("^") 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 ("@") symbol followed by the namepsace and property name, and then the search phrase. @cmdescription:read This search returns both sample PDFs because both contain the word read in their description fields. @cmdescription:(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. @scisActive: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. @cmdescription:"wonderful absorb"~12
96. Ricerca per range Properties can also be searched by range. @cmcreated:[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. @cmname:([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="transformer.complex.OpenOffice.PdfBox" class="org.alfresco.repo.content.transform.ComplexContentTransformer" parent="baseContentTransformer" > <property name="transformers"> <list> <ref bean="transformer.OpenOffice" /> <ref bean="transformer.PdfBox" /> </list> </property> <property name="intermediateMimetypes"> <list> <value>application/pdf</value> </list> </property> </bean>
102.
103.
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.
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.
108.
109.
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.
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 "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.
114.
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.