cancel
Showing results for 
Search instead for 
Did you mean: 

Errore o bug su alfresco share 3.4d?

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

stavo mettendo a punto uno script che mi serviva per una business rule su alcune cartelle su Alfresco share. Ho creato lo script con la javascript console e testato e mi restituiva e mi eseguiva i risultati attesi. Allora vado ad impostare la regola da interfaccia per la suddetta cartella e quando vado a provare il giro per eseguire la regola mi da un errore di proprietà non definita. Rieseguo lo stesso script sulla console e mi da come output un uuid e un oggetto indefinito e non visibile sul mio repository:

Questo è  il codice dello script:


var path = "<<mypath>>/Clienti";

var testingFolder = userhome.childByNamePath(path);

var children = testingFolder.children;


for each (n in children)
{
   var name = n.name;
     print(name);
  
 
     var folder = userhome.childByNamePath(path+"/"+name);
     print(folder);
     //var child = folder.children;
     //print(child);
     /*
     for each (d in child)
     {
        var doc = d.name;
             var change = d.properties["my:cliente"] = name;
         print(change);
             //d.save();      
     }*/
 
}

e questo l'output:


9d5319f2-4850-4c82-b1c3-c1a92d5722a7
undefined
Banca
Banca (cm:folder, workspace://SpacesStore/ce3581d7-6503-4938-bc8a-ff1c36b09107)

Ho scoperto che quell'identificativo probabilmente appartiene alla regola cioè identifica il nodo della regola impostata su quella cartella ( è esatto? ) Però perchè se io elimino la regola su quella cartella l'identificativo non scompare? Per farlo scomparire devo elimiare il path relativo e poi ricrearlo.

Non so se è chiaro il mio problema. Vi è capitato anche a voi? A cosa è dovuto?

Grazie a tutti.
10 REPLIES 10

openpj
Elite Collaborator
Elite Collaborator
La regola non è altro che un nodo figlio dello space di Alfresco e quindi viene restituito dalle ricerche se non viene opportunamente filtrato.
Suggerirei di eseguire le ricerche utilizzando Lucene per fare in modo di avere delle ricerche più mirate possibile, ad esempio utilizzando il token PATH di Lucene, oppure i type di riferimento attesi per la lista dei risultati.

var results = search.luceneSearch("PATH:\"/app:company_home/cm:Clienti/*" AND TYPE:\"my:type\"");
Chiaramente se tu provi a stampare il valore di un metadato custom relativo al tuo modello, ovviamente ti darà un undefined proprio sul nodo relativo alla regola in quanto è una proprietà non presente.

Mi sembra onesto quello che ti ritorna Alfresco  Smiley Wink

need
Champ in-the-making
Champ in-the-making
Grazie OpenPj,

sisi allora è come credevo però il mio dubbio è perchè se elimino la regola ( da interfaccia faccio elimina regola ) l'identificativo viene stampato ancora? Se io lo elimino non viene eliminato fisicamente dal DB?

Cmq la mia esigenza non è quella di fare una ricerca ma operare su ogni figlio di clienti perchè sotto clienti c'è una struttura dinamica. Cmq proverò il tuo suggerimento.

P.S. Ho Acquistato il tuo libro, complimenti mi è stato utilissimo per capire e approfondire certi meccanismi.

openpj
Elite Collaborator
Elite Collaborator
sisi allora è come credevo però il mio dubbio è perchè se elimino la regola ( da interfaccia faccio elimina regola ) l'identificativo viene stampato ancora? Se io lo elimino non viene eliminato fisicamente dal DB?
No non viene eliminato, per lo meno non subito.

Considera che ogni nodo all'interno del repository viene indicizzato all'interno dell'indice Lucene, e poiché l'indice può essere modificato solo in modalità additiva, il singolo contenuto eliminato sarà invalidato anche nell'indice in modo asincrono e quindi potrebbe impiegare alcuni minuti prima di essere eliminato definitivamente anche dall'indice. Questo dipende da come si è configurato il job di Lucene e dal carico di richieste sul sistema.

Una volta che viene eliminato un nodo questo viene spostato all'interno dei nodi eliminati dall'utente (cestino), solo quando l'utente elimina dal proprio cestino il nodo, allora sarà considerato come nodo orfano. Tutti i nodi orfani sono ripuliti da un job di Alfresco che dopo 14 giorni li eliminerà fisicamente dal db e dal file system.

P.S. Ho Acquistato il tuo libro, complimenti mi è stato utilissimo per capire e approfondire certi meccanismi.
Grazie mille per il tuo feedback, apprezzo davvero  Smiley Happy

need
Champ in-the-making
Champ in-the-making
Wow,

sei stato chiarissimo, è che non conoscevo per niente questi aspetti tecnici. Per adesso io sono in un ambiente locale / di test. Ma quindi ad esempio è possibile configurarlo il job di lucene?

E' presente online una documentazione per questi aspetti più tecnici di Alfresco?

Grazie a tutti

openpj
Elite Collaborator
Elite Collaborator
Ma quindi ad esempio è possibile configurarlo il job di lucene?
Si, all'interno del context di Spring scheduled-jobs-context.xml puoi visionare tutti i job che vengono utilizzati in Alfresco.
Puoi sovrascrivere all'interno del classloader condiviso dell'application server queste impostazioni utilizzando l'extension folder senza quindi modificare nessuna configurazione all'interno del WAR di Alfresco.

In questa pagina del wiki di Alfresco trovi alcune informazioni riguardo come è possibile configurare questi job:
http://wiki.alfresco.com/wiki/Content_Expiration

E' presente online una documentazione per questi aspetti più tecnici di Alfresco?
La documentazione tecnica di Alfresco è la wiki che trovi al seguente indirizzo:
http://wiki.alfresco.com/

Per tutta la manualistica ufficiale invece è disponibile il seguente sito:
http://docs.alfresco.com/

need
Champ in-the-making
Champ in-the-making
Buongiorno OpenJ e buongiorno a tutti,

ho filtrato la query come mi hai suggerito:


var query = "PATH:\"/app:company_home/st:sites/cm:<mysites>/cm:documentLibrary/cm:<my>/cm:<my>/cm:Clienti/*\"AND TYPE:\"cm:folder\"";

però l'output è sempre lo stesso nel senso che mi viene restituita anche la cartella di tipo systemfolder ( quella della regola sulla cartella Clienti ).

c'è un modo per dire che non mi deve restituire i tipi systemfolder?

Grazie a tutti.

need
Champ in-the-making
Champ in-the-making
Scusate ho risolto da solo: Ho aggiunto NOT TYPE nella query.

openpj
Elite Collaborator
Elite Collaborator
Ok, te lo stavo per scrivere  Smiley Wink

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

ho un dubbio concettuale, se io devo applicare uno script js ad una regola su share 3.4 sul contenuto di una cartella ( nel mio caso clienti ) che è dinamico,
nel path della query devo inserire tutto il path (PATH:\"/app:company_home/st:sites/cm:<mycompany>/cm:documentLibrary/cm:<myfolder>/cm:Clienti/*\"AND TYPE:\"cm:folder\"AND NOT TYPE:\"cm:systemfolder\") come sopra o applicando la regola alla cartella clienti e alle relative sottocartelle il path è gia definito?

Grazie a tutti.