phillip_austerf
New Creator

Workflow im WebClient - StoreElement nicht gefunden

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

}

6 Replies
feddersen
Community Manager

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.

0 Kudos
MichaelaReydt
Community Manager

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

0 Kudos

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.

0 Kudos

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:

wf1.png

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:

wf2.png

Ich kann das Problem somit leider nicht nachvollziehen. Bestehen irgendwelche Abweichungen, die das Problem evtl. erklären könnten?

Viele Grüße

Michaela

0 Kudos

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.

0 Kudos

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