2017-09-04 4 views
2

ich bespannen Aufgaben zusammen bin versucht, ich bin in der Lage, die Aufgaben-ID der nächsten Benutzeraufgabe zu erhalten, indem die folgenden in einem TaskListener erstellen Skript ausgeführt wird:Camunda Sprung zum nächsten User-Task

var system = java.lang.System; 
system.out.println(task.id); 

Welche der zurück korrekte ID

dann möchte ich die URL im Browser aktualisieren, um "ip: port/camunda/app/tasklist/default/#/task =?" + Task.id

Aber weil die TaskListener Skript erstellen ist nicht im Browser selbst ausgeführt (nicht sicher, warum um ehrlich zu sein), ich habe keine 'window.location' verfügbar.

Gibt es eine einfache Lösung?

Antwort

1

Für alle Interessierten haben wir eine Lösung.

Wir verwenden die GET Aufgabe Befehl des REST-API, sieht der Code wie dieser

camForm.on('submit-success', function() { 
inject(['$rootScope', function($rootScope) { 
    var user = $rootScope.authentication.name; 
    setTimeout(function(){ 
    $.get("/engine-rest/task?sortBy=created&sortOrder=desc&assignee=" + user, function(data) { 
     window.location.replace("http://is-company.intelligentsystems.lan:8080/camunda/app/tasklist/default/#/?task="+ data[0].id); 
    }); 
    }, 300); 
}]); 
}); 

Dieser Code wird aufgerufen, wenn Sie/complete drücken auf eine Aufgabe starten, und die Verarbeitung erfolgreich ist (submit-Erfolg), sucht dann den aktuellen Benutzer und sucht nach der neuesten Aufgabe, die dem Benutzer zugewiesen wurde, und setzt sie in der URL mit window.location.replace Wir hatten das Problem, dass die Aufgabe nicht vollständig erstellt wird, wenn der Code ausgeführt wird sofort, aber eine kleine Verzögerung von 300 hinzufügen (könnte kleiner sein, aber besser sicher als Nachsicht), bevor Sie die Task-ID erhalten.

1

Jedes Skript, das Sie zu Ihrem Prozessmodell hinzufügen, wird unter Serverseite (einschließlich Task-Listener) ausgeführt, es sei denn, es gehört zu einem Aufgabenformular. Das Objekt task ist eine Instanz der Java-Klasse org.camunda.bpm.engine.delegate.DelegateTask. Sie können die aktuelle Aufgabe überspringen, indem Sie task.complete() schreiben.

Links:

+0

Ich erkannte (direkt nach dem Posten), dass das Skript auf der Serverseite ausgeführt wurde, aber die Aufgabe zu vervollständigen würde mein Problem nicht lösen. Ich versuche, von einer Usertask zur nächsten nahtlos zu gehen, ohne zwischendurch mehrere Klicks zu machen (User Tasks werden automatisch dem Benutzer zugewiesen, der den Prozess gestartet hat). – NoShadowKick