cancel
Showing results for 
Search instead for 
Did you mean: 

Ereditare proprietà personalizzata a cascata

need
Champ in-the-making
Champ in-the-making
Ciao a tutti,

ho un problema che non riesco a risolvere su Alfresco share 3.4d, ho questa situazione ho una cartella Clienti che contiene n cartelle identificate dal nome del cliente e all'interno di queste possono esserci sia altre cartelle che altri documenti.

Quindi mi sono fatto una regola che specializza il tipo in cliente e che aggiunge un aspect con la proprietà cliente.

Come faccio a far ereditare il nome della cartella che identifica il cliente a tutto il contenuto? Sto provando con uno script ma senza risultati

Non so se mi sono spiegato, grazie a tutti.
12 REPLIES 12

openpj
Elite Collaborator
Elite Collaborator
Allora forse credo di aver capito in parte quello che vuoi fare, ma sarebbe meglio se riuscissi a spiegarti in modo più dettagliato.

A mira di naso direi che dovrebbe essere fattibile tramite la realizzazione di uno script utilizzando la Javascript API di Alfresco e magari facendola eseguire tramite una action applicata ad una regola su uno o più spazi.

Ti ricordo inoltre che una stessa regola in Alfresco, una volta definita ed applicata ad uno spazio, può essere utilizzata anche su altri spazi, senza alcun bisogno di ridefinirla.

need
Champ in-the-making
Champ in-the-making
Grazie per la risposta,

mi spiego meglio, ho definito una struttura di cartelle sotto documenti in alfresco share. Ho la cartella clienti che è riempita dinamicamente da un applicazione esterna che crea l'entrata quando avviene un certo evento.

La cartella che salvo prende il nome del cliente quindi ho questa struttura:

Clienti
     Nome Cliente uno
              Qui dentro posso avere n documenti o n annidamenti di cartelle che devono avere sempre la proprietà cliente riempita con il Nome   Cliente uno. ( Questo mi serve farlo per associare qualsiasi contenuto all'interno della cartella al Nome Cliente uno ).
     Nome Cliente due
     Nome Cliente n

Per provare a fare questo mi sono definito una regola applicata anche alle sottocartelle. Lo script che non funziona è questo:
perche funziona solo per un livello di annidamento.



var name = document.parent.name;
var cliente = document.properties["let:cliente"] = name;
var area = document.properties["let:area"] = "Mia area";

document.save();

Grazie a tutti.

openpj
Elite Collaborator
Elite Collaborator
Eh si, invece di usare il parent su un nodo, ed è proprio questa la limitazione del tuo codice, dovresti provare ad implementare uno script più furbo che agisca sulle ricerche e sulla comparazione rispetto al nodo Company Home, si può fare facilmente.

Devi utilizzare l'oggetto search disponibile nello scope dello script e cominciare a giocarci.
Potresti cominciare a giocare con le Lucene Query introducendo il token PATH sulle ricerche:

var luceneQuery = "PATH:\"/app:company_home/cm:Clienti/*\"";
var results = search.luceneSearch(luceneQuery);

La variabile results è un vettore di nodi risultato che rappresenta tutti i figli di primo livello per lo space Clienti.
Questo è solo uno spunto, però penso che puoi cominciare a lavorarci.

Spero ti sia di aiuto  Smiley Wink

need
Champ in-the-making
Champ in-the-making
Esatto mi trovo con te con un possibile spunto per la soluzione, infatti ieri ci avevo pensato. Ci provo un pò e vediamo che succede  :roll:

Pero se uso questo metodo devo settare la regola solo sulla cartella clienti senza spuntare applica alle relative sottocartelle. Giusto?
Grazie  :mrgreen: .

need
Champ in-the-making
Champ in-the-making
Buongiorno a tutti,

ho provato a usare il tuo suggerimento e ho realizzato questo script:


var query = ("PATH:\"/app:company_home/st:sites/cm:let/cm:documentLibrary/cm:Tax/cm:Clienti/*\"AND TYPE:\"cm:folder\" AND NOT TYPE:\"cm:systemfolder\"");
var result = search.luceneSearch(query);
for each(d in result){
   var name = d.name;
     d.properties["let:cliente"] = name;
        d.save();
}

Ho applicato lo script alla cartella cliente e alle relative sottocartelle. Questo non dovrebbe funzionare? Perchè se il path lo definisco io ad ogni livello all interno della cartella clienti dovrebbe cercare i figli di primo livello e poi applicare la proprietà col nome. Mi sbaglio?

Grazie a tutti.

openpj
Elite Collaborator
Elite Collaborator
Forse dovresti prima specializzare il nodo con il tuo tipo custom oppure aggiungere l'aspetto al nodo con la decorazione dei metadati corretta prima di settare un valore di una proprietà. Dico questo perché nella query vedo TYPE:"cm:folder" e di default questo tipo non ha nessuna proprietà del tuo tipo custom, dovresti prima specializzare i nodi di tipo cm:folder nel tuo tipo custom:yourCustomType che include il metadato che stai cercando di valorizzare.

need
Champ in-the-making
Champ in-the-making
Buondì,

si ho specializzato il tipo e ho rifatto la query sul mio customtype però ho sempre lo stesso problema sulla prima cartella col nome del cliente che viene inserita il metadato cliente viene settato correttamente col nome.

se inserisco una cartella all'interno della cartella <nome cliente> il tipo viene specializzato ma il metadato non viene settato con il nome della cartella che si trova sul primo livello.  Smiley Surprisedops:

openpj
Elite Collaborator
Elite Collaborator
Sicuramente c'è un baco nello script.

Devi debuggare lo script utilizzando il Javascript Debugger di Mozilla Rhino, lo abiliti dalla schermata dell'indice dei WebScript:
http://wiki.alfresco.com/wiki/4.0_JavaScript_API#Alfresco_JavaScript_Debugger

need
Champ in-the-making
Champ in-the-making
No siccome il javascript debugger non mi funziona, ho modificato il file log4j.properties e mi sono fatto stampare il log nel file stdout_data, cmq non ho risolto nulla non capisco perchè non va.

Devo modificare qualcosa nel codice?
Getting started

Tags


Find what you came for

We want to make your experience in Hyland Connect as valuable as possible, so we put together some helpful links.