Benutzereingabe (Wertauflöser)

Wertauflöser - Kurzfassung

Zweck: Fragt in einem interaktiven Kontext über eine modale Eingabeaufforderung eine Texteingabe vom Benutzer ab.

images/download/attachments/201662080/image-2025-3-13_16-40-29-version-1-modificationdate-1741880429371-api-v2.png


►WICHTIG◄ Dieser Wertauflöser steht in einem Client Workflow nicht zur Verfügung!


Der Benutzereingabe-Wertauflöser fragt in einem interaktiven Kontext über eine modale Eingabeaufforderung eine Texteingabe vom Benutzer ab, die im Regelfall den Rückgabewert des Wertauflösers definiert.

Ausnahmen:

  • Sofern innerhalb der als Maximale Wartezeit (s) parametrierten Wartezeit keine Eingabe durch den Benutzer erfolgt, wird die Eingabeaufforderung geschlossen und der Wert bei Zeitüberschreitung zurückgegeben.

  • Ist Abbrechen erlauben? ausgewählt, dann gibt der Wertauflöser beim Abbrechen der Eingabeaufforderung durch den Benutzer "Kein Wert" ($null) zurück und nicht etwa den Wert bei Zeitüberschreitung oder den Standardwert.

HINWEIS◄ Liegt kein interaktiver Kontext vor, z. B. weil eine Ereignisbehandlung durch ein Import-Profil ausgelöst wurde, dann kann natürlich auch keine Eingabeaufforderung erfolgen. In diesem Fall wird ohne Wartezeit der Wert bei Zeitüberschreitung (und nicht etwa der Standardwert) als Rückgabewert verarbeitet.

Laufzeitbeispiele:

Einzeiliger Eingabebereich mit Abbrechen-Button:

images/download/attachments/201662080/image-2025-3-13_16-44-37-version-1-modificationdate-1741880677306-api-v2.png


Mehrzeiliger JSON-Eingabebereich:

images/download/attachments/201662080/image-2025-3-13_16-53-26-version-1-modificationdate-1741881206417-api-v2.png

  • Der Leeren-Button entfernt allen Text aus dem Eingabebereich. Allerdings liefert die Eingabeaufforderung beim Klick auf den OK-Button dann immer noch eine leere Zeichenfolge ("") zurück, was nicht gleichzusetzen ist mit "kein Wert" ($null).

  • Auch nach dem manuellen Entfernen von allen eingegeben Textzeichen aus dem Eingabebereich bleibt eine leere Zeichenfolge ("") zurück.

  • Der Eingabebereich liefert also genau dann "kein Wert" ($null), wenn ...
    ... entweder der optional angebotene Abbrechen-Button verwendet wurde
    .. oder zur Laufzeit "kein Wert" ($null) als Standardwert anliegt und bis zum Klick auf den OK-Button keine Eingabe erfolgt.

  • Für den Eingabetyp "Einzeilig" (Beispiel links oben) ist das Drücken der Eingabetaste gleichbedeutend mit einem Klick auf den OK-Button. Soll dabei der Klick auf OK ohne Eingabe von einem Klick auf Abbrechen unterschieden werden können, sollte (mindestens) eine leere Zeichenfolge als Standardwert vorbelegt werden, falls sonst "kein Wert" ($null) anliegen würde.

  • Für den Eingabetyp "JSON" (Beispiel links unten) greift im mehrzeiligen Eingabebereich mit Zeilennummern ein spezifisches Highlighting und eine Syntax-Kontrolle.

    • Im Beispiel markiert das Fehler-Symbol images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/error.svg eine nicht konforme Zeile (Nr. 1). Bei Annäherung mit dem Mauszeiger erscheint ein Tooltip mit mehr Informationen (hier: Unexpected: '/')

    • Ein Kommentar ist in JSON nicht zulässig ( /* ... */ ), wird aber trotzdem hervorgehoben.

Konfiguration

Der Eingabewert ist lediglich als Bezugsobjekt für Wertauflöser in Parametern relevant.

Die Textparameter Titel, Nachricht, Standardwert und Wert bei Zeitüberschreitung können wahlweise statisch per Direkteingabe festgelegt oder über Wertauflöser zur Laufzeit definiert werden.

Per Standard ist die Direkteingabe aktiv (s. Nachricht im folgenden Screenshot), von der per Klick auf den kleinen grauen Pfeil rechts unten im Textfeld zur Wertauflöser-Definition umgeschaltet werden kann.

  • Der Parameter Titel definiert den Text für den Fenstertitel der Eingabeaufforderung per Direkteingabe oder (s. Beispiel) per Wertauflöser.


  • Der Parameter Nachricht definiert den Meldungstext der Eingabeaufforderung per Direkteingabe (s. Beispiel) oder per Wertauflöser.


  • Der Parameter Standardwert definiert den Text, mit dem der Eingabebereich beim Öffnen der Eingabeaufforderung vorbelegt ist.


  • Der Parameter Wert bei Zeitüberschreitung wird zugewiesen, wenn der Benutzer die Eingabeaufforderung bis zum Ablauf der per Parameter Maximale Wartezeit (s) definierten maximalen Wartezeit weder durch eine Eingabe noch durch "Abbrechen" beendet hat.


  • Die Auswahl für Eingabetyp definiert das Format für den Eingabebereich in der Eingabeaufforderung ("Einzeilig", "Mehrzeilig" und weitere Optionen ähnlich wie beim Formularelement Textfeld).


  • Die Auswahl für Größe ändern definiert, ob und ggf. in welchen Dimensionen (Breite, Höhe) das Fenster der Eingabeaufforderung per Drag & Drop an der rechten unteren Ecke angepasst werden kann. Sind Größenänderungen zulässig, dann ändert sich in diesem Bereich das Mauszeigersymbol:
    images/download/attachments/201662080/image2022-7-20_8-47-3-version-1-modificationdate-1741880344991-api-v2.png images/download/attachments/201662080/image2022-7-20_8-48-21-version-1-modificationdate-1741880344989-api-v2.png


  • Mit der Option Volle Größe füllt die Eingabeaufforderung automatisch den gesamten View Slot im Kontext. Die Fenstergröße kann dann unabhängig von der Auswahl für Größe ändern nicht geändert werden.


  • Mit der Option Abbrechen erlauben? bietet die Eingabeaufforderung zusätzlich zu den Standard-Buttons ("Leeren" und "OK") auch den Button "Abbrechen" an, mit dem die Eingabeaufforderung mit Rückgabewert $null beendet werden kann.


  • Die Ganzzahl für den Parameter Maximale Wartezeit (s) legt fest, nach welcher Wartezeit in Sekunden in einer interaktiven Sitzung die Eingabeaufforderung automatisch abgebrochen wird. Dann definiert der Parameter Wert bei Zeitüberschreitung den Rückgabewert.

    • Per Standard ist der Maximale Wartezeit (s) mit 30 Sekunden vorbelegt.

    • Mit einem Maximale Wartezeit (s) von 0 Sekunden wird nach 60 Sekunden ein Timeout ausgelöst.

images/download/attachments/201662080/image-2025-3-13_18-45-41-version-1-modificationdate-1741887940499-api-v2.png

Beispiel

Bestimmte Arbeitsstatus-Werte (wie "Abgeschlossen", "Storniert", usw.) sollen den Lebenszyklus von Geschäftsobjekten vom Typ "Sendung" unwiderruflich beenden. Falls einer dieser terminalen Arbeitsstatus in einem interaktiven Workflow zugewiesen wird, soll der Benutzer die Gelegenheit erhalten, im Feld "Grund" (reason) des hinzugefügten Arbeitsstatus-Eintrags einen "Schlusskommentar" einzutragen. Detailanforderungen hierzu:

  • Sofern im Kontext des Workflows bereits ein Text für den "Grund" (reason) vorbelegt wurde, soll dieser als "Standardwert" erscheinen, so dass er vom Benutzer ggf. überarbeitet, ergänzt oder komplett ersetzt oder gelöscht werden kann.

  • Der Benutzer soll die Möglichkeit erhalten, per Klick auf den "Abbrechen"-Button in der Eingabeaufforderung einen Rollback für die gesamte Transaktion zu bewirken und so den Wechsel zu einem terminalen Arbeitsstatus zu verhindern.

  • Tätigt der Benutzer innerhalb von 5 Minuten keine Eingaben, soll die Eingabeaufforderung geschlossen werden und der Arbeitsstatuswechsel inklusive dem ggf. vorbelegten "Grund" wirksam werden.

Laufzeitbeispiel:

images/download/attachments/201662080/image-2025-3-13_18-55-32-version-1-modificationdate-1741888532435-api-v2.png

  • Da Englisch als Verkehrssprache für die Abwicklung von Sendungen gilt, wird beim Bestätigen des Wareneingangs für eine Sendung automatisch der englische Text GOODS_RECEIPT confirmed als "Grund" vorbelegt. Passend dazu sollen ausnahmsweise auch der "Titel" (interner Name für den Ziel-Arbeitsstatus) und die "Nachricht" für die Eingabeaufforderung auf Englisch erscheinen.

  • Der Benutzer kann natürlich Eingaben in einer Sprache seiner Wahl tätigen, soll aber durch die englische "Ansprache" und Vorbelegung darauf aufmerksam gemacht werden, dass eigentlich englischer Inhalt erwartet wird.

  • Die Button-Beschriftungen der Eingabeaufforderung erscheinen dagegen für die Aktuelle Sprache der Sitzung.

Konfiguration:

Bevor Details zum Benutzereingabe-Wertauflöser erörtert werden, wird der Lösungsansatz im Überblick anhand der dargestellten Konfiguration für eine Ereignisbehandlung erklärt:

Als Auslösende Ereignisse müssen die Ereignisse für alle relevanten Arbeitsstatus ausgewählt werden, also diejenigen aus der Kategorie Arbeitsstatus (Ereignisse), die beim Hinzufügen eines Arbeitsstatus zu einer beliebigen Entität ausgelöst werden, die für Sendungen im Kontext des Beispiels als "Endstation" gelten.


Die Prüfende Regel stellt per Typprüfung sicher, dass nur Aktionen ausgeführt werden, wenn einer der relevanten Arbeitsstatus zu einer "Sendung" hinzugefügt wurde.


Als Aktion bei bestandener Regel wird eine Ausführen mit-Ereignisaktion genutzt, um als Bezugsobjekt für alle weiteren Ereignisaktionen den Arbeitsstatus-Eintrag festzulegen, auf den sich die Sendung im Eingabewert im Feld "Aktueller Arbeitsstatus" (currentWorkingState) bezieht:

  • Die Setze Wert-Ereignisaktion weist dem Feld "Grund" (reason) im aktuellen Arbeitsstatus-Eintrag den Rückgabewert der über den Benutzereingabe-Wertauflöser geöffneten Eingabeaufforderung zu.

  • Wie im Bild zu sehen werden aus dem Rückgabewert vorher durch den verketteten Trim rechts-Wertauflöser ggf. eingegebene endständige Whitespace-Zeichen (Leerzeichen, Zeilenwechsel, usw.) entfernt.

  • Anschließend wird durch eine Wenn Dann Sonst-Ereignisaktion festgestellt, ob für das Feld "Grund" der Wert "Kein Wert" ($null) lautet. Genau dann wird die Ereignisverarbeitung in deren Kontext die Ereignisbehandlung zur Laufzeit ausgelöst wurde, insgesamt abgebrochen und ein Rollback ausgeführt.

images/download/attachments/201662080/image-2025-3-13_18-50-16-version-1-modificationdate-1741888215776-api-v2.png

Der Benutzereingabe-Wertauflöser wird wie rechts abgebildet konfiguriert:

  • Der Titel wird durch den Auslösendes Ereignis-Wertauflöser definiert, dessen Rückgabewert als String-Abbildung den internen (i. d. R. englischen) Namen des Ereignisses liefert.

  • Für die Nachricht wird per Direkteingabe der Text FINAL REMARKS? definiert.

  • Der Standardwert wird zunächst per Objekt-Feld-Wertauflöser aus dem Feld "Grund" (reason) gelesen, in dem vorbelegter Text enthalten sein kann.

  • Der verkettete Standardwert-Wertauflöser definiert hier ausdrücklich, eine leere Zeichenfolge ("") für den Fall dass bisher kein "Grund" (Wert $null im Feld reason) vorliegt. Der Eingabebereich der Eingabeaufforderung erscheint also immer mindestens eine leere Zeichenfolge als Standardwert. Durch den verketteten Wert als Variable speichern-Wertauflöser wird der effektive Standardwert in die Variable default geschrieben, da derselbe Wert als Wert bei Zeitüberschreitung gelten soll.

  • Der Wert bei Zeitüberschreitung wird aus der Variablen default übernommen.

  • Die übrigen Einstellungen definieren eine Eingabeaufforderung mit Eingabebereich für mehrzeiligen Text (Eingabetyp), für die das Größe ändern nicht erlaubt ist und die - inklusive des optionalen "Abbrechen"-Buttons (Abbrechen erlauben?) für maximal 300 Sekunden (Maximale Wartezeit (s)) angezeigt wird.

ANMERKUNG◄ Mit dieser Konfiguration liefert die Eingabeaufforderung ausschließlich dann den Rückgabewert $null, wenn der "Abbrechen-Button vom Benutzer gedrückt wurde. Der Trim rechts-Wertauflöser gibt $null dann unverändert weiter.

images/download/attachments/201662080/image-2025-3-13_18-51-57-version-1-modificationdate-1741888316686-api-v2.png

Die Objekt-Feld-Regel innerhalb der nachgeschalteten Wenn Dann Sonst-Ereignisaktion prüft per Ist Gleich ausdrücklich den "Kein Wert" (als Vergleichswert), um einen vom Benutzer ausgeführten Abbruch zu erkennen.

  • Ist diese Bedingung erfüllt, wird eine Abbrechen-Ereignisaktion ausgeführt, die den Benutzer per Warnung über den Rollback informiert.

HINWEIS◄ Ein eine Prüfung per Ist leer wäre hier nicht geeignet, weil diese auch für die leere Zeichenfolge ("") bestanden würde, die mit der Konfiguration oben dann zurückgegeben wird, wenn der Benutzer bis zum Timeout nicht reagiert, einen leeren Standardwert per "OK" bestätigt oder Text eingibt und dieser per "Leeren" wieder entfernt und dann per "OK" bestätigt. Gemäß der Anforderung in unserem Beispiel soll der Rollback aber ausschließlich durch einen Klick auf "Abbrechen" ausgelöst werden.

images/download/attachments/201662080/image-2025-3-13_18-53-16-version-1-modificationdate-1741888396322-api-v2.png