Relativer Datumsbereich mit Zeit

Wertauflöser - Kurzfassung

Zweck: Liefert einen "Datumsbereich mit Zeit", der durch vordefinierte oder benutzerdefinierte Zeitberechnungsausdrücke relativ zur Systemzeit oder dem Eingabewert (nur für "Benutzerdefiniert") berechnet wird.

Siehe auch: Typ Datumsbereich (Dynamische Aufzählung), Relatives Datum mit Zeit (Wertauflöser)

images/download/attachments/78256094/image2022-9-16_9-23-22-version-1-modificationdate-1663313002648-api-v2.png

Der Relativer Datumsbereich mit Zeit-Wertauflöser liefert einen "Datumsbereich mit Zeit", der abhängig vom ausgewählten Typ relativ zu einem der folgenden Bezugszeiträume ermittelt wird:

  • Per Standard gilt die aktuelle Systemzeit als Bezugszeitraum (mit demselben Wert für "Von" und "Bis") für die durch den Typ bestimmte "relative" Berechnung des Rückgabewerts.
    HINWEIS◄ Abhängig vom Ausführungskontext kann entweder die Systemzeit des Servers (z. B. in Ereignisbehandlungen) oder des Clients (z. B. in einem Client Workflow) ausschlaggebend sein.

  • Der Eingabewert wird ausschließlich in Verbindung mit dem Typ "Benutzerdefiniert" (CUSTOM) als Bezugszeitpunkt berücksichtigt, sofern dieser einem der folgenden Datentypen entspricht:

Eingabewert-Typ

Klasse

Bezugszeitraum

Zeitzone (aus Eingabewert)

"Datumsbereich mit Zeit"

core:DateRange

Feld "Von" (start) - "Bis" (end)

Feld "Zeitzone" (timeZone) wird für Rückgabewert nur dann berücksichtigt, falls keine Auswahl für den Parameter Zeitzone besteht

"Datum mit Zeit"

core:DateTime

Feld "Datumswert" (dateValue)
für "Von" und "Bis"

"Long"

java.lang.Long

Eingabewert
für "Von" und "Bis"

n/a

"Timestamp"

java.sql.Timestamp

"Date"

java.util.Date

Der Rückgabewert wird abhängig vom gewählten Typ (s. Typ Datumsbereich) ausgehend vom Bezugszeitraum durch je einen Zeitberechnungsausdruck für Startwert ("Von"-Zeitpunkt) und Endwert ("Bis"-Zeitpunkt) ermittelt:

Typ

Konfigurationsbeispiel

Berechnung des Rückgabewerts

"Benutzerdefiniert"

images/download/attachments/78256094/image2022-9-16_13-46-24-version-1-modificationdate-1663328784169-api-v2.png

Auf den Bezugszeitraum (entweder geeigneter Eingabewert oder die Systemzeit) werden in den Parametern Startwert und Endwert definierten Zeitberechnungsausdrücke angewendet.

Im Beispiel wird ausgehend von der Systemzeit oder einem geeigneten Eingabewert der Zeitraum berechnet, der um 22:00 Uhr am Kalendertag vor dem "Von"-Datum beginnt und am auf das "Bis"-Datum folgenden Kalendertag um 6:00 Uhr endet.

WICHTIG◄ Die für den Rückgabewert anwendbare Zeitzone ist auch ausschlaggebend für die Interpretation der Zeitberechnungsausdrücke. Da im Beispiel (links) der Parameter Zeitzone keine Auswahl vorgibt, wird die Zeitzone aus dem Eingabewert übernommen, sofern dieser eine spezifiziert (s. Tabelle oben). Liegt für den Parameter Zeitzone eine Auswahl vor, dann wird stattdessen die betreffende Zeitzone für die Umrechnung verwendet und dem Rückgabewert zugewiesen.

Wirkung von Zeitzonen auf die Interpretation im Zeitwert des Zeitberechnungsausdrucks

  • Als Eingabewert liegt ein "Datum mit Zeit" vor, das sich auf den 20.12.2020 um 00:00 Uhr in der Zeitzone "Asia/Manila" bezieht.

  • Die Beispielkonfiguration (ohne Auswahl für die Zeitzone) liefert als Rückgabewert das Intervall vom 19.12.2020 um 22:00 Uhr bis 21.12.2020 um 6:00 Uhr (in Manila).

  • Mit "Europe/Berlin" im Parameter Zeitzone, würde stattdessen der Zeitraum vom 18.12.2020 um 22:00 Uhr bis 20.12.2020 um 6:00 Uhr (in Berlin) zurückgegeben. Das entspricht dem Zeitraum vom 19.12.2020 um 05:00 Uhr bis 20.12.2020 um 13:00 Uhr in Manila. Der Rückgabewert liegt also 17 Stunden vor dem Original-Ergebnis (s. o.).

    • Der Eingabewert wird zuerst in die Zeitzone "Berlin" umgerechnet (19.12.2020 17:00).

    • Die Offsets für Startwert (-1) und Endwert (+1d) werden "in Berliner Zeit" angewendet. Danach wird die lokale Uhrzeit gesetzt.

