alexanderan
I'm new here

Workflow - Element gesperrt per Skript setzen

Hallo zusammen,

wir haben in unserem Projekt einen ohnehin schon komplizierten Workflow. Nun kam die Anforderung auf, bei bestimmten Store Elementen (z.B. bei PageFolder-Objekten) die Workflow-Objekte in den (Zwischen-) Zuständen nicht für die Bearbeitung zu sperren. Der Workflow sieht das im Modell vor.

Nun frage ich mich, ob es über ein Skript möglich ist den Schreibschutz in einem Zustand während des Workflows manuell zu setzen/entfernen.

Leider habe ich in der API eine solche Funktionalität auf den ersten Blick nicht entdeckt.

Falls dies nicht möglich ist, würde mich interessieren, ob man Transitionen im Workflow auch "hidden" definieren kann. Also so, dass der User diese nicht im Dialog als Schaltfläche angezeigt bekommt, man die Transition aber über ein Skript ansteuern kann.

Für eine Hilfreiche Antwort zu meinen Fragen wäre ich sehr dankbar.

Viele Grüße

Andreas

0 Kudos
6 Replies
gockel
Crownpeak employee

Leider habe ich in der API eine solche Funktionalität auf den ersten Blick nicht entdeckt

#setWriteLock(boolean lock)

#getWriteLock()

Falls dies nicht möglich ist, würde mich interessieren, ob man Transitionen im Workflow auch "hidden" definieren kann. Also so, dass der User diese nicht im Dialog als Schaltfläche angezeigt bekommt, man die Transition aber über ein Skript ansteuern kann.

Hier kann ich nicht ganz folgen. Entweder es handelt sich um eine automatische Aktivität (mit Skript), dann werden dem Benutzer gar keine Transitionen zum schalten angeboten oder es ist eine manuelle Aktivität, dann erhält der Benutzer immer alle Transitionen zur Auswahl.

Man könnte eine automatische Aktivität erstellen, in deren Skript eine Gui angezeigt wird, wo dem Benutzer weniger Auswahlmöglichkeiten angeboten werden, als im Modell Transitionen hinterlegt sind.

0 Kudos

Man könnte eine automatische Aktivität erstellen, in deren Skript eine Gui angezeigt wird, wo dem Benutzer weniger Auswahlmöglichkeiten angeboten werden, als im Modell Transitionen hinterlegt sind.

Innerhalb einer automatischen Aktion habe ich die Möglichkeit dem User den Workflow-Dialog über workflowScriptContext.showActionDialog() anzuzeigen. Als Rückgabewert dieser Methode bekomme ich die Vom User gewählte Transaktion zurück.

Mich hätte nun interessiert, ob die Möglichkeit besteht in diesem Firstspirit-eigenen Dialog die angezeigten Transitionen (Buttons) vorher zu manipulieren, um dem User in bestimmten Fällen nicht alle Transitionen anzubieten.

Bei der Definition von Workflows kann ich auch in manuellen Aktionen Skripte anhängen. Ich hatte dies so interpretiert, dass die Aktion zwar manuell angetriggert wird, das Skript aber wie auch bei automatischen Aktionen ausgeführt wird. Bitte korrigieren Sie mich, falls ich da nicht richtig liege.#

Automatische Aktionen hingegen werden direkt ausgeführt (ohne User Interaktion) und benötigen zwingend ein angehängtes Skript um die Transition zu schalten.

#setWriteLock(boolean lock)

#getWriteLock()

Danke für den Hinweis, werde ich ausprobieren

Viele Grüße,

Andreas Alexander

0 Kudos

Innerhalb einer automatischen Aktion habe ich die Möglichkeit dem User den Workflow-Dialog über workflowScriptContext.showActionDialog() anzuzeigen. Als Rückgabewert dieser Methode bekomme ich die Vom User gewählte Transaktion zurück.

Mich hätte nun interessiert, ob die Möglichkeit besteht in diesem Firstspirit-eigenen Dialog die angezeigten Transitionen (Buttons) vorher zu manipulieren, um dem User in bestimmten Fällen nicht alle Transitionen anzubieten.

Ich wollte darauf hinaus innerhalb der Aktion eine individuelle GUI anzuzeigen, z.B. über die Formulardefinition des Skriptes, welche dann mit #showGui augerufen wird. Diese Gui könnte ja z.B. aus Radiobuttons bestehen, die die zu schaltenden Transitionen repräsentieren und entsprechend reduziert sind.

0 Kudos

Ich wollte darauf hinaus innerhalb der Aktion eine individuelle GUI anzuzeigen, z.B. über die Formulardefinition des Skriptes, welche dann mit #showGui augerufen wird. Diese Gui könnte ja z.B. aus Radiobuttons bestehen, die die zu schaltenden Transitionen repräsentieren und entsprechend reduziert sind.

Dem entnehme ich, dass die Möglichkeit bestimmte Transitionen im Vorfeld auszublenden (oder zu deaktivieren) über showGuiDialog() nicht besteht, richtig?

0 Kudos

Noch mal zur Ursprünglichen Fragestellung (Betreff) zurück:

hier ein konkretes Beispiel:

workflowScreenShot.png

Der Status "Freigabe angefordert" ist ohne Schreibschutz konfiguriert. An die manuelle Aktion "Freigabe anfordern" haben wir ein Skript gehängt, welches anhand des zugrundeliegenden StoreElementes entscheidet, ob der folgende Workflow (also der Zustand "Freigabe angefordert") mit oder ohne Schreibschutz ausgeführt werden soll (hier werden also die Methoden get und setWriteLock verwendet).

So wie ich das sehe, wird der Schreibschutz erst bei erreichen des Zustandes gesetzt/entfernt, somit sind die Änderungen im Skript setWriteLock nicht wirksam, richtig?

Wie kann ich es nun erreichen, dass über das Skript setWriteLock der Schreibschutz für den Zustand "Freigabe angefordert" gesetzt wird? Habe ich die Möglichkeit die Eigenschaften des Zustandes nur für diese Instanz des Workflows abzuändern, also das Flag für Schreibschutz während der Ausführung des Workflows selbst zu setzten?

Viele Grüße,

Andreas Alexander

0 Kudos

So wie ich das sehe, wird der Schreibschutz erst bei erreichen des Zustandes gesetzt/entfernt, somit sind die Änderungen im Skript setWriteLock nicht wirksam, richtig?

Wie kann ich es nun erreichen, dass über das Skript setWriteLock der Schreibschutz für den Zustand "Freigabe angefordert" gesetzt wird? Habe ich die Möglichkeit die Eigenschaften des Zustandes nur für diese Instanz des Workflows abzuändern, also das Flag für Schreibschutz während der Ausführung des Workflows selbst zu setzten?

Wird der Workflow innerhalb des Skriptes auf "Freigabe angefordet" gesetzt, oder erfolgt das schalten der Transition manuel? Die Methoden setWriteLock und getWriteLock werden auf dem StoreElement ausgeführt und benötigen ein save, damit die Änderung gespeichert wird. Können Sie bitte das Skript anhängen?

0 Kudos