<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Smart folders tutorial - seconda parte in Alfresco Archive</title>
    <link>https://connect.hyland.com/t5/alfresco-archive/smart-folders-tutorial-seconda-parte/m-p/159394#M113428</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Nella &lt;A _jive_internal="true" href="https://community.alfresco.com/groups/italian-user-group/blog/2016/11/14/smart-folders-tutorial-parte-1" rel="nofollow noopener noreferrer"&gt;prima parte dell'articolo&lt;/A&gt;, abbiamo parlato di smart-folders di tipo &lt;STRONG&gt;&lt;EM&gt;System&lt;/EM&gt;&lt;/STRONG&gt; e &lt;STRONG&gt;&lt;EM&gt;Custom&lt;/EM&gt;&lt;/STRONG&gt;... che sono molto versatili ma hanno il "difetto" di dover essere attribuite manualmente ad ogni cartella. In molti scenari questa potrebbe rivelarsi una limitazione pesante.&lt;/P&gt;&lt;P&gt;Le smart-folders &lt;STRONG&gt;&lt;EM&gt;type-based&lt;/EM&gt;&lt;/STRONG&gt; sono pensate per aggirare questo ostacolo. Ci permettono infatti di attribuire un &lt;EM&gt;template&lt;/EM&gt; ad una cartella se questa è di un certo tipo o se ha un certo aspetto.&lt;/P&gt;&lt;P&gt;Il procedimento da seguire è un po' più complesso dei casi precedenti... ma con un po' di pazienza non sarà difficile padroneggiarlo.&lt;/P&gt;&lt;P&gt;L'esempio che vorrei illustrarvi è una (banale) gestione di una raccolta di &lt;EM&gt;ebook&lt;/EM&gt;. Per semplificare il dominio dei dati, diciamo che:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;i romanzi che prenderemo in considerazione saranno solo di tipo: &lt;EM&gt;Storico&lt;/EM&gt;, &lt;EM&gt;Fantasy&lt;/EM&gt; o &lt;EM&gt;Thriller&lt;/EM&gt; (con buona pace degli amanti della lettura...)&lt;/LI&gt;&lt;LI&gt;ogni libro avrà un proprietario&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;Decidiamo di usare Alfresco per organizzare la nostra libreria... ma siamo troppo pigri per metterci a catalogare a mano ogni libro. Vorremmo semplicemente fare l'upload di un ebook e delegare ad Alfresco il lavoro sporco (la classificazione).&lt;/P&gt;&lt;P&gt;Le &lt;EM&gt;smart-folders&lt;/EM&gt; &lt;STRONG&gt;&lt;EM&gt;type-based&lt;/EM&gt;&lt;/STRONG&gt; sono esattamente quello di cui abbiamo bisogno.&lt;/P&gt;&lt;P&gt;I passi che seguiremo sono questi:&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;creeremo un nuovo &lt;EM&gt;custom model&lt;/EM&gt;&lt;/LI&gt;&lt;LI&gt;creeremo un template di smart-folders&lt;/LI&gt;&lt;LI&gt;configureremo Alfresco in modo opportuno&lt;/LI&gt;&lt;LI&gt;attribuiremo il template ad una cartella... e faremo qualche prova&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;&lt;/P&gt;&lt;H2&gt;1. Il model&lt;/H2&gt;&lt;P&gt;Partiamo dal primo punto cioè la creazione del modello.&lt;/P&gt;&lt;P&gt;Facciamola semplice (&lt;EM&gt;Keep It Simple, Stupid!&lt;/EM&gt;&lt;span class="lia-unicode-emoji" title=":disappointed_face:"&gt;😞&lt;/span&gt; useremo solo un &lt;EM&gt;custom type&lt;/EM&gt; che modellerà il nostro ebook e un &lt;EM&gt;aspetto&lt;/EM&gt; che ci servirà per attribuire le smart-folders ad una cartella:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;il type lo chiameremo &lt;EM&gt;bib:ebook&lt;/EM&gt; ed avrà due properties:&lt;UL&gt;&lt;LI&gt;&lt;EM&gt;bib:argomento&lt;/EM&gt; (che potrà assumere un valore tra &lt;EM&gt;Storico&lt;/EM&gt;, &lt;EM&gt;Fantasy&lt;/EM&gt; e &lt;EM&gt;Thriller&lt;/EM&gt;)&lt;/LI&gt;&lt;LI&gt;&lt;EM&gt;bib&lt;img id="smileytongue" class="emoticon emoticon-smileytongue" src="https://connect.hyland.com/i/smilies/16x16_smiley-tongue.png" alt="Smiley Tongue" title="Smiley Tongue" /&gt;roprietario&lt;/EM&gt; (testo libero)&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;LI&gt;l'aspect avrà nome &lt;EM&gt;bib:biblioSmartFolders&lt;/EM&gt; e avrà una sola proprietà testuale:&lt;UL&gt;&lt;LI&gt;&lt;EM&gt;bib&lt;img id="smileytongue" class="emoticon emoticon-smileytongue" src="https://connect.hyland.com/i/smilies/16x16_smiley-tongue.png" alt="Smiley Tongue" title="Smiley Tongue" /&gt;roprietariodefault&lt;/EM&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;Vi allego il model già bello e pronto in modo da risparmiarvi la fatica(?!) di doverlo ricreare da zero (comunque non è niente di trascendentale).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;H2&gt;2. Il template&lt;/H2&gt;&lt;P&gt;Il secondo passo è creare un &lt;EM&gt;template&lt;/EM&gt; di smart-folders. Se avete letto la &lt;A _jive_internal="true" href="https://community.alfresco.com/groups/italian-user-group/blog/2016/11/14/smart-folders-tutorial-parte-1" rel="nofollow noopener noreferrer"&gt;prima parte del tutorial&lt;/A&gt; sapete già di cosa stiamo parlando: un file &lt;EM&gt;json&lt;/EM&gt; con una sintassi ben definita che descrive un albero di virtual-folders e il loro contenuto. Quello che vedremo tra un paio di righe è un po' più complicato di quello usato in precedenza.&lt;/P&gt;&lt;P&gt;L'albero di directory che vogliamo realizzare è questo:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;Archivio&lt;UL&gt;&lt;LI&gt;Romanzi&lt;/LI&gt;&lt;LI&gt;Storico&lt;/LI&gt;&lt;LI&gt;Fantasy&lt;/LI&gt;&lt;LI&gt;&amp;nbsp;Thriller&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;LI&gt;Proprietari&lt;UL&gt;&lt;LI&gt;Sconosciuto&lt;/LI&gt;&lt;LI&gt;David&lt;/LI&gt;&lt;LI&gt;Chiara&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;La directory &lt;EM&gt;archivio&lt;/EM&gt; è una directory tradizionale(!) e conterrà i file degli ebook. &lt;EM&gt;Romanzi&lt;/EM&gt; e &lt;EM&gt;Proprietari&lt;/EM&gt; (e le rispettive sottocartelle) sono invece virtual-folders e sono costruite dinamicamente da Alfresco.&lt;/P&gt;&lt;P&gt;Alla fine del tutorial, quando inseriremo un nuovo ebook nella directory &lt;EM&gt;Archivio&lt;/EM&gt;, lo troveremo (magicamente) anche sotto &lt;EM&gt;Romanzi&lt;/EM&gt; e &lt;EM&gt;Proprietari&lt;/EM&gt;, correttamente classificato nella giusta sottocartella.&lt;/P&gt;&lt;P&gt;Passiamo al codice. Per non allungare troppo il post, riporto solo le parti più interessanti (il &lt;EM&gt;template&lt;/EM&gt; completo lo trovate, per vostra comodità, allegato all'articolo):&lt;/P&gt;&lt;PRE class="language-javascript line-numbers"&gt;&lt;CODE&gt;&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN class="string token"&gt;"id"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt;&lt;SPAN class="string token"&gt;"2"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN class="string token"&gt;"name"&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"Proprietari"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN class="string token"&gt;"description"&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"Romanzi per proprietario"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN class="string token"&gt;"nodes"&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="string token"&gt;"id"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt;&lt;SPAN class="string token"&gt;"21"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="string token"&gt;"name"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt;&lt;SPAN class="string token"&gt;"Sconosciuto"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="string token"&gt;"description"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt;&lt;SPAN class="string token"&gt;"Proprietario sconosciuto"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="string token"&gt;"search"&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="string token"&gt;"language"&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"fts-alfresco"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="string token"&gt;"query"&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"+TYPE:'bib:ebook' AND PATH:'%ACTUAL_PATH%/cm:Archivio/*' AND =bib:proprietario:'Sconosciuto'"&lt;/SPAN&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt; segue codice simile per altri proprietari&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Se avete letto la prima parte dell'articolo, non dovreste avere difficoltà nel capire lo scopo di questa porzione di json:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;generare un cartella virtuale di nome "proprietari" e una sottocartella (sempre virtuale) di nome "Sconosciuto"&lt;/LI&gt;&lt;LI&gt;attribuire alla cartella "Sconosciuto" i documenti di tipo &lt;EM&gt;bib:ebook&lt;/EM&gt;, con metadato &lt;EM&gt;bib&lt;img id="smileytongue" class="emoticon emoticon-smileytongue" src="https://connect.hyland.com/i/smilies/16x16_smiley-tongue.png" alt="Smiley Tongue" title="Smiley Tongue" /&gt;roprietario&lt;/EM&gt; uguale a "Sconosciuto", contenuti nella cartella "%ACTUAL_PATH%/cm:Archivio".&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;EM&gt;%ACTUAL_PATH%&lt;/EM&gt; è una variabile che viene sostituita da Alfresco con il path assoluto della cartella che contiene le smart-folders. In precedenza abbiamo già incontrato (e usato) un'altra variabile: &lt;EM&gt;%CURRENT_USER%&lt;/EM&gt; che invece rappresentava l'utente corrente.&lt;/P&gt;&lt;P&gt;E questa era la parte facile... vediamo un altro frammento di codice:&lt;/P&gt;&lt;PRE class="language-javascript line-numbers"&gt;&lt;CODE&gt;&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN class="string token"&gt;"nodes"&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="string token"&gt;"id"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt;&lt;SPAN class="string token"&gt;"1"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="string token"&gt;"name"&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"Romanzi"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="string token"&gt;"description"&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"Romanzi"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="string token"&gt;"nodes"&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="string token"&gt;"id"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt;&lt;SPAN class="string token"&gt;"11"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="string token"&gt;"name"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt;&lt;SPAN class="string token"&gt;"Storici"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="string token"&gt;"description"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt;&lt;SPAN class="string token"&gt;"Romanzi storici"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="string token"&gt;"search"&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="string token"&gt;"language"&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"fts-alfresco"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="string token"&gt;"query"&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"+TYPE:'bib:ebook' AND PATH:'%ACTUAL_PATH%/cm:Archivio/*' AND =bib:classificazione:'Storico'"&lt;/SPAN&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="string token"&gt;"filing"&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="string token"&gt;"path"&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"%ACTUAL_PATH%/cm:Archivio"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="string token"&gt;"classification"&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="string token"&gt;"type"&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"bib:ebook"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="string token"&gt;"aspects"&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="string token"&gt;"properties"&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="string token"&gt;"bib:classificazione"&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"Storico"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="string token"&gt;"bib:proprietario"&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"&amp;lt;bib:proprietariodefault&amp;gt;"&lt;/SPAN&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;segue codice simile ripetuto per i generi &lt;SPAN class="string token"&gt;"Fantasy"&lt;/SPAN&gt; e &lt;SPAN class="string token"&gt;"Thriller"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Quella che vedete è la definizione delle virtual-folders:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;Romanzi&lt;UL&gt;&lt;LI&gt;Storici&lt;/LI&gt;&lt;LI&gt;...&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;Leggendo la query possiamo capire qual è il contenuto della cartella &lt;EM&gt;Storici&lt;/EM&gt;: i soli nodi di tipo &lt;EM&gt;bib:ebook&lt;/EM&gt; che abbiano classificazione "Storico" e che siano contenuti nella cartella &lt;EM&gt;%ACTUAL_PATH%/cm:Archivio&lt;/EM&gt;.&lt;/P&gt;&lt;P&gt;Rispetto al caso precedente, c'è una "novità": il blocco &lt;EM&gt;filing&lt;/EM&gt;, di cui dobbiamo parlare più a lungo.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;H3&gt;2.1. filing&lt;/H3&gt;&lt;P&gt;Il &lt;EM&gt;filing&lt;/EM&gt; ci permette di eseguire l'upload di nuovi documenti in una smart-folders.&lt;/P&gt;&lt;P&gt;«Ma...» potreste obiettare «non ha senso! Hai detto fino ad ora che le smart-folders sono contenitori virtuali... dove vanno a finire i documenti? ».&lt;/P&gt;&lt;P&gt;Il dubbio è più che leggittimo... e in effetti c'è un trucco.&lt;/P&gt;&lt;P&gt;Se esaminate il contenuto del blocco &lt;EM&gt;filing&lt;/EM&gt; vedrete che è diviso in tre parti:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;EM&gt;path&lt;/EM&gt;: specifica la destinazione dell'upload&lt;/LI&gt;&lt;LI&gt;&lt;EM&gt;classification&lt;/EM&gt;: indica quale tipo e quali aspetti attribuire al documento&lt;/LI&gt;&lt;LI&gt;&lt;EM&gt;properties&lt;/EM&gt;: come valorizzarne i metadati&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;Un po' confuso? Diciamolo con parole più semplici: se provate a fare l'upload di un documento in una smart-folder, vi ritroverete quel documento nella cartella che avete specificato in &lt;EM&gt;path&lt;/EM&gt;, con il tipo/aspetto che avete indicato in &lt;EM&gt;classification&lt;/EM&gt; e con le proprietà valorizzate come indicato in &lt;EM&gt;properties&lt;/EM&gt;.&lt;/P&gt;&lt;P&gt;In pratica, nel nostro esempio, il documento finirà nella cartella &lt;EM&gt;Archivio&lt;/EM&gt;, avrà il tipo &lt;EM&gt;ebook&lt;/EM&gt; e saranno valorizzati i suoi due metadati &lt;EM&gt;classificazione&lt;/EM&gt; e &lt;EM&gt;proprietario&lt;/EM&gt;. Il primo avrà il valore fisso "Storico", il secondo erediterà il contenuto da &amp;lt;&lt;EM&gt;bib&lt;img id="smileytongue" class="emoticon emoticon-smileytongue" src="https://connect.hyland.com/i/smilies/16x16_smiley-tongue.png" alt="Smiley Tongue" title="Smiley Tongue" /&gt;roprietariodefault&amp;gt;&lt;/EM&gt; della cartella padre (notate che il nome della property è racchiuso tra apici).&lt;/P&gt;&lt;P&gt;Forte no?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;H2&gt;3. Configurazione di Alfresco&lt;/H2&gt;&lt;P&gt;A questo punto siamo quasi pronti. Dobbiamo solo dire ad Alfresco come e quando utilizzare il nostro &lt;EM&gt;template&lt;/EM&gt;.&lt;/P&gt;&lt;P&gt;Per prima cosa nel file &lt;EM&gt;alfresco-global.properties&lt;/EM&gt; bisogna creare la seguente riga:&lt;/P&gt;&lt;DIV class="line"&gt;&lt;PRE class="language-none line-numbers"&gt;&lt;CODE&gt;smart.folders.config.type.templates.qname.filter=bib:biblioSmartFolders‍‍‍‍‍‍&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;SPAN class="plain text"&gt;&lt;SPAN class="paragraph meta text"&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;P&gt;Come potete vedere la property è stata valorizzata con il nome dell'aspect che abbiamo creato nel primo paragrafo.&lt;/P&gt;&lt;P&gt;Caricate poi il template in "&lt;EM&gt;repository/dizionario dei dati/modelli cartelle intelligenti&lt;/EM&gt;". Attenzione! Il nome del file è importante! Deve corrispondere al valore della proprietà settata in precedenza, con un underscore al posto dei due punti. Nel nostro caso dovreste chiamarlo: &lt;EM&gt;bib_biblioSmartFolders.json&lt;/EM&gt;.&lt;/P&gt;&lt;P&gt;Riavviate Alfresco per fargli recepire le nuove impostazioni... e voilà... siete pronti per usare le vostre smart-folders. D'ora in poi, ogni volta che una cartella avrà l'aspect &lt;EM&gt;bib:biblioSmartFolders&lt;/EM&gt;, erediterà il template.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;H2&gt;4. In action!&lt;/H2&gt;&lt;P&gt;Abbiamo preparato tutto... è ora di fare delle prove!&lt;/P&gt;&lt;P&gt;Per convenienza creiamo un nuovo sito di nome (ad esempio) &lt;EM&gt;test-smart-folders&lt;/EM&gt;. Nella &lt;EM&gt;documentLibrary&lt;/EM&gt; create una cartella di nome &lt;EM&gt;Biblioteca&lt;/EM&gt; e in essa un'altra di nome &lt;EM&gt;Archivio&lt;/EM&gt;. Nel menu delle azioni di destra della cartella &lt;EM&gt;Biblioteca&lt;/EM&gt; selezionate "segue" e poi "Gestisci aspetti". Cercate l'aspect di nome "Biblioteca (bib:biblioSmartFolders)" e associatelo.&lt;/P&gt;&lt;P&gt;Ora, sempre dalle azioni a destra, selezionate "Modifica proprietà" poi "Tutte le proprietà". In basso vedrete comparire un nuovo campo di nome "Proprietario di default". Scrivete "Sconosciuto" nella casella di testo e salvate.&lt;/P&gt;&lt;P&gt;Se aprite la cartella &lt;EM&gt;Proprietari&lt;/EM&gt; vedrete che al suo interno sono comparse delle smart-folders (le riconoscete dall'icona con la lente di ingrandimento):&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;Proprietari&lt;UL&gt;&lt;LI&gt;Sconosciuto&lt;/LI&gt;&lt;LI&gt;Chiara&lt;/LI&gt;&lt;LI&gt;David&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;LI&gt;Romanzi&lt;UL&gt;&lt;LI&gt;Storici&lt;/LI&gt;&lt;LI&gt;Fantasy&lt;/LI&gt;&lt;LI&gt;Thriller&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;Sono (ma guarda!) esattamente le cartelle che abbiamo definito nel template... Ma per ora sono vuote.&lt;/P&gt;&lt;P&gt;Provate a prendere un vostro ebook (supponiamo che sia "La bussola d'oro.pdf") e a caricarlo nella cartella "Romanzi/Fantasy". Sembrerà che non succeda nulla... ma se vi spostate nella cartella &lt;EM&gt;Archivio&lt;/EM&gt; vedrete che il vostro file è lì e se controllate scoprirete che è di tipo &lt;EM&gt;bib:ebook&lt;/EM&gt; e ha i metadati &lt;EM&gt;classificazione&lt;/EM&gt; e &lt;EM&gt;proprietario&lt;/EM&gt; valorizzati rispettivamente con "Fantasy" e "Sconosciuto".&lt;/P&gt;&lt;P&gt;Tornate ora nella cartella "Romanzi/Fantasy"... lo stesso ebook è presente anche lì (se non lo trovate aspettate qualche secondo per dare la possibilità a Solr di indicizzarlo).&lt;/P&gt;&lt;P&gt;Controllate anche la cartella "Proprietari/Sconosciuto"... dovreste trovare di nuovo lo stesso file!&lt;/P&gt;&lt;P&gt;Ora provate a modificare il metadato &lt;EM&gt;Proprietario&lt;/EM&gt; settandolo a "David". Dopo qualche secondo il file dovrebbe sparire dalla cartella "Proprietari/Sconosciuto" e spostarsi in "Proprietari/David".&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;H3&gt;Conclusioni&lt;/H3&gt;&lt;P&gt;Le smart-folders sicuramente hanno grandi potenzialità... Ma in Alfresco sono state incluse da pochissimo, ed è ancora un po' presto per dire quanto e come saranno recepite dagli utenti. Ci saranno problemi di performance? Si riveleranno alla fine poco versatili (almeno nella loro forma attuale)?&lt;/P&gt;&lt;P&gt;Ci tocca aspettare per saperlo (ma intanto iniziate ad utilizzarle!).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="text-align: right;"&gt;(&lt;A _jive_internal="true" href="https://community.alfresco.com/groups/italian-user-group/blog/2016/11/14/smart-folders-tutorial-parte-1" rel="nofollow noopener noreferrer"&gt;Smart folders tutorial - prima parte&lt;/A&gt;)&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 07 Dec 2016 12:09:20 GMT</pubDate>
    <dc:creator>davidciamberlan</dc:creator>
    <dc:date>2016-12-07T12:09:20Z</dc:date>
    <item>
      <title>Smart folders tutorial - seconda parte</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/smart-folders-tutorial-seconda-parte/m-p/159394#M113428</link>
      <description>Nella prima parte dell'articolo, abbiamo parlato di smart-folders di tipo System e Custom... che sono molto versatili ma hanno il "difetto" di dover essere attribuite manualmente ad ogni cartella. In molti scenari questa potrebbe rivelarsi una limitazione pesante.Le smart-folders type-based sono pen</description>
      <pubDate>Wed, 07 Dec 2016 12:09:20 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/smart-folders-tutorial-seconda-parte/m-p/159394#M113428</guid>
      <dc:creator>davidciamberlan</dc:creator>
      <dc:date>2016-12-07T12:09:20Z</dc:date>
    </item>
  </channel>
</rss>

