cancel
Showing results for 
Search instead for 
Did you mean: 

[SOLUCIONADO] Eliminar un workflow en Java

rhakaro
Champ in-the-making
Champ in-the-making
Hola a todos!

Tengo una duda que me está quitando el sueño. Necesito cancelar un workflow cuando se cambia el tipo a un documento (mediante la opción Cambiar tipo que hay en el detalle de un documento).

He definido un behaviour (que utilizo para muchas tareas automatizaedas), y supongo que deba añadir algún método en él (no encuentro un "OnChangeNodeTypePolicy".

A parte de no saber dónde puedo definir el código, tampoco sé como eliminar un workflow. Estoy utilizando Activiti, y parece que la clase WorkflowService tiene un método "deleteWorkflow(String workflowID)" que puede ayudarme. El caso es que no sé cómo puedo conocer el identificador del workflow a borrar. Supongo que con el tipo de workflow y el documento, pueda obtener el ID, pero ¿cómo?

¿Alguien puede guiarme un poco?

Muchas gracias, un saludo!
1 REPLY 1

rhakaro
Champ in-the-making
Champ in-the-making
Hola de nuevo,

Al final no era ta difícil, debí de liarme yo solo.

Os pongo cómo lo he solucionado, por si alguien tiene el mismo problema y encuentra este post (yo tengo la premisa de que un mismo documento no puede pertenecer a varias tareas del mismo workflow.

<java>
// Se recorren los workflows asociados al documento
for(WorkflowInstance wfInstance : services.getWorkflowService().getWorkflowsForContent(nodeRef, true)){
            
   WorkflowDefinition wfDefinition = wfInstance.getDefinition();

   // Si el workflow es el que estamos buscando => Se elimina y se sale del bucle
   if(wfDefinition.getTitle().equals(Constants.TITULO_WORKFLOW_A_BUSCAR)){
      
      logger.info("Encontrado workflow de tipificacion que debe ser eliminado");
      
      // Se elimina el workflow
      services.getWorkflowService().deleteWorkflow(wfInstance.getId());
      
      // Se detiene la ejecucion del bucle para que no siga recorriendo
      break;
   }
}
</java>