Aktuellen Arbeitsstatus setzen

Ereignisaktion - Kurzfassung

Zweck: Versucht dem aktuellen Bezugsobjekt einen bestimmten Arbeitsstatus als "Aktuellen Arbeitsstatus" zuzuweisen.

Die Ereignisaktion Aktuellen Arbeitsstatus setzen versucht dem aktuellen Bezugsobjekt einen bestimmten Arbeitsstatus als "Aktuellen Arbeitsstatus" zuzuweisen.

images/download/attachments/73601017/image2021-5-10_16-36-26-version-1-modificationdate-1620657389562-api-v2.png

Dabei können den Feldern Grund (reason) und Realisierungszeit (realization) für den im Erfolgsfall erstellten Arbeitsstatus-Eintrag Werte zugewiesen werden.

Der Erfolg hängt von folgenden Faktoren ab:

  • Das Bezugsobjekt muss einem Entitätstyp angehören, der als "Arbeitsstatusbesitzer" qualifiziert ist (s. Arbeitsstatus (Ereignisaktionen)).

  • Für die im anwendbaren Anmeldekontext (s. a. Ausführen als) beanspruchte Rolle muss die Berechtigung zum "Arbeitsstatus/Erstellen" für den Entitätstyp des Bezugsobjekts gewährleistet sein.

  • Sofern Arbeitsstatus-Transformationen für den aktuellen Kontext anwendbar sind, müssen diese den Wechsel vom aktuellen Arbeitsstatus des Bezugsobjekts zu dem im Parameter Arbeitsstatus ausgewählten erlaubten.

Besonderheiten zur Besitzrechten und Firmenfreigaben für Arbeitsstatus-Einträge

  • Wenn einem Bezugsobjekt über die Ereignisaktion Aktuellen Arbeitsstatus setzen erfolgreich ein Arbeitsstatus zugewiesen wird, dann gilt die Firma der Session aus dem anwendbaren Anmeldekontext (s. a. Ausführen als) per Standard als Besitzer des erzeugten Arbeitsstatus-Eintrags.

  • Die Zugriffskontrolle über Besitz und Firmenfreigaben ist für einzelne Arbeitsstatus-Einträge dabei nur dann wirksam, wenn diese direkt z. B. durch eine Suche, adressiert werden. Zugriffsrechte für die in den Einträgen als "Arbeitsstatusbesitzer" registrierte Entität beziehen, spielt dabei kein Rolle.

  • Ausgehend von einem konkreten "Arbeitsstatusbesitzer" spielt dagegen die Zugriffskontrolle für individuelle Arbeitstatus-Einträge anhand von Besitz und Firmenfreigaben keine Rolle. Solange Zugriff auf den "Arbeitsstatusbesitzer" besteht und entsprechende Rollenrechte vorliegen, zeigt die "Arbeitsstatus-Historie" daher immer sämtliche historischen Einträge und damit einen lückenlosen Statusverlauf an.

  • Für das Erstellen eines Arbeitsstatus-Eintrags findet effektiv keine Zugriffskontrolle anhand von Besitzrechten bzw. Firmenfreigaben, die unmittelbar den Arbeitsstatus für einen Entitätstyp betreffen, statt. Ereignisbehandlungen, die z. B. über den Eingabeobjekt (Typsicher)-Wertauflöser eine beliebige als "Arbeitsstatusbesitzer" geeignete Entität identifizieren können, können über die Ereignisaktion Aktuellen Arbeitsstatus setzen immer auch einen Arbeitsstatus-Eintrag dafür erstellen. Zugriffsrechte für die Entität sind dazu ebenso wenig erforderlich wie eine Freigabe zum Erstellen eines Arbeitsstatus.

Konfiguration

Die Ereignisaktion muss im Kontext eines geeigneten Bezugsobjekts ("Arbeitsstatusbesitzer") ausgeführt werden.

  • Der Parameter Arbeitsstatus erwartet einen Wert der Dynamischen Aufzählung Arbeitsstatus oder alternativ eine Zeichenfolge, die dem internen Namen eines dieser Werte entspricht. Wird kein Wert oder ein Textwert angegeben, der nicht in einen der vordefinierten Arbeitsstatus-Werte konvertiert werden kann, tritt zur Laufzeit ein Fehler (ggf. inkl. Rollback) auf.

  • Der optionale Parameter Grund bietet die Möglichkeit, einen Textwert für das entsprechende Feld (reason) im zu erstellenden Arbeitsstatus-Eintrag zu definieren. Der Textwert kann entweder direkt (s. Screenshot rechts) oder als Rückgabewert eines Wertauflösers geliefert werden.

  • Der Parameter Realisierungszeit dient dazu den Zeitpunkt zu definieren, an dem das Bezugsobjekt den aktuellen Arbeitsstatus tatsächlich angenommen hat. Wird hier kein Wert angegeben (Standard), dann wird automatisch die aktuelle Systemzeit ("Jetzt", s. Relatives Datum mit Zeit) als Realisierungszeit für den Arbeitsstatus-Eintrag verwendet.

    HINWEIS◄ Der Standardwert ("Jetzt") wird der Realisierungszeit unter Berücksichtigung der optionalen Einstellungen für die "Default Zeitzone" im Firmenkonto oder Benutzerkonto zugewiesen (sofern vorhanden). Dabei wird nur der originäre Anmeldekontext berücksichtigt (Ausführen als hat keinen Einfluss).

