- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
WorkflowAgent transition starten
Hallo,
ist es mรถglich mit FirstSpirit 5.2R1911 รผber den Servermanager einen Auftrag zu erstellen, welcher Tasks in einem bestimmten Status eines Freigabe-Workflows bearbeitet?
Ich bekomme aktuell immer ein NullPointer.
Ausgabe der Log-Meldung unten: "Transition Zeitgesteuertes Deployment abbrech Task: de.espirit.firstspirit.server.taskmanagement.TaskImpl@254e0"
Aktuell sieht es so aus:
getElementsInStatusOfWorkflow(String workflowReferenceName, String workflowState){
QueryAgent agent = context.requireSpecialist(QueryAgent.TYPE);
WorkflowAgent workflowAgent = connection.getBroker().requestSpecialist(WorkflowAgent.TYPE);
//holt alle offenen Tasks
hits = agent.answer("fs.workflow = *");
iHit = hits.iterator();
while (iHit.hasNext()) {
hit = iHit.next();
Task actualTask = hit.getTask();
//Einschrรคnkung der Tasks auf den gewรผnschten Worflow
if (actualTask.getWorkflow().getWorkflowModel().getName().equals(workflowReferenceName)){
//Einschrรคnkung der Tasks auf den gewรผnschten Status
if (actualTask.getTaskState().getModelState().getUid().contains(workflowState)){
Transition transition = actualTask.getTaskState().getModelState().getTargetTransitions().get(1); //hier erhalte ich den richtigen Transitionsname
context.logInfo("Transition "+transition +" Task: " + actualTask);
final WorkflowAgent.WorkflowProcessContext process = workflowAgent.process(actualTask, transition); //NULL
process.doTransition(workflowContext, transition)
}
}
}
}
- Labels:
-
Customers
Accepted Solutions
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Moritz,
ich vermute es liegt daran, dass Du Dir den WorkflowAgent aus dem Connection-Broker holst:
WorkflowAgent workflowAgent = connection.getBroker().requestSpecialist(WorkflowAgent.TYPE);
Der Connection-Broker ist immer ohne Projektbindung, siehe auch hier. Und da es Workflows nur innerhalb eines Projektes gibt, ist der hier wahrscheinlich null. Darum sollte bei solchen Konstrukten immer mit requireSpecialist statt requestSpecialist gearbeitet werden - dann fliegt der Fehler frรผher und ist auch aussagekrรคftiger.
D.h. ich gehe mal davon aus, dass folgendes hilft:
WorkflowAgent workflowAgent = context.requireSpecialist(WorkflowAgent.TYPE);
Maรgeblich ist hier der Aufruf auf context anstatt auf connection.getBroker().
Viele Grรผรe
Michael
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Moritz,
ohne mir das nรคher angeschaut zu haben, tippe ich darauf, dass es an dem Benutzer SYSTEM liegt, mit dem der Auftrag ausgefรผhrt wird. Der ist nicht berechtigt, eine Transition zu schalten.
Funktioniert es denn, wenn Du in der Skriptaktion unter "Eigenschaften" eine eigene Verbindung aufbaust und die Zugangsdaten von einem [technischen] Benutzer eintrรคgst, der die entsprechende Workflow-Schaltung vornehmen darf?
Viele Grรผรe aus Dortmund,
Holger
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Holger,
ich habe es schon รผber einen technisch Admin-User versucht. Leider kein Erfolgt.
Die Fehlermeldung lautet wie folgt. Mir fehlt wohl letztlich der Skript Kontext.
ERROR 15.10.2018 12:00:45.260 (de.espirit.firstspirit.impl.access.ScriptContextImpl): Fehler bei der Ausfuehrung: java.lang.NullPointerException: Null Pointer in Method Invocation
java.lang.NullPointerException: Null Pointer in Method Invocation
at bsh.Name.invokeMethod(Name.java:844)
at bsh.BSHMethodInvocation.eval(BSHMethodInvocation.java:75)
at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:102)
at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:47)
at bsh.BSHVariableDeclarator.eval(BSHVariableDeclarator.java:86)
at bsh.BSHTypedVariableDeclaration.eval(BSHTypedVariableDeclaration.java:84)
at bsh.BSHBlock.evalBlock(BSHBlock.java:130)
at bsh.BSHBlock.eval(BSHBlock.java:80)
at bsh.BSHBlock.eval(BSHBlock.java:46)
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Moritz,
ich vermute es liegt daran, dass Du Dir den WorkflowAgent aus dem Connection-Broker holst:
WorkflowAgent workflowAgent = connection.getBroker().requestSpecialist(WorkflowAgent.TYPE);
Der Connection-Broker ist immer ohne Projektbindung, siehe auch hier. Und da es Workflows nur innerhalb eines Projektes gibt, ist der hier wahrscheinlich null. Darum sollte bei solchen Konstrukten immer mit requireSpecialist statt requestSpecialist gearbeitet werden - dann fliegt der Fehler frรผher und ist auch aussagekrรคftiger.
D.h. ich gehe mal davon aus, dass folgendes hilft:
WorkflowAgent workflowAgent = context.requireSpecialist(WorkflowAgent.TYPE);
Maรgeblich ist hier der Aufruf auf context anstatt auf connection.getBroker().
Viele Grรผรe
Michael
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Michael,
vielen Dank.
Das war die Lรถsung --> WorkflowAgent workflowAgent = context.requireSpecialist(WorkflowAgent.TYPE);
Liebe Grรผรe
Moritz

