Frage

Ich habe einen Alfresco Dokumentverweis; was ich suche ist eine Möglichkeit, den Zugriff auf Workflow zu diesem Dokument angehängt und beenden sie (oder er zum nächsten Übergang Fortschritt) durch Javascript.

Fast jedes Beispiel auf der Web zeigt, wie Workflow zu starten, und von der Dashlet konnte ich Task-Befehlsprozessor aufrufe (/ im Freien / Befehl / Aufgabe / Ende / [/ Übergang]), wenn ich die Aufgabe ID wusste, aber wie ich tue das gleiche von serverseitigen Web-Skript nur aus dem Dokument Bezug zu beginnen?

Es muss ein Weg, um Zugang Workflows aus dem Dokument und verwalten sie programmatisch.

War es hilfreich?

Lösung

Aus einem Dokument nodeRef Sie die aktuelle Aufgabe wie dieses Signal kann:

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

Wenn Sie den Standard Übergang signalisieren möchten, können Sie die innere Schleife überspringen und diese gerade tun:

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

Andere Tipps

Nun, ich weiß noch nicht, wie man Übergang, aber es gibt ein paar Dinge, die ich herausgefunden hat.

Als erstes kann ich Zugang Workflows Dokument nimmt an und brechen Sie:

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

Aber ich bin immer noch nicht ganz sicher, wie Aufgaben für den Fortschritt. Ich kann an die Aufgabe bekommen und etwas zu tun mit ihm:

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

... aber ich habe noch keine Ahnung, wie man taskId oder transitionId, entweder programmatisch oder durch Alfresco erhalten.

EDIT: es herausgefunden, transitionId ist eigentlich Übergang Namen wie im Workflow processdefinition XML definiert:

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

Auch erhalten Liste der Aufgaben, die Workflow Sie durch Pfade (workflow.getPaths ()) durchlaufen und dann durch Aufgaben mit path.getTasks ().

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top