Spostare un file con una action.

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

Spostare un file con una action.

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.

1 Reply
openpj
Moderator
Moderator

Re: Spostare un file con una action.

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/cmSmiley Frustratedpazio1/cmSmiley Frustratedpazio2/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/cmSmiley Frustratedpazio1/cmSmiley Frustratedpazio2/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 Smiley Happy