Progresando Alfresco flujos de trabajo a través de secuencias de comandos web

StackOverflow https://stackoverflow.com/questions/2455493

  •  20-09-2019
  •  | 
  •  

Pregunta

Tengo una referencia de documento al aire libre; lo que estoy buscando es una manera de acceder flujo de trabajo adjunto a dicho documento y terminarlo (o progresar a la siguiente transición) a través de Javascript.

Casi todos los ejemplos en la web muestra cómo iniciar el flujo de trabajo, y desde el dashlet que podría llamar procesador de comandos de tarea (/ al aire libre / comando / tarea / final / [/ transición]) si sabía el ID de tarea, pero ¿cómo yo hago lo mismo a partir de secuencias de comandos web del lado del servidor a partir solamente de la referencia del documento?

Tiene que haber una manera de acceder a los flujos de trabajo de documentos y administrarlos mediante programación.

¿Fue útil?

Solución

A partir de un documento nodeRef se puede señalar la tarea actual como esto:

var docNodeRef = "workspace://SpacesStore/<GUID HERE>";
var transitionId = "some action";
var theDocument = search.findNode(docNodeRef);
foreach  (currWorkflow in theDocument.activeWorkflows)
{
    var path = currWorkflow.paths[currWorkflow.paths.length-1];
    var task = path.tasks[0];
    for (var transitionKey in task.transitions)
    {
        if (task.transitions[transitionKey] == transitionId)
        {
            path.signal(transitionId);
            break;
        }
    }
}

Si desea indicar la transición predeterminada puede omitir el bucle interior y simplemente hacer esto:

var docNodeRef = "workspace://SpacesStore/<GUID HERE>";
var transitionId = "some action";
var theDocument = search.findNode(docNodeRef);
foreach  (currWorkflow in theDocument.activeWorkflows)
{
    var path = currWorkflow.paths[currWorkflow.paths.length-1];
    var task = path.tasks[0];
    // Signal default transition
    path.signal(null);
}

Otros consejos

Bueno, yo todavía no sé cómo hacer la transición, pero hay un par de cosas que me enteré.

En primer lugar, puedo acceder a los flujos de trabajo de documentos participa y cancelarla:

for each (workflow in document.activeWorkflows) {
    workflow.cancel();
}

Sin embargo, todavía no estoy muy seguro de cómo progresar tareas. Puedo llegar a la tarea y hacer algo con él:

var task = workflow.getTask(taskId);
task.endTask(transitionId);

... pero sigo sin tener ni idea de cómo llegar a taskId o transitionId, mediante programación o a través de Alfresco.

EDIT: lo descubrió, transitionId es en realidad la transición nombre como se define en el flujo de trabajo XML ProcessDefinition:

<transition name="SomeTransitionId" to="end">

Además, para obtener la lista de tareas del flujo de trabajo Se puede recorrer caminos (workflow.getPaths ()) y luego a través de tareas con path.getTasks ().

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top