Ereignisse und Skripte

yuuvis® RAD designer 9.x »

Für serverseitige Ereignisse im Ablauf von Prozessen werden Skripte implementiert. Wenn ein Ereignis ausgelöst wird, dann wird das entsprechende Skript ausgeführt. Die Skript-API kann nur in diesen Ereignisskripten verwendet werden.

Die beiden Hauptarten von serverseitigen Prozess-Ereignissen sind Bedingungsereignisse und allgemeine Ereignisse.

Bei Bedingungen muss jedes Ereignisskript einen booleschen Wert zurückgeben.

Allgemeine Ereignisse benötigen keinen Rückgabewert.

Neben dem folgenden Überblick finden Sie detaillierte Informationen in der API-Dokumentation, Bestandteil der Installation und über folgende Adresse erreichbar:

    <core-service-IP>:<Port>/rest-ws/#PAGE:bpm_script_api

Allgemeine Ereignisse

  • ActivityCreateCondition: Das entsprechende Startbedingungs-Skript muss einen booleschen Wert zurückgeben. Wenn true, erstellt die Prozess-Engine die Aufgabe für die Prozessinstanz, wenn false, wird die Aktivität nicht erstellt und es werden keine nachfolgenden Transitionen und Aktivitäten auf diesem Prozesspfad erstellt.
  • BeforeStartActivity: Nachdem eine Aufgabe erstellt wurde, wird dieses Ereignis ausgelöst. Wenn die Aktivität vom Typ 'Arbeitsschritt' ist, hat noch keine Benutzerinteraktion stattgefunden. Wenn die Aktivität vom Typ 'Container' ist, ist noch kein Containerinhalt ausgeführt worden.
  • BeforeEndActivity: Nachdem eine Aufgabe erfolgreich weitergeleitet wurde, wird dieses Ereignis ausgelöst. Bei Arbeitsschritt-Aktivitäten bedeutet dies, dass alle Benutzerinteraktionen abgeschlossen sind. Bei Container-Aktivitäten ist der gesamte Container-Inhalt abgeschlossen.

Diese Ereignisse laufen alle im Kontext des Systembenutzers.

Transitionsereignisse

Eine Transition ist ein Sequenzfluss zwischen zwei Aktivitäten. Es ist möglich, eine Skriptbedingung zu definieren, die bestimmt, ob diese Transition ausgeführt werden soll. Wenn eine abgeschlossene Aktivität eine ausgehende Transition hat, wird das Transitionsereignis ausgelöst. Da das Transitionsereignis ein Bedingungsereignis ist, muss es einen booleschen Wert zurückgeben. Wenn true, wird dieser Pfad ausgeführt und die Aktivität am Ende der Transition wird erstellt. Wenn false, wird die Aktivität nicht erstellt und es werden keine nachfolgenden Transitionen und Aktivitäten auf diesem Prozesspfad erstellt.

Fristen / Verzögerungen

Wenn im Prozessmodell Zeiträume definiert sind, sind mehrere zusätzliche Ereignisse verfügbar:

  • DeadlineExpired: Unterstützung durch Fristen. Wenn eine Frist abgelaufen ist, wird dieses Ereignis ausgelöst.
  • DelayFinished: Unterstützung durch Verzögerungen. Wenn eine Verzögerung beendet ist, wird dieses Ereignis ausgelöst.

Diese Ereignisse sind völlig losgelöst von der Prozessausführung und laufen im Kontext des Systembenutzers.

Spezifische Aktivitätsereignisarten

Container

Der Inhalt des Containers wird ausgeführt, nachdem das Skript ActivityCreateCondition true zurückgegeben hat und nachdem das Ereignis BeforeStartActivity ausgelöst wurde. Beim Eintritt in den Container wird ein Scope erstellt und das Ereignis SubScopeStarted ausgelöst. Wenn alle enthaltenen und erstellten Aktivitäten beendet sind, wird dieser Bereich abgeschlossen und das Ereignis SubscopeCompleted ausgelöst.

Beide Ereignisse laufen ebenfalls im Kontext des Systembenutzers.

Schleife

Das Ereignis 'Schleifenbedingung' wird bei jeder Iteration ausgelöst. Es hängt vom Schleifentyp ab, zu welchem Zeitpunkt das Ereignis ausgelöst wird:

  • Eine Schleifenbedingung zur Überprüfung vor der Ausführung (WHILE-DO) löst das Ereignis aus, bevor der Container betreten wird.

  • Eine Schleifenbedingung zur Überprüfung nach der Ausführung (REPEAT-UNTIL) löst das Ereignis aus, nachdem der Inhalt des Containers ausgeführt wurde und somit der Teilbereich abgeschlossen wurde.

Für diese Aktivitätsart werden die Ereignisse SubScopeStarted und SubScopeCompleted für jede Schleifeniteration ausgelöst.

Mehrfachausführungen (MIByData, MIByNumber, MIByPerformer)

Für diese Aktivitätsart werden die Ereignisse SubScopeCreated und SubScopeCompleted mit jeder ausgeführten Instanz des Containerinhalts ausgelöst.

Route

Für diese Aktivitätsart reicht es aus, ein Skript entweder für BeforeStartActivity oder AfterStartActivity zu implementieren.

Der Grund: Diese Ereignisse werden nacheinander ausgelöst, ohne dass dazwischen eine Aktivität stattfindet.

Teilprozess

Für diese Aktivitätsart wird das Ereignis BeforeStartActivity verwendet, um den Teilprozess zu starten und das Ereignis BeforeEndActivity um Daten von abgeschlossenen Teilprozessen zum Hauptprozess zu übertragen.

Arbeitsschritt

Die Arbeitsschritt-Aktivität bietet die folgenden Ereignistypen, die im Kontext des Benutzers laufen:

  • WorkitemPersonalized: Wenn eine Aufgabe im Eingangskorb personalisiert wird, wird dieses Ereignis ausgelöst.
  • WorkitemCancled: Wenn ein Benutzer eine Aufgabe zurückgibt, wird dieses Ereignis ausgelöst.
  • WorkitemSaved: Wenn ein Benutzer die Daten einer Aufgabe speichert oder weiterleitet, wird dieses Ereignis ausgelöst.

Diese Ereignisse hängen von den Aktionen des Benutzers im Eingangskorb ab. Sie können also mehrfach ausgelöst werden. Wenn ein Benutzer zum Beispiel ein Formular zehn Mal speichert, wird das Ereignis WorkitemSaved ebenfalls zehn Mal ausgelöst.

Im Ereignisscript ist es möglich, mit der Methode $.sudo in den Kontext des Systembenutzers zu wechseln.

Der Umfang der Benutzerinteraktion beginnt, nachdem das Skript ActivityCreateCondition true zurückgegeben hat und die BeforeStartActivity ausgelöst wurde.

Ein Arbeitsschritt im Benutzerkontext erzeugt je nach Konfiguration Aufgaben im Eingangskorb.