alle anderen Typen

images/download/attachments/78256094/image2022-9-16_14-19-32-version-1-modificationdate-1663330773142-api-v2.png

Die für den ausgewählten Typ in der Dynamischen Aufzählung Typ Datumsbereich hinterlegten Zeitberechnungsausdrücke wird jeweils auf die aktuelle Systemzeit des Servers oder Clients angewendet.

Im Beispiel wird das Ende des aktuellen Kalendertags (s. Typ Datumsbereich, "Nächster Tag") in der Zeitzone "Europe/Lisbon" zurückgegeben.

  • Die Zeitberechnungsausdrücke für "Nächster Tag" lauten 0h 0m 0s 0S +1d (für den "Startwert") und 23h 59m 59s 999S +1d (für den "Endwert").

  • Da als Zeitzone "Europe/Lisbon" ausgewählt ist, wird der Zeitraum für den nächsten Kalendertag in dieser Zeitzone ausgegeben. Dieser kann von dem Kalendertag abweichen, der in der ohne Auswahl für den Parameter Zeitzone anwendbaren Zeitzone als "nächster Tag" gelten würde. Etwa wenn sich das System in der Zeitzone "Europe/Berlin" befindet und die Uhrzeit 00:30 anzeigt. Dann ist aus Berliner Sicht in Lissabon noch "Gestern".

Konfiguration

HINWEIS◄ Der Eingabewert wird ausschließlich in Verbindung mit dem Typ "Benutzerdefiniert" (CUSTOM) berücksichtigt. Dann muss ein "Datumsbereich mit Zeit" oder als Datum interpretierbarer Wert vorliegen.

Parameter

Konfiguration

Beschreibung

Typ

images/download/attachments/78256094/image2022-9-16_15-56-26-version-1-modificationdate-1663336586624-api-v2.png

Der Parameter Typ ermöglicht die statische Einfachauswahl eines Werts aus der Dynamischen Aufzählung Typ Datumsbereich.

Wie im Bild (links) gezeigt, wird die Auswahl durch eine Suchfunktion unterstützt.

Dynamische Aufzählungsfilter können die Verfügbarkeit von Optionen im Dropdown für den Kontext der Konfiguration einschränken. Sie haben keine Einfluss auf das Laufzeitverhalten des Wertauflösers.

HINWEIS◄ Wird kein Typ ausgewählt, dann wird immer der Datumsbereich Systemzeit - Systemzeit zurückgegeben.

Zeitzone

images/download/attachments/78256094/image2022-9-16_15-59-1-version-1-modificationdate-1663336741762-api-v2.png

Der Parameter Zeitzone ermöglicht optional die statische Einfachauswahl einer von Java unterstützten Zeitzone.

Wie im Bild (links) gezeigt, wird die Auswahl durch eine Suchfunktion unterstützt.

Die Auswahl einer Zeitzone beeinflusst die Interpretation der zur Laufzeit angewendeten Zeitberechnungsausdrücke. Außerdem wird die ausgewählte Zeitzone für den Rückgabewert verwendet.

Wird keine Zeitzone ausgewählt, dann wird im Allgemeinen die im Kontext anwendbare Standardzeitzone verwendet, die (mit absteigender Priorität) durch ein der folgenden Einstellungen definiert wird:

  • Feld "Default Zeitzone" im Benutzerkonto der tatsächlich angemeldeten Sitzung

  • Feld "Default Zeitzone" im Firmenkonto der tatsächlich angemeldeten Sitzung

  • Einstellungen im für den Ausführungskontext (Client/Server) relevanten Betriebssystem

Falls in Verbindung mit dem Typ "Benutzerdefiniert" (CUSTOM) ein Eingabewert vorliegt, der explizit eine Zeitzone beinhaltet, wird diese berücksichtigt, wenn keine Auswahl für den Parameter Zeitzone getroffen wurde.

HINWEIS◄ Die Auswahloptionen für die Zeitzonen sind nicht lokalisierbar und sie können auch nicht durch Dynamische Aufzählungsfilter eingeschränkt werden. Die angezeigten Texte entspringen direkt der Java-Umgebung.

Startwert
und
Endwert

images/download/attachments/78256094/image2022-9-16_16-26-26-version-1-modificationdate-1663338386474-api-v2.png

