Domanda

Ho un riferimento del documento Alfresco; quello che sto cercando è un modo per accedere flusso di lavoro collegato a quel documento e finire (o progredire alla transizione successiva) tramite Javascript.

Quasi tutti gli esempi sul web mostra come avviare il flusso di lavoro, e dal dashlet ho potuto chiamare processore dei comandi compito (/ all'aperto / comando / funzione / fine / [/ transizione]) se sapessi l'ID attività, ma come faccio faccio la stessa cosa dallo script web lato server a partire solo dal riferimento al documento?

Ci deve essere un modo per accedere flussi di lavoro da un documento e gestire programmaticamente.

È stato utile?

Soluzione

Da un documento nodeRef è possibile segnalare l'attività corrente in questo modo:

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 si vuole segnalare la transizione predefinita è possibile saltare il ciclo interno e solo fare questo:

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

Altri suggerimenti

Beh, io ancora non so come la transizione, ma ci sono un paio di cose che ho scoperto.

In primo luogo, posso accedere flussi di lavoro documento partecipa e annullarla:

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

Tuttavia, non sono ancora del tutto sicuro di come progredire compiti. Posso ottenere al compito e fare qualcosa con esso:

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

... ma non ho ancora idea di come raggiungere taskId o transitionId, livello di programmazione o tramite Alfresco.

EDIT: capito, transitionId è in realtà la transizione nome come definito in XML del flusso di lavoro processdefinition:

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

Inoltre, per ottenere l'elenco dei compiti del flusso di lavoro è possibile scorrere i percorsi (workflow.getPaths ()) e poi attraverso attività con path.getTasks ().

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top