How to update the document Url of an archived case Document?

Bonjour,

afin de libérer de la place dans la base de données des documents Bonita, nous développons des processus Bonita qui déplacent le contenu de documents Bonita de cases Archived vers notre System de gestion électronique des documents Alfresco.

Le déplacement de contenu fonctionne en utilisant le connecteur Bonita cmis.

Nous souhaitons garder un lien vers le contenu dans le system de gestion électronique des documents Alfresco.
Pour cela, nous voulons coder l'url externe dans les meta données des documents dont le contenu est archivé dans Alfresco.

Nous avons essayé d'utiliser les deux méthodes suivantes de ProcessAPI updateDocument et attachNewDocumentVersion.
Mais celles-ci ne fonctionnent que si le caseId d'où l'on récupère le documentId n'est pas encore archived.

Questions:

* Pourriez-vous nous indiquer comment faire pour enregistrement dans une v2 du document d'un case archivé, et en remplacer l'url interne par l'url externe?
* Exite-t-il d'autres fonctions d'API ou méthode générale pour adresser ce cas d'usage?
* Sinon, quelles autres solutions sont disponibles?

Merci d'avance pour vos propositions!

 

Ci-dessous, voici le code testé, qui ne fonctionne que sur un case open:

//**********************************************************************************************************************
//***************** SCRIPT TO REMOVE DOCUMENT CONTENT AND REPLACE IT WITH URL *****************
//**********************************************************************************************************************

import com.bonitasoft.engine.api.ProcessAPI;
import java.io.StringWriter;
import java.io.PrintWriter;

import org.bonitasoft.engine.bpm.document.Document;
import org.bonitasoft.engine.bpm.document.ArchivedDocument;
import org.bonitasoft.engine.bpm.document.DocumentValue;

/**
* PUT THE id (from the DOCUMENT_MAPPING table) of the document and the new url HERE
*/
long documentMappingId = xxxxxL;
String documentUrl = "file:///path_to_document";
/**
* END OF EDIT SECTION
*/


StringWriter strWriter = new StringWriter();
PrintWriter printer = new PrintWriter(strWriter);

printer.println(Calendar.getInstance().getTime().toString());

ProcessAPI processAPI = (com.bonitasoft.engine.api.ProcessAPI) apiAccessor.getProcessAPI();

try {
// for (long flownodeInstanceId: flownodeInstanceIds) {
try {
// ---- Add new "url" version of document ----
printer.print("Get document with document id: " + documentMappingId );
Document myDoc = processAPI.getDocument(documentMappingId);
printer.println(" => OK");
printer.println(myDoc.toString());

DocumentValue doc = new DocumentValue(documentMappingId, documentUrl);
printer.print("Update document with document id: " + documentMappingId + ". Set url: " + documentUrl);
processAPI.updateDocument(documentMappingId, doc);
printer.println(" => OK");

printer.print("Get document with document id: " + documentMappingId );
Document myNewDoc = processAPI.getDocument(documentMappingId);
printer.println(" => OK");
printer.println(myNewDoc.toString());

// ---- Delete content of previous version..... ----
printer.print("Get archived version of process document with document id: " + documentMappingId );
ArchivedDocument archDoc = processAPI.getArchivedVersionOfProcessDocument(documentMappingId);
printer.println(" => OK");
printer.println(archDoc.toString());

printer.print("Delete content of last archived version ofdocument with document id: " + documentMappingId + " and archived id: " + archDoc.getId());
Document myDeletedDoc = processAPI.deleteContentOfArchivedDocument(archDoc.getId());
printer.println(" => OK");
printer.println(myDeletedDoc.toString());

printer.print("Get archived version of process document with document id: " + documentMappingId );
ArchivedDocument newArchDoc = processAPI.getArchivedVersionOfProcessDocument(documentMappingId);
printer.println(" => OK");
printer.println(newArchDoc.toString());

} catch (Exception e) {
throw e;
}
// }
} catch (Exception e) {
printer.println("\n########### KO - " + e.getMessage());
e.printStackTrace(printer);
}

String output = strWriter.toString();
strWriter.close();
printer.close();
return output;

//**********************************************************************************************************************
//**********************************************************************************************************************

 

Hello,

it looks like there are no api to update the document URL of an archived case Document. 

You may submit your request to Bonitasoft Professional services team that can study it and provide feedback.

Kind regards