images/download/attachments/73601017/image2021-5-10_16-36-26-version-1-modificationdate-1620657389562-api-v2.png

Beispiel

Der Workflow für über eine Schnittstelle in Lobster Data Platform / Orchestration importierte Bestellungen sieht vor, dass diese im Zuge einer Eingangsprüfung vom automatisch zugewiesenen Arbeitsstatus "Importiert" (IMPORTED) abhängig vom Prüfergebnis in einen der Arbeitsstatus "Freigegeben" (RELEASED) oder "Abgelehnt" (REJECTED) überführt werden. In der Erfassungsmaske für zu prüfende Bestellungen wird ein Button "Prüfung" angeboten, der über ein Eigenes Aktionsevent mit den Daten der Bestellung die folgende Ereignisbehandlung auslöst.

Die Ereignisbehandlung soll das Prüfergebnis vom Benutzer über eine Benutzereingabe (Wertauflöser) abfragen:

  • Der Standardtext "OK" soll die Freigabe der Bestellung signalisieren.

  • Jede andere Eingabe wird als Begründung für eine Ablehnung interpretiert.

  • Die Prüfung soll ohne Urteil abgebrochen werden können, indem kein Text eingegeben oder "Abbrechen" gedrückt wird.

Laufzeitbeispiel:

images/download/attachments/73601017/image2021-5-11_9-38-16-version-1-modificationdate-1620718698281-api-v2.png

Konfiguration:

Eine Ereignisbehandlung für ein Eigenes Aktionsevent "Prüfung" stellt mir einer Typprüfung sicher, dass das Ereignis im Kontext einer Bestellung ausgelöst wurde. Die Aktionen bei bestanderer Regel werden wie rechts abgebildet konfiguriert.

Innerhalb einer Wenn Dann Sonst-Ereignisaktion werden dazu die drei möglichen Fälle für den Ausgang einer Eingangsprüfung mit spezifischen Aktionen verknüpft:

  • Im WENN-Zweig (links) wird innerhalb einer Objekt-Feld-Regel das Prüfergebnis per Benutzereingabe (Wertauflöser) abgefragt, der die eingegebene Zeichenfolge bzw. "keinen Wert" zurückgibt. Der Vergleichtsyp Ist leer deckt die Abbruch-Szenarien per Button "Abbruch" (kein Wert) oder "Leeren" & "OK" (leere Zeichenfolge) gleichermaßen ab. In diesem Fall soll nichts passieren, daher bleibt der Aktionsblock unterhalb leer. Der Rückgabewert wird per Verkettung mit dem Wert als Variable speichern-Wertauflöser in die Variable input geschrieben, damit die Eingabe des Benutzers (soweit vorhanden) für die anderen Zweige und deren Aktionen zur Verfügung steht.

  • Im SONST-WENN-Zweig (mittig) wird geprüft, ob die Variable input den Wert "OK" (unter Beachtung der Groß-/Kleinschreibung) hat. Im einfachsten Fall hat der Benutzer diesen in der Benutzereingabe (Wertauflöser) vorbelegten Wert per Klick auf den Button "OK" bestätigt. Lautet die Eingabe "OK", dann wird die Ereignisaktion Aktuellen Arbeitsstatus setzen für den Arbeitsstatus "Freigeben" ausgelöst. Dabei wird als Grund das Ergebnis einer Textverkettung zugewiesen, die auf die ID des angemeldeten Benutzers (via Benutzer der Session; zugeklappt im Bild) als Urheber der Freigabe verweist.

  • Der SONST-Zweig (rechts) handelt den Fall ab, dass die Variablen input nicht leer ist, aber einen anderen Text als "OK" enthält. Dieser wird als Begründung für eine Ablehnung der Bestellung interpretiert. Daraufhin wird ebenfalls eine Aktuellen Arbeitsstatus setzen-Ereignisaktion ausgeführt, die den Arbeitsstatus "Abgelehnt" zuweist und als Grund den Eingabetext aus der Variablen input vermerkt.

ANMERKUNG◄ In beiden Fällen wird auf die explizite Zuweisung einer Realisierungszeit verzichtet, so dass der erzeugte Arbeitsstatus-Eintrag zum Ausführungszeitpunkt "verbucht" wird.

images/download/attachments/73601017/image2021-5-11_9-16-34-version-1-modificationdate-1620717395637-api-v2.png