10-19-2016 01:48 PM
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.
10-19-2016 02:16 PM
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
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.