mark_mueller
Occasional Observer

Workflow: Fehlermeldung transition isnt valid for this process

Jump to solution

Hallo zusammen,
ich habe ein Beanshell Script in einer Aktion im Server Manager die offene workflows findet und nach einem bestimmten Namen filtert und einem vorhandenen Zustand ("waiting") filtert. Das holen der Ziel Transitions klappt aber aber beim Ausführen der Transition heisst es trotzdem "transition isnt valid for this process". Was kann das sein?

CODE

WorkflowAgent workflowAgent = context.requireSpecialist(WorkflowAgent.TYPE);

hits = agent.answer("fs.workflow = *");

iHit = hits.iterator();

while (iHit.hasNext()) {

hit = iHit.next();
Task actualTask = hit.getTask();

[...]

List<Transition> transitions =
actualTask.getTaskState().getModelState().getTargetTransitions();
for (Transition transition : transitions) {
context.logInfo("Transition "+transition +" Task: " + actualTask);
if("date_reached".equals(transition.toString())) {
context.logInfo("Found target "+transition +" Task: " + actualTask);
final WorkflowAgent.WorkflowProcessContext process = workflowAgent.process(actualTask, transition);
process.doTransition(transition);
}
}​
}



LOG:

INFO 28.11.2022 18:02:17.191 (de.espirit.firstspirit.impl.access.ScriptContextImpl): Transition cancel_release Task: de.espirit.firstspirit.server.taskmanagement.TaskImpl@29a
INFO 28.11.2022 18:02:17.192 (de.espirit.firstspirit.impl.access.ScriptContextImpl): Transition date_reached Task: de.espirit.firstspirit.server.taskmanagement.TaskImpl@29a
INFO 28.11.2022 18:02:17.192 (de.espirit.firstspirit.impl.access.ScriptContextImpl): Found target date_reached Task: de.espirit.firstspirit.server.taskmanagement.TaskImpl@29a
ERROR 28.11.2022 18:02:17.201{dNR=} (de.espirit.firstspirit.server.scheduler.ScriptTaskExecutor): error during script execution : de.espirit.firstspirit.access.script.ExecutionException: Method Invocation process.doTransition : at Line: 75 : in file: inline evaluation of: ``__execute() { import de.espirit.firstspirit.workflow.*; import de.espirit.firsts . . . '' : process .doTransition ( transition )

Target exception: java.lang.IllegalArgumentException: transition 'date_reached' isn't valid for this process
at line 75
de.espirit.firstspirit.access.script.ExecutionException: Method Invocation process.doTransition : at Line: 75 : in file: inline evaluation of: ``__execute() { import de.espirit.firstspirit.workflow.*; import de.espirit.firsts . . . '' : process .doTransition ( transition )

Target exception: java.lang.IllegalArgumentException: transition 'date_reached' isn't valid for this process
at line 75
at de.espirit.firstspirit.server.script.BeanshellScriptEngine$BeanshellExecutable.execute(BeanshellScriptEngine.java:109)
at de.espirit.firstspirit.server.script.PermissionsScriptEngine$PermissionsExecutable.lambda$execute$1(PermissionsScriptEngine.java:85)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at de.espirit.firstspirit.server.script.PermissionsScriptEngine$PermissionsExecutable.execute(PermissionsScriptEngine.java:90)
at de.espirit.firstspirit.server.script.PermissionsScriptEngine$PermissionsExecutable.execute(PermissionsScriptEngine.java:85)
at de.espirit.firstspirit.common.ScriptUtil.execute(ScriptUtil.java:111)
at de.espirit.firstspirit.server.scheduler.ScriptTaskExecutor.run(ScriptTaskExecutor.java:162)

0 Kudos
1 Solution

Accepted Solutions
hoebbel
Crownpeak employee

Hallo Mark,

mich macht bei der Beschreibung das "Beanshell Script in einer Aktion im Server Manager" misstrauisch.

Wird in der Skript Aktion eine eigene Verbindung aufgebaut? (über den Button "Eigenschaften" im Fenster mit dem Skriptcode)

Wenn nein, ist es eine Read-Only Verbindung mit dem User SYSTEM. Der darf wahrscheinlich weder schalten noch kann er schalten (read-only).

Wenn ja, darf der Benutzer denn die Transition schalten? Das wiederum kannst Du im Workflow Model sehen, wenn Du die Transition doppelt anklickst auf der Karteikarte Rechte.

Viele Grüße
Holger

View solution in original post

2 Replies
hoebbel
Crownpeak employee

Hallo Mark,

mich macht bei der Beschreibung das "Beanshell Script in einer Aktion im Server Manager" misstrauisch.

Wird in der Skript Aktion eine eigene Verbindung aufgebaut? (über den Button "Eigenschaften" im Fenster mit dem Skriptcode)

Wenn nein, ist es eine Read-Only Verbindung mit dem User SYSTEM. Der darf wahrscheinlich weder schalten noch kann er schalten (read-only).

Wenn ja, darf der Benutzer denn die Transition schalten? Das wiederum kannst Du im Workflow Model sehen, wenn Du die Transition doppelt anklickst auf der Karteikarte Rechte.

Viele Grüße
Holger

Hallo Holger,

vielen Dank für den Hinweis da nochmal zu checken. Ich hatte zwar eine eigene Verbindung und die Rechte an der Transition auch explizit gesetzt aber ich hatte das wahrscheinlich ursprünglich falsch verstanden, Dort trägt man ja die notwendige Berechtigung ein und nicht die Berechtigung die die Transition von sich aus haben soll. Nach einer Anpassung dort geht der Workflow nun weiter.

Viele Grüße,
Mark

0 Kudos