Die Parameter Startwert und Endwert unterstützten die Eingabe je eines statischen Texts, der zur Laufzeit als Zeitberechnungsausdruck (Details s. Relatives Datum mit Zeit, Abschnitt "Zeitberechnungsausdrücke") interpretiert wird.

HINWEIS◄ Diese Parameter erscheinen nur, wenn der Typ "Benutzerdefiniert" (CUSTOM) ausgewählt ist. Für alle anderen Typen sollten in der Dynamischen Aufzählung Typ Datumsbereich geeignete Zeitberechnungsausdrücke für "Start" und "Ende" hinterlegt sein. Dort können auch eigene Typen mit spezifischen Zeitberechnungsausdrücken ergänzt werden.

Im Beispiel verweist der Startwert auf den Beginn eines Kalendertags in der Zeitzone "Asia/Tokyo", der abhängig vom Bezugszeitraum entweder durch die Systemzeit, den Eingabewert oder das darin enthalte "Von"-Feld bestimmt ist.

Der Endwert wird als Beginn des Quartals in derselben Zeitzone ermittelt, das nach dem Ende des Bezugszeitraums (bestimmt durch Systemzeit, Eingabewert oder darin enthaltenes "Bis"-Feld) beginnt.

Wird kein Zeitberechnungsausdruck als Startwert oder Endwert angegeben, dann wird die entsprechende Komponente aus dem Bezugszeitraum ggf. unter Berücksichtigung der ausgewählten Zeitzone ausgegeben.

Beispiele

Einfacher Anwendungsfall: Abgrenzen einer Suche durch einen relativen Datumsbereich

In einer Übersicht für Ereignisbehandlungen kann über Filter oder Sortierungen für die Spalte "Änderungsdatum" (lastModified)einfach festgestellt werden, welche der angezeigten Ereignisbehandlungen gestern zuletzt geändert wurden.

Laufzeitbeispiel:

images/download/attachments/78256094/image2022-9-16_18-12-17-version-1-modificationdate-1663344737596-api-v2.png

  • Im Dropdown zum Filtern für die Spalte "Änderungsdatum" erscheinen die über die Dynamische Aufzählung Typ Datumsbereich definierten "Datumsbereichstypen" zur Auswahl, weil dies für den Datentyp der Spalte (Timestamp) so vorgesehen ist.

  • Im Bild wurde "Vergangener Tag" gewählt, so dass die Liste nur noch Ereignisbehandlungen als Zeilen auflistet, deren "Änderungsdatum" in dem Datumsbereich liegt, der zur aktuellen Systemzeit als "gestern" gilt.

Die Definition für den systemseitig vordefinierten relativen Datumsbereich "Vergangener Tag" (YESTERDAY) soll nun auch verwendet werden, um für die Übersicht eine Zeilenformatierung einzurichten, die alle Zeilen mit "gestern geänderten" Ereignisbehandlungen gelb schattiert.

Konfiguration:

Der Screenshot rechts zeigt die Konfiguration für die Zeilenformatierung, die innerhalb der bestehenden Datengrid-Einstellungen für den Kontext der Ereignisbehandlungen hinzugefügt wurde:

  • Der Zeilenformatierung wurde der Formatname "MODIFIED_YESTERDAY" zugewiesen.

  • Als einzige Bedingung dient hier eine Feld Einschränkung für das Feld "Änderungsdatum" (lastModifiied), auf das links durch eine Feldprojektion zugegriffen wird.

  • Für den Vergleichswert auf der rechten Seite der Feld Einschränkung kommt der Relativer Datumsbereich mit Zeit-Wertauflöser zum Einsatz:

    • Als Typ wird hier - analog zum interaktiv gesetzten Filter im Laufzeitbeispiel oben - "Vergangener Tag" (YESTERDAY) ausgewählt.

    • Auf die Angabe einer Zeitzone wird verzichtet.

  • Entscheidend ist die Auswahl des Vergleichsoperators between, der den Abgleich zwischen dem Zeitpunkt (linke Seite) und dem Zeitraum (rechte Seite) ermöglicht. Effektiv werden die Formateinstellungen der Zeilenformatierung "MODIFIED_YESTERDAY" als genau den Zeilen zugeordnet, die als "gestern geändert" erkannt werden, weil das "Änderungsdatum" im relativen Datumsbereich "Vergangener Tag" (mit Bezug zur aktuellen Systemzeit) liegt.


images/download/attachments/78256094/image2022-9-16_18-21-28-version-1-modificationdate-1663345288463-api-v2.png

HINWEISEntsprechende Einschränkungen können auch zur Definition einer Suche für ein Import-Profil im Lobster_data verwendet werden. Die XML-Struktur rechts zeigt wie einfach der Zugriff auf vordefinierte Datumsbereiche (hier: YESTERDAY) über das DateRangeValue-Objekt (hier als value-Element einer Feld Einschränkung) innerhalb einer Suche ist.

<?xml version="1.0" encoding="UTF-8"?>
<core:PropertySearch xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:core="CORESYSTEM">
<core:PropertyProjection property="lastModified"/>
<compareType>between</compareType>
<value type="YESTERDAY" xsi:type="core:DateRangeValue"/>
</core:PropertySearch>

Einfacher Anwendungsfall: Abbilden der Terminzusage "Bin gleich da!"

Wenn einer Sendung der Arbeitsstatus "Bin gleich da!" (ON_FINAL) zugewiesen wird, soll einer Variable deliverySlot ein Datumsbereichsobjekt zugeordnet werden, der sofort - also mit der aktuellen Systemzeit - beginnt und 15 Minuten später endet.

Konfiguration:

Innerhalb einer Ereignisbehandlung wird eine Setze Wert-Ereignisaktion wie rechts abgebildet konfiguriiert:

  • Auf der linken Seite wird eine Variable deliverySlot als Ziel der Zuweisung bestimmt, in der der berechnete "Datumsbereich mit Zeit" festgehalten werden soll, bevor andere Ereignisaktionen ausgeführt werden.

  • Auf der rechten Seite wird einer Relativer Datumsbereich mit Zeit-Wertauflöser verwendet, um ausgehend von der Systemzeit (Annahme: der Eingabewert im Kontext ist kein Datumsbereich oder Zeitpunkt) Datumsbereich zu berechnen, der das Versprechen "Bin gleich da!" quantifizieren soll:

    • Da kein Zeitberechnungsausdruck für den Startwert angegeben wurde, wird die Systemzeit gesetzt.

    • Der Endwert wird durch einen Versatz um 15 Minuten (+15) bestimmt, der unter Berücksichtigung der Sekunden und Millisekunden relativ zur Systemzeit berechnet wird.

    • Die Auswahl der Zeitzone hat hier keinen Einfluss auf die Berechnung. Allerdings wird sie dem "Datumbereich mit Zeit" im Rückgabewert explizit zugeordnet.

images/download/attachments/78256094/image2022-9-16_17-4-3-version-1-modificationdate-1663340643240-api-v2.png

Die Konfiguration soll im nächsten Schritt dahingehend optimiert werden, dass der Datumsbereich für den deliverySlot nicht mehr relativ zur Systemzeit, sondern relativ zum "Datum mit Zeit"-Wert im Feld "Realisierungszeit" (realization) für den betreffenden Arbeitsstatus-Eintrag berechnet wird.

Die bestehende Konfiguration wird dazu wie rechts abgebildet angepasst:

  • Die linke Seite kann unverändert übernommen werden. Als Ziel der Zuweisung gilt wieder die Variable deliverySlot.

  • Auf der rechten Seite wird per Verkettung oberhalb des Relativer Datumsbereich mit Zeit-Wertauflösers ein Eingabewert für diesen beschafft. Da der Wertauflöser mit dem Arbeitsstatus der Sendung (aus dem Feld currentWorkingstate; nicht im Bild) als Bezugsobjekt ausgeführt wird, kann auf dessen Feld "Realisierungszeit" (realization) über einen Objekt-Feld-Wertauflöser direkt zugegriffen werden.

    • Die Parameter für den Relativer Datumsbereich mit Zeit-Wertauflöser können unverändert beibehalten werden, da die "Realisierungzeit" als Eingabewert für den Startwert und den Endwert als "Bezugszeitpunkt" gilt.

HINWEIS◄ Falls beim beim Hinzufügen eines Arbeitsstatus keine "Realisierungszeit" für den Arbeitsstatus-Eintrag angegeben wird, weist Lobster Data Platform / Orchestration automatisch die aktuelle Systemzeit als "Realisierungszeit" zu. Daher sollte dieses Feld für einen Arbeitsstatus-Eintrag nie leer sein, wenn die Ereignisbehandlung beim Setzen eines Arbeitsstatus (s. Arbeitsstatus (Ereignisse)) ausgelöst wird. Im Allgemeinen ist allerdings zu berücksichtigen, dass ein Relativer Datumsbereich mit Zeit-Wertauflöser mit dem Typ "Benutzerdefiniert" auf die Systemzeit zurückgreift, falls der Eingabewert leer ist oder auch nur dem Typ nach ungeeignet.

images/download/attachments/78256094/image2022-9-16_17-21-40-version-1-modificationdate-1663341700441-api-v2.png