Ricerca documenti di un gruppo tramite query Lucene

cancel
Showing results for 
Search instead for 
Did you mean: 
toxkras
Member II

Ricerca documenti di un gruppo tramite query Lucene

Ciao,
volevo sapere come posso ottenere tutti i documenti all'interno di un site a cui possono avere accesso gli utenti di uno specifico gruppo.
Ho provato con la seguente query da Node Browser:
<blockcode>
TYPE:"cm:content" AND PATH:"//app:company_home/st:sites/cm:mio-sito/cm:documentLibrary/*" AND QNAME:"sys:system/sys:authorities/cm:GROUP_site_mio-sito_SiteManager"
</blockcode>
dove "mio-sito" è il site che ho creato mentre di fatto "GROUP_site_mio-sito_SiteManager" è un gruppo che crea automaticamente Alfresco. Ho caricato un documento PDF di prova nel site e da Node Browser vedo che quel gruppo ha l'accesso per il documento ma la query così com'è non mi restituisce risultati.
Grazie
7 Replies
davidciamberlan
Alfresco Employee

Re: Ricerca documenti di un gruppo tramite query Lucene

Ciao,

Le singole parti della tua query sono corrette ma non puoi mettere in AND la parte QNAME con le altre.
Essa restituisce l'authority… ma che senza nessuna correlazione con i documenti.

Riguardo la tua domanda… non penso che la query che ti serve si possa fare con Lucene (ma se qualcun altro nel forum ha una soluzione, ben venga!)

Si può fare invece usando i webscript. In quel caso dovresti prima ottenere la lista dei documenti nel tuo sito e poi per ciascun nodo usare la funzione getPermissions() e controllare se in essa c'è il gruppo che ti interessa.



toxkras
Member II

Re: Ricerca documenti di un gruppo tramite query Lucene

Ciao David,
grazie per la risposta. Effettivamente indagando mi sembra che la cosa non sia fattibile. In realtà quello che a me serve è qualcosa di diverso. Ti spiego: io ho un sito che sfrutta Alfresco come repository. Ciascun utente può essere associato a uno o più gruppi. Supponiamo l'utente sia associato un gruppo con nome "GRUPPO_1000". Quando l'utente clicca su un link che si chiama ad esempio proprio GRUPPO_1000 il sito contatta Alfresco per farsi restituire tutti i documenti che risultano essere visibili agli utenti del gruppo GRUPPO_1000. Questi documenti si trovano in cartelle diverse. Come posso procedere? ci sono delle API Rest che possono essermi d'aiuto? Ho trovato poco fa la seguente: /alfresco/service/slingshot/node/search ma non so se possa essermi utile, devo ancora studiarla…
Grazie!
davidciamberlan
Alfresco Employee

Re: Ricerca documenti di un gruppo tramite query Lucene

Ciao,

puoi spiegare meglio perchè ti serve una simile funzionalità? Te lo chiedo perchè mi sembra un po' farraginosa (come gestisci i nuovi file? Ogni volta che crei un documento gli associ uno o più gruppi?) e magari si può fare in modo diverso…

Una possibile chiamata rest potrebbe essere descendants


In ogni caso la cosa migliore secondo me è costruirti un webscript custom oppure usare CMIS.
toxkras
Member II

Re: Ricerca documenti di un gruppo tramite query Lucene

Ciao,
ora controllo cosa fa questa API. Per quanto riguarda i nuovi file ci sarà un processo che, sulla base di alcuni parametri di cui dispone, andrà a salvarli in una folder (che è disponibile tra i parametri) e che rimuoverà i permessi di accesso agli altri utenti lasciando solo agli utenti di uno specifico gruppo (anche questo è un parametro) i permessi di lettura.
Il meccanismo che ti ho spiegato nella risposta precedente serve per permettere agli utenti di accedere solo ai documenti che li riguardano sfruttando il meccanismo dei permessi (e dei gruppi) fornito da Alfresco. Ma sei hai soluzioni migliori da propormi sono tutto orecchi :-D io purtroppo non sono molto esperto di Alfresco
toxkras
Member II

Re: Ricerca documenti di un gruppo tramite query Lucene

Ho trovato anche questa API: <blockcode>/alfresco/service/slingshot/doclib/doclist/{type}/site</blockcode> ma neanche questa mi sembra possa resituirmi i documenti nelle sottocartelle… mi sembra troppo strano che Alfresco non fornisca un API che permetta di restituire anche i documenti che si trovano nelle sottocartelle …
davidciamberlan
Alfresco Employee

Re: Ricerca documenti di un gruppo tramite query Lucene

Ciao,

non so se ho capito bene lo scenario che descrivi… ma ti segnalo due cose:

<ul>
<li>Non hai bisogno di fare tu i filtri sui contenuti. Se sei loggato come un certo utente, Alfresco di default ti fa vedere <u>solo<u> i nodi che quell'utente può vedere. Questo vale qualsiasi sia metodo che usi per consultare il repository (share, rest, lucene, cmis, ecc)</li>
<li>Quando metti dei documenti in una cartella (a meno che tu non abbia impostato diversamente) i loro permessi vengono ereditati da quelli della cartella stessa. Quindi se decidi che una certa folder può essere visibile solo ad un certo gruppo, automaticamente tutti i suoi file assumeranno questi permessi.</li>
</ul>

Non so se la tua situazione è più complessa… ma se così non fosse non avresti bisogno di ricorrere alle chiamate REST o alle query lucene per ottenere quello che ti serve.

Se ho capito male spiegami meglio.

toxkras
Member II

Re: Ricerca documenti di un gruppo tramite query Lucene

In realtà ho scoperto che lanciando la seguente chiamata: "http://localhost:8080/alfresco/service/slingshot/doclib/doclist/documents/site/mio-sito/documentLibr..." ottengo tutti i documenti visibili per l'utente che lo ha lanciato. La cosa che ho scoperto quasi per caso è che se eseguo la stessa chiamata come utente "admin" ottengo queste informazioni in più: "permissions":
<blockcode>
   {
      "inherited": true,
      "roles":
      [
         "ALLOWED;admin;SiteManager;INHERITED",
         "ALLOWED;GROUP_site_mio-sito_SiteManager;SiteManager;INHERITED",
         "ALLOWED;GROUP_miogruppo1000;Consumer;INHERITED",
         "ALLOWED;GROUP_miogruppo2000;Consumer;INHERITED"
      ],
</blockcode>

che non ottengo per gli altri utenti (il campo "roles" è vuoto). Sapresti dirmi cosa devo modificare per rendere queste disponibili anche per utenti non admin?
Grazie