Search the FirstSpirit Knowledge Base
Hallo zusammen,
ich habe ein kleines Problem:
ich möchte im WebClient einen Arbeitsablauf starten, welcher die aktuelle Seite an ein Generierungsskrip weiterleitet. Im JavaClient ist das kein Problem, im WebClient jedoch bekomme ich als Wert "NULL" zurück geliefert.
Anbei das Script.
Wo liegt hier der Fehler? Im "Aktionen" Menü wird der Arbeitsablauf nur angezeigt, wenn in den Arbeitsablauf-Eigenschaften der Haken entfernt wird für "Arbeitsablauf ohne Kontext ausführbar"
Muss die Implementierung hierfür doch über einen FS Button erfolgen?
Viele Grüße,
Phillip Austerfield.
Hier das Skript, welches über den Workflow ausgeführt wird:
import de.espirit.firstspirit.access.store.sitestore.PageRef;
import de.espirit.firstspirit.access.store.sitestore.SiteStoreFolder;
import de.espirit.firstspirit.access.store.templatestore.WorkflowScriptContext;
import de.espirit.firstspirit.ui.operations.RequestOperation;
import de.espirit.firstspirit.agency.OperationAgent;
import java.io.Writer;
//
// aktuelles Element holen
//
e = context.getStoreElement();
//show a dialog
wsc = (WorkflowScriptContext) context;
OperationAgent operationAgent = wsc.requireSpecialist(OperationAgent.TYPE);
//show the data of the current object inside a diaolog
RequestOperation requestOperation = operationAgent.getOperation(RequestOperation.TYPE);
requestOperation.setKind(RequestOperation.Kind.INFO);
requestOperation.setTitle("current Object");
requestOperation.perform("current Object is: " + e);
// hier gibt es "null"
//
// Alternative über WSC
//
if (e == null && wsc != null)
{
x = wsc.getStoreElement();
requestOperation.perform("neues objekt holen");
requestOperation.perform("wert " + x);
// auch hier gibt es "NULL" zurück
}
Innerhalb eines Workflow-Skriptes sollte man immer context.getWorkflowable() nutzen und nicht context.getStoreElement(). Erstes liefert immer das Element, auf dem der Workflow ausgeführt wird, letzteres nicht.
Hallo,
zu diesem Ausschnitt:
Phillip Austerfield schrieb:
[...]Wo liegt hier der Fehler? Im "Aktionen" Menü wird der Arbeitsablauf nur angezeigt, wenn in den Arbeitsablauf-Eigenschaften der Haken entfernt wird für "Arbeitsablauf ohne Kontext ausführbar"
Muss die Implementierung hierfür doch über einen FS Button erfolgen?
[...]
eine kleine Anmerkung.
Wie bereits geschrieben, werden im Menü "Aktionen" nur Arbeitsabläufe (oder Skripte) angezeigt, die ohne Kontext ausführbar sind.
Arbeitsabläufe, für die ein Kontext benötigt wird und die entsprechend konfiguriert sind, werden im Status-Menü der entsprechenden Seite angezeigt.
Ausführlich ist dies hier (KLICK) in der 4. Antwort erklärt.
Viele Grüße
Michaela
Hallo,
der entsprechende Haken ist entfernt und auch die Rechte im Struktur-Rootknoten sind für diesen Arbeitsablauf vergeben, jedoch wird der Workflow nicht im Status-Menü der Seite angezeigt (immerhin auch nicht - wie ja erwartet - im Aktionen-Menu).
Ein Neustart des Webdienstes WebClient hat keine Veränderung gebracht.
Viele Grüße,
Phillip Austerfield.
Hallo,
ich habe das bei mir lokal mal nachgestellt mit FS 5.0.318.57504
Das obrige Skript habe ich einfach nur kopiert. Allerdings habe ich am Ende noch die Zeile
context.doTransition("Final");
ergänzt, da der WF sonst nicht beendet wurde. In den Eigenschaften des Skripts ist der Typ "Vorlage" ausgewählt und es ist "immer aktiv".
Mein WF ist ganz einfach und in den Eigenschaften ist der Haken "ohne Kontext ausführbar" nicht gesetzt. Allerdings ist der WF natürlich für die Verwendung im WebClient aktiviert:
Außerdem habe ich den WF auf dem Root-Knoten der Struktur-Verwaltung erlaubt.
Der WF wird mir daraufhin im WebClient im Statusmenü angezeigt und lässt sich von dort auch ausführen. Beim Durchlaufen des Skripts wird der entsprechende Dialog mit dem aktuellen Element ausgegeben:
Ich kann das Problem somit leider nicht nachvollziehen. Bestehen irgendwelche Abweichungen, die das Problem evtl. erklären könnten?
Viele Grüße
Michaela
Hallo Michaela,
das Problem besteht leider weiterhin. Eine Erklärung habe ich hierfür leider nicht.
Ich werde hierzu wohl ein Ticket beim HelpDesk eröffnen.
Viele Grüße,
Phillip.
Hallo Phillip,
nach meinem Verständniss muss das aktuelle Element bei der Ausführung eines Workflows im WebClient folgendermaßen bezogen werden, probier das doch mal aus:
...
import de.espirit.firstspirit.access.BaseContext;
import de.espirit.firstspirit.webedit.WebeditUiAgent;
...
if(context.is(BaseContext.Env.WEBEDIT)){
WebeditUiAgent uiAgent = context.requireSpecialist(WebeditUiAgent.TYPE);
e = uiAgent.getPreviewElement();
} else {
e = context.getStoreElement();
}
...
Annahme: context ist der aktuelle WorkflowScriptContext
Zu beachten ist das context.getStoreElement() ein StoreElement liefert, uiAgent.getPreviewElement() jedoch einen IDProvider.
Viele Grüße,
Hendrik