Search the FirstSpirit Knowledge Base
Hallo liebe Community,
in unserem Projekt möchten wir FirstSpirit-Workflows außerhalb von FirstSpirit steuern. Wir bauen dazu in einer gesonderten WebApp eine Verbindung zu unserem FirstSpirit-Server auf. Das steuern der Workflows funktioniert grundsätzlich wunderbar. Allerdings scheitern wir daran, bei den einzelnen Transitions Kommentare mit zu übergeben.
Wir gehen dazu wie folgt vor:
1. Wir laden uns den gewünschten Workflow über den TemplateStore (templateStore.getWorkflowByName(name))
2. Wir besorgen uns den WorkflowAgent und starten den Workflow über die Methode WorkflowAgent.startWorkflow(Workflow workflow)
3. Wir erhalten ein Rückgabeobjekt vom Typ WorkflowAgent.WorkflowProcessContext. Über dieses Objekt haben wir Zugriff auf die nächste Transition und somit auch über die TransitionParameters, über die man einen Kommentar für die nächste Transition vergeben kann.
4. Um uns in unserer gesonderten WebApp zu persitieren, welchen Task wir durch den Workflow gerade erstellt haben, speichern wir uns über WorkflowAgent.WorkflowProcessContext.getTask().getId() die ID des erstellten Tasks.
...jetzt vergeht eine Weile, bis die nächste Person in unserer gesonderten WebApp den Workflow fortführen möchte...
5. Da wir die Task-ID gespeichert haben, können wir über UserService.getTask(long taskId) den Task wieder laden
6. Zum Fortführen des Tasks sehe ich zwei Möglichkeiten:
a) Task.doTransition(WorkflowContext context, Transition transition) - können wir nicht benutzen, da wir durch den Aufruf aus unserer gesonderten WebApp heraus keinen WorkflowContext zu Verfügung haben
b) WorkflowAgent.WorkflowProcessContext.process(Task task, Transition transition) - die Lösung benutzen wir zur Zeit. Allerdings sehe ich über diesen Weg keine Möglichkeit an die TransitionParameters heranzukommen und somit einen Kommentar zu setzen.
Gibt es für so ein Szenario noch einen anderen Weg, die TransitionParameters zu beeinflussen, wenn man keinen GUI-Context zu Verfügung hat?
Viele Grüße
Rico
Hallo Rico,
ich habe nochmal einen Blick in die API geworfen und konnte auch keine andere Möglichkeit entdecken.
WorkflowAgent.WorkflowProcessContext bietet eine getTransitionParameters-Methode, die laut API vor doTransition aufgerufen werden kann, um z.B. einen Kommentar zu setzen. An einen solchen Kontext kommt man in deinem Fall aber wiederum nur über WorkflowAgent.process. Nach diesem Aufruf ist die Transition, für die ein Kommentar geschrieben werden soll, aber natürlich schon gelaufen. Im Grunde also ein Henne-Ei-Problem...
Viele Grüße
Tim
Hallo Rico,
ich habe nochmal einen Blick in die API geworfen und konnte auch keine andere Möglichkeit entdecken.
WorkflowAgent.WorkflowProcessContext bietet eine getTransitionParameters-Methode, die laut API vor doTransition aufgerufen werden kann, um z.B. einen Kommentar zu setzen. An einen solchen Kontext kommt man in deinem Fall aber wiederum nur über WorkflowAgent.process. Nach diesem Aufruf ist die Transition, für die ein Kommentar geschrieben werden soll, aber natürlich schon gelaufen. Im Grunde also ein Henne-Ei-Problem...
Viele Grüße
Tim
Hallo Tim,
vielen Dank für deine Antwort. Natürlich hatte ich gehofft, dass ich noch einen Weg übersehen habe aber jetzt habe ich wenigstens Gewissheit, dass es so nicht funktioniert 😉
Viele Grüße
Rico