Verwendung von Skripten in Arbeitsabläufen
Skripte stellen ein mächtiges Hilfsmittel für die Umsetzung von kundenspezifischen Wünschen innerhalb der FirstSpirit Arbeitsabläufe dar.
Skripte können innerhalb von Arbeitsabläufen ausschließlich an Aktivitäten gebunden werden. Die Ausführung einer Aktivität kann entweder manuell durch einen Benutzer ausgeführt werden oder automatisch durch ein Skript erfolgen (siehe Seite Aktivität).
Das Ergebnis einer Aktivität bezieht sich immer auf die Instanz eines Arbeitsablaufs. Es handelt sich entweder um einen Zustandswechsel in einen von der Aktivität aus erreichbaren Nachfolgezustand oder aber um das Beibehalten des aktuellen Zustandes (entspricht der „Abbrechen“-Semantik im Aktivitätsdialog). Dies gilt auch für Skripte, die an diese Aktivität gekoppelt werden. Das Skript muss also „selbst“ dafür sorgen, dass eine Transition in den nachfolgenden Zustand durchgeführt wird.
Im Kapitel Tutorials / Arbeitsabläufe / Verwendung von Skripten finden sich Beispiele zur Verwendung von Skripten in Arbeitsabläufen.
Grundsätzlich können im Arbeitsablauf-Modell die Aktivitäten, mit der das Skript verknüpft ist, entweder als „manuell“ oder als „automatisch“ definiert sein – in beiden Fällen kann es sinnvoll sein, ein Skript einzusetzen.
Werden innerhalb von Arbeitsabläufen Skripte verwendet, findet KEINE automatische Auswertung der Redaktionsrechte (z. B. bei der Freigabe) statt. Diese Rechte müssen innerhalb des Arbeitsablaufs geeignet mit den Transitionsrechten verknüpft werden. |
Automatische Aktivitäten und Skripte
Automatische Aktivitäten erwarten keine Benutzerinteraktion und werden ausgeführt, sobald einer der im Modell vorgelagerten Zustände erreicht wird (d.h. die Aktion wird vom System und nicht vom Benutzer ausgelöst). Eine automatische Aktion (und damit das angekoppelte Skript) werden also direkt nach dem Erreichen eines Zustands ausgeführt.
Durch die Verwendung von automatischen Aktionen können potenziell Endlosschleifen gebaut werden. Diese Situation wird vom FirstSpirit Arbeitsablauf-Interpreter erkannt, die Ausführung der entsprechenden Arbeitsablauf-Instanz wird beendet und es erscheint eine Fehlermeldung. Die Verwendung von automatischen Aktivitäten ist auf maximal 16 Aktivitäten in Folge begrenzt. |
Manuelle Aktivitäten und Skripte
Bei manuellen Aktivitäten wird die Aktionsausführung von einem Benutzer gestartet. Ist kein Skript vorhanden, so wird dem Benutzer das Standard-Formular für Arbeitsabläufe mit allen ihm erlaubten Übergängen angezeigt („Aktivitätsdialog“). Sobald der Aktion ein Skript zugeordnet wird, erfolgt diese Dialoganzeige nicht mehr automatisch. Soll dem Benutzer der Aktivitätsdialog angezeigt werden, so muss dies über das Skript ausgeführt werden.
Methoden für einen Skriptkontext für Arbeitsabläufe
Transition showActionDialog();
Aufgabe: Anzeige des Aktivitätsdialogs (meist nur für manuelle Aktionen relevant). Liefert die vom Benutzer ausgewählte Transition als „Transition“-Objekt zurück. Achtung: der eigentliche Übergang wird NICHT durchgeführt.
(Beispiel siehe Seite Ausgabe von Nachrichten in Arbeitsabläufen).
void doTransition(firstspirit.workflow.model.Transition transition)
Aufgabe: Ausführung der angegebenen Transition. Dies kann z. B. die vom Benutzer ausgewählte sein oder eine andere, in dieser Aktion verfügbare (und erlaubte) Transition. Sollte ein Transition gewählt werden, die nicht erlaubt ist, so kommt es zu einer Fehlermeldung.
(Beispiel siehe Seite Ausgabe von Nachrichten in Arbeitsabläufen).
void doTransition(String transitionName)
Aufgabe: Ausführung der mit Namen angegeben Transition. Wurde der Transition im Modell kein Name zugeordnet, so wird automatisch ein Name der Form „->“ + „Name des Zielzustandes“ gebildet, der hier angegeben werden kann.
(Beispiel siehe Seite Persistente Inhalte innerhalb von Arbeitsabläufen).
Transition[] getTransitions()
Aufgabe: Ermittelt die Menge aller Transitionen, die im aktuellen Zustand für den aktuellen Benutzer verfügbar sind.
(Beispiel siehe Seite Ausgabe von Nachrichten in Arbeitsabläufen).
Data getData();
Aufgabe: Einem Arbeitsablauf-Modell kann ein Formular zugeordnet werden. Dieses Formular wird dem Redakteur im Aktivitätsdialog angezeigt und er kann Daten eingeben oder ändern. Über diese Methode hat das Skript Zugriff auf den Inhalt des Formulars und kann ggf. auch Veränderungen vornehmen.
Map getSession()
Aufgabe: Jeder Instanz eines Arbeitsablaufs wird (neben dem Formular) eine spezielle Datenstruktur (Java-Map) zugeordnet, die es einem Skript erlaubt, einen eigenen Instanzzustand zu speichern und ggf. zu verändern. Da dieser Zustand Teil der Arbeitsablauf-Instanz ist, steht er allen Skripten zur Verfügung, die während des Lebenszyklus der Instanz durchlaufen werden. Somit ist es über diese Methode möglich (instanzbezogene Daten) zwischen Skripten auszutauschen.
(Beispiel siehe Seite Persistente Inhalte innerhalb von Arbeitsabläufen).