Ciao a tutti, ho realizzato una serie di action che combinate con le rules sulle cartelle estraggono alcuni dati da un file .txt e vanno a valorizzare alcuni metadati dei documenti che sono in alcune cartelle di alfresco.
Per completare il giro delle automazioni sto cercando di scrivere una action che venga richiamata da una rules in modo che quando inserisco un file .pdf in una cartella "Bozze" questo a sua volta richiami la action di estrazione dei dati, non sul file .pdf appena inserito, ma sul file pippo.txt che si trova nella cartella "transito", oppure che esegua un move del file pippo.txt dalla cartella "transito" ad un altre cartella generica dove posso attivare la rule che quando entra un documento .txt attiva la action di estrazione.
Non sono riuscito a capire come faccio a settare i giusti parametri quando vado a richiamare il servizio file Folder Service ovvero:
fileFolderService.move(noderefSorgenteTxt, noderefDestinazioneTxt, null);
Il noderefSorgenteTxt l'ho ottenuto mediante una query sul file pippo.txt, ma come posso ottenere il noderef della destinazione?
Ho provato a replicare la action nativa di alfresco "moveAction.java" ma probabilmente sbaglio qualcosa di concettuale perchè il compilatore mi segnala errori sull'utilizzo impropio del metodo setter relativo alla funzione addParameterDefinitions.
In alternativa come posso richiamare una action esistente all'interno di questa action?
Sto usando alfresco 4.2.f e java non webscript.
Grazie.
Il noderefSorgenteTxt l'ho ottenuto mediante una query sul file pippo.txt, ma come posso ottenere il noderef della destinazione?
Puoi sempre usare una query per trovare il nodo di destinazione tipicamente utilizzando una query Lucene del tipo:
@cm\:name:"nomeDellaDestinazione" AND TYPE:"cm:folder"
Oppure eseguendo una query con il token PATH di Lucene:
PATH:"/app:company:home/cmpazio1/cmpazio2/cm:ilTuoSpazioDiDestinazione"
In alternativa per fare questo puoi usare tranquillamente la JavaScript API di Alfresco utilizzando come azione "Esegui script" da far eseguire dalla regola.
Gli script vanno messi all'interno del Dizionario dei dati/Scripts all'interno del repository e devono essere rigorosamente con estensione .js .
Un esempio di utilizzo di JavaScript API è il seguente:
var querySorgente = "@cm\\:name:\"nomeDellaDestinazione\" AND TYPE:\"cm:folder\"";
var sorgenteResults = search.luceneSearch(querySorgente);
var nodoSorgente = null;
for(var z=0; z<sorgenteResults.length; z++){
nodoSorgente = sorgenteResults[0];
}
var queryDestinazione = "PATH:\"/app:company:home/cmpazio1/cmpazio2/cm:ilTuoSpazioDiDestinazione\"";
var destinazioneResults = search.luceneSearch(queryDestinazione);
var nodoDiDestinazione = null;
for(var i=0; i<destinazioneResults.length; i++){
nodoDiDestinazione = destinazioneResults[0];
}
Se sei sicuro che il nodo esista puoi anche scrivere il tutto in una sola linea di codice:
var nodoDiDestinazione = search.luceneSearch(queryDestinazione)[0];
//puoi spostare un nodo così invece di usare la action di default di Alfresco
nodoSorgente.move(nodoDiDestinazione);
Spero ti aiuti a capire
Archive content from product discussions in Italian.
This group is now closed and content is read-only.
By using this site, you are agreeing to allow us to collect and use cookies as outlined in Alfresco’s Cookie Statement and Terms of Use (and you have a legitimate interest in Alfresco and our products, authorizing us to contact you in such methods). If you are not ok with these terms, please do not use this website.