Zufälliger Long-Wert

Wertauflöser - Kurzfassung

Zweck: Gibt serverseitig eine ganzzahlige, vorzeichenbehaftete Pseudozufallszahl mit 64 Bit (Long) zurück.

Siehe auch: Zufälliges Text-Token

images/download/attachments/201662993/image2022-1-19_7-50-36-version-1-modificationdate-1742282338216-api-v2.png

Der Zufälliger Long-Wert-Wertauflöser gibt serverseitig eine ganzzahlige, vorzeichenbehaftete Pseudozufallszahl mit 64 Bit (Long) zurück.


WICHTIG◄ In einem Client Workflow gibt der Zufälliger Long-Wert-Wertauflöser aus technischen Gründen nur die niedrigsten 52 Bits des zufälligen Long-Werts zurück. Die höherwertigen Bits werden ignoriert bzw. abgeschnitten. Das schließt auch das Vorzeichen-Bit (Nr. 64) mit ein! Der Wertebereich im Client Workflow ist also auf Ganzzahlen im Intervall [0;2^52[ begrenzt, während sich serverseitig der 64bit-Wertebereich annähernd symmetrisch um 0 aufspannt.


Konfiguration

Der Wertauflöser ignoriert den Eingabewert und verwendet keine Parameter.

Beispiel

Eine Ereignisbehandlung soll eine zufällige Auswahl aus einer Anzahl Optionen treffen. Die Optionen für die Auswahl sollen zur Laufzeit "dynamisch" über eine Suche (Ereignisaktion) ermittelt werden. Die Anzahl der Optionen kann dabei abhängig von den Basisdaten und den Suchkriterien variieren.

Alle durch die Suche (Ereignisaktion) qualifizierten Optionen sollen bei der Zufallsauswahl gleichberechtigt berücksichtigt, also mit derselben Wahrscheinlichkeit ausgewählt werden.

Im konkreten Beispiel soll eine Ereignisbehandlung ein zufällige Einfachauswahl aus einer Teilmenge von Instanzen für einen für einen Eigenen Entitätstyp (s. Eigene Typdefinitionen) "Aircraft" (Aircraft) treffen, deren Eignung für einen bestimmten Einsatz durch Einschränkungen innerhalb der Suche geprüft wird.

Konfiguration:

Der Screenshot rechts zeigt die Konfiguration einer Ereignisbehandlung im Überblick, die eine Liste qualifizierter "Kandidaten" ermittelt, eine zufällige Auswahl trifft und die Entscheidung per Benachrichtigung mitteilt:

  • Zunächst wird eine Suche (Ereignisaktion) ausgeführt, die aus allen Instanzen für den Eigenen Entitätstyp "Aircraft", für die im Ausführungskontext Lesezugriff besteht, geeignete Kandidaten ermittelt. Die Liste dieser Kandidaten für die zufällige Auswahl wird als "Ergebnisliste" in die Variable acft_subset geschrieben.

  • Alle weiteren Schritte finden im Aktionsblock einer Ausführen mit-Ereignisaktion statt, die per Parameter Objekt-Wertauflöser die Liste der Kandidaten in der Variable acft_subset als temporäres Bezugsobjekt festlegt:

    • Im ersten Schritt soll über den Rückgabewert des Zufälliger Long-Wert-Wertauflösers eine zufällige Auswahl aus den Kandidaten in der Variable acft_subset getroffen werden. Innerhalb einer Setze Wert-Ereignisaktion soll dazu die Indexnummer des auszuwählenden Listenwerts "gewürfelt" und der Variablen randomPick als Integer-Wert zugeordnet werden:

      • Innerhalb der Wertauflöserkette für den zuzuweisenden Wert (rechts) wird zunächst die zunächst die die Anzahl der Kandidaten per Objekt-Feld-Wertauflöser aus dem length-Feld der als Bezugsobjekt gegebenen Liste ermittelt. Im Berechne Wert-Wertauflöser kann der hier per Verkettung Eingabewert über den "Variablennamen" input adressiert werden. Über die Konfiguration für den Variablennamen random wird außerdem der Zufälliger Long-Wert-Wertauflöser einbezogen.

      • Der Berechnungsausdruck abs(random%input) ermittelt daraus einen Indexwert im zulässigen Bereich. Der Index der Liste beginnt mit dem Startwert 0, so dass der maximale zulässige Indexwert einer Liste length-1 lautet. Der Rest einer Ganzzahldivision (per Modulo-Operator %) durch die Anzahl der Listenwerte (length = input) bildet also den gewünschten Wertebereich ab, wenn man das Vorzeichen für negative Werte über die abs()-Funktion "eliminiert".

      • Aus dem Berechnungsergebnis mit dem Datentyp "Zahl mit Einheit" (UnitNumber) wird durch die Zuweisung an die Variable randomPick (links) mit dem Typ Integer eine Ganzzahl übernommen.

  • Abschließend wird das Ergebnis der zufälligen Auswahl durch eine Hinweis anzeigen-Ereignisaktion (s. u.) bekannt gegeben.

images/download/attachments/201662993/image-2025-3-18_8-27-34-version-1-modificationdate-1742282853896-api-v2.png

Der Screenshot rechts zeigt die Konfiguration für die Hinweis anzeigen-Ereignisaktion, die noch im Kontext der Ausführen mit-Ereignisaktion mit der Liste der Kandidaten als Bezugsobjekt ausgeführt wird:

  • Die Wert-Konfiguration für den Parameter Titel soll über die Anzahl der Kandidaten informieren, aus denen ausgewählt wurde:

    • Der auszugebende Text wird hier zunächst als statischer Text mit einem Platzhalter-Symbol (#) festgelegt.

    • Der verkettete Text ersetzen-Wertauflöser ersetzt den Platzhalter (Suchtext #) durch die "Länge" der Kandidatenliste, die in der Wert-Konfiguration für den Parameter Ersetzen mit per Objekt-Feld-Wertauflöser aus dem Bezugsobjekt ermittelt wird.

  • Die Wert-Konfiguration für die Meldung verkettet weitere Wertauflöser:

    • Der Listenwert-Wertauflöser bezieht sich auf die Kandidatenliste (Bezugsobjekt) und bestimmt per Modus "Wert (vom Anfang)" über den Offset den zurückzugebenden Listeneintrag. Im Parameter Offset ist dabei der der Name der Variable randomPick eingetragen, deren Rückgabewert zur Laufzeit den "gewürfelten" Index des Listeneintrags angibt.

    • Der verkettete Wert als Variable speichern-Wertauflöser speichert die zufällig ausgewählte "Aircraft"-Instanz in eine weitere Variable pickedAcft, auf die nachfolgende Ereignisaktionen zugreifen können.

    • Der verkettete Objekt-Feld-Wertauflöser liest das Feld registration aus der "Aircraft"-Instanz, über dessen Wert die Auswahl in der Meldung identifiziert werden soll.

  • Laufzeitbeispiel:

    images/download/attachments/201662993/image-2025-3-18_9-16-19-version-1-modificationdate-1742285778348-api-v2.png

ANMERKUNG◄ Der "Lückentext" im Titel für die Hinweis anzeigen-Ereignisaktion kann natürlich auch mehrsprachig ausgeführt werden, indem ein Wert aus Sprachverwaltung-Wertauflöser in Verbindung mit einem Sprachverwaltungseintrag verwendet wird, der einen Parameter ({0}) für die Anzahl der Optionen vorsieht.

images/download/attachments/201662993/image-2025-3-18_8-59-34-version-1-modificationdate-1742284773575-api-v2.png