Pergunta

Eu tenho uma referência de documento ao ar livre; O que estou procurando é uma maneira de acessar o fluxo de trabalho anexado a esse documento e finalizá -lo (ou progredir na próxima transição) através do JavaScript.

Quase todos os exemplos na web mostram como iniciar o fluxo de trabalho e, a partir do Dashlet, eu poderia chamar o Processador de Comando de Tarefa (/Alfresco/Command/Task/End/[/Transition]) se soubesse o ID da tarefa, mas como faço o A mesma coisa do script da web do lado do servidor, começando apenas a partir da referência do documento?

Deve haver uma maneira de acessar fluxos de trabalho no documento e gerenciá -los programaticamente.

Foi útil?

Solução

De um documento noderef, você pode sinalizar a tarefa atual como esta:

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;
        }
    }
}

Se você quiser sinalizar a transição padrão, pode pular o loop interno e fazer isso:

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);
}

Outras dicas

Bem, ainda não sei como fazer a transição, mas há algumas coisas que descobri.

Primeiro, posso acessar os fluxos de trabalho que o documento participa e cancelá -lo:

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

No entanto, ainda não tenho muita certeza de como progredir nas tarefas. Eu posso chegar à tarefa e fazer algo com ela:

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

... mas ainda não tenho idéia de como chegar ao TaskId ou ao TransitionID, programaticamente ou através do Alfresco.

EDIT: Descobri que o TransitionId é na verdade o nome de transição, conforme definido no ProcessDefinition XML do fluxo de trabalho XML:

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

Além disso, para obter a lista de tarefas do fluxo de trabalho, você pode iterar através de caminhos (Workflow.getPaths ()) e, em seguida, através de tarefas com path.gettasks ().

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top