Trackingstatus hinzufügen

Ereignisaktion - Kurzfassung

Zweck: Legt einen neuen Trackingstatus-Eintrag an, der der Trackingstatus-Historie eines Bezugsobjekts (Geschäftstransaktionsobjekt oder Position) hinzugefügt werden soll. Der neue Eintrag wird in einer Variablen gespeichert, so dass er durch nachfolgende Ereignisaktionen bearbeitet werden kann.


#images/download/attachments/189442603/image-2024-12-17_8-43-17-version-1-modificationdate-1734421396703-api-v2.png

Die Ereignisaktion Trackingstatus hinzufügen legt einen neuen Trackingstatus-Eintrag (baseTS:TrackingStatusEntry) an, der der Trackingstatus-Historie eines Bezugsobjekts hinzugefügt werden soll.

Als Bezugsobjekt zum Hinzufügen von Trackingstatus-Einträgen eignen sich Geschäftstransaktionsobjekte und teilweise auch deren Positionen gemäß folgender Übersicht:

Geschäftstransaktionsobjekt

Trackingstatus
auf Kopfebene

Trackingstatus
auf Positionsebene

Allgemeines Geschäftsobjekt

images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/check.svg

images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/check.svg

Bestellungen

images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/check.svg

images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/check.svg

Sendungen

images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/check.svg

images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/check.svg

Manifeste

images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/check.svg

images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/error.svg

Zeitfensterbuchung
(s. Zeitfenstermanagement)

images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/error.svg

images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/error.svg

HINWEISE

  • Ist das Bezugsobjekt eine Position eines Geschäftstransaktionsobjekts, sind die Einschränkungen in Abschnitt "Hinzufügen von Trackingstatus zu Positionen eines Geschäftstransaktionsobjekts" (s. unten) zu beachten.

  • Sofern das Hinzufügen des Trackingstatus-Eintrags erfolgreich abgeschlossen werden kann UND dies die Änderung mindestens eines Trackingstatus-Attributs des Bezugsobjekts bedingt (s. Schritt 3 im folgenden Abschnitt bzw. Erläuterungen für Trackingstatus-Übergänge), wird das Bezugsobjekt beim Abschluss der Transaktion gespeichert. Dabei werden auch alle Änderungen berücksichtigt, die bis zum Abschluss der Transaktion an den Daten des Bezugsobjekts vorgenommen werden - unabhängig davon ob diese vor oder nach dem Aufruf von Trackingstatus hinzufügen stattfinden.
    HINWEIS◄ Ist das Bezugsobjekt eine Position eines Geschäftstransaktionsobjekts, wird beim Aktualisieren mindestens eine Trackingstatus-Attributs der Position auch das Geschäftstransaktionsobjekt insgesamt zum Speichern am Ende der Transaktion vorgemerkt. Falls eine entsprechende Ereignisbehandlung ausgelöst wird, während das Geschäftstransaktionsobjekt innerhalb derselben Sitzung in einer Erfassungsmaske geöffnet ist, können dadurch ungespeicherte Änderungen verloren gehen.

  • Für die Auswertung von Zuordnungskriterien für Trackingstatus-Workflows gibt der ggf. veränderte volatile Datenstand des Bezugsobjekts zum Aufrufzeitpunkt der Ereignisaktion Trackingstatus hinzufügen den Ausschlag. Ungespeicherte Änderungen am Bezugsobjekt, die vor Trackingstatus hinzufügen vorgenommen werden, können ggf. die "Zuordnung" von Trackingstatus-Workflows beeinflussen. Das kann entscheidend dafür sein, ob der gewünschte Trackingstatus-Eintrag hinzugefügt und die Transaktion abgeschlossen werden kann.

Abläufe beim Hinzufügen eines Trackingstatus-Eintrags

Schritt 1: Neuen Trackingstatus-Eintrag anlegen und ggf. initialisieren

Eine neue Instanz für einen Trackingstatus-Eintrag (baseTS:TrackingStatusEntry) angelegt.

  • Sofern für den Konfigurationsparameter Trackingstatus ein Trackingstatus ausgewählt ist, wird dieser dem Feld "Trackingstatus-Code.code" (trackingStatus.code) zugewiesen.

WICHTIG◄ Wird auf die Auswahl eines Trackingstatus in der Konfiguration verzichtet, dann muss diesem Feld im folgenden Abschnitt TS mit <Entitätstyp> anpassen über Ereignisaktionen ein Trackingstatus zugewiesen werden, sonst tritt ein Fehler mit Rollback ("Kein Trackingstatus vorhanden") auf.

HINWEIS◄ Derselbe Fehler tritt auf, falls der hinzuzufügende Trackingstatus im betreffenden System nicht existiert, z. B. weil die betreffenden Stammdaten gelöscht wurden, nachdem die Ereignisaktion konfiguriert wurde.

Schritt 2: Trackingstatus-Eintrag anpassen (optional)

Unterhalb der Konfigurationsparameter ist ein Block von Ereignisaktionen vorgesehen, der typischerweise verwendet wird, um den neu angelegten Trackingstatus-Eintrag - z. B. unter Berücksichtigung von Daten aus dem Bezugsobjekt anzupassen.

  • Für diese Ereignisaktionen gilt unverändert das Bezugsobjekt, dem der Trackingstatus hinzugefügt werden soll und nicht etwa der neue Trackingstatus-Eintrag. Das spiegelt sich auch in der Beschriftung (TS mit <Entitätstyp> anpassen), wo in der Konfiguration der Name für den "<Entitätstyp>" des Bezugsobjekts erscheint.

  • Zuweisungen für Felder des Trackingstatus-Eintrags erfolgen typischerweise durch Setze Wert-Ereignisaktionen. Den Zugriff auf das neue Trackingstatus-Eintrag-Objekt gewährleistet dabei eine Variable, deren Name im Parameter Name der TS-Variable definiert werden muss. Per Standard ist dort der Variablenname trackingStatus vorbelegt.

Schritt 3: Trackingstatus hinzufügen, sofern zulässig

Abschließend soll der neue Trackingstatus-Eintrag erstellt und damit zur Trackingstatus-Historie des Bezugsobjekts hinzugefügt werden. Sofern für den Datenkontext ein Trackingstatus-Worfklow (Trackingstatus-Workflows) anwendbar ist, regelt dessen Konfiguration, unter welchen Voraussetzungen der hinzuzufügende Trackingstatus vor dem Hintergrund der bestehenden Trackingstatus-Historie für das Bezugsobjekt als zulässig gewertet wird oder nicht (s. Trackingstatus-Workflows). Die Prüfung erfolgt nach folgendem Schema:

  1. Der hinzuzufügende Trackingstatus-Eintrag wird anhand des Datum/Zeit-Werts im Feld "Externe Eingabezeit" (externalInput) chronologisch in die bestehende Historie eingereiht. Einträge ohne Angabe für die "Externe Eingabezeit" vor, werden stattdessen über das "Erstelldatum" (created) eingereiht. Sofern in Schritt 2 nicht explizit eine "Externe Eingabezeit" für den hinzuzufügenden Trackingstatus definiert wurde, gilt für dieses die aktuelle Systemzeit.

  2. Bevor der hinzuzufügende Trackingstatus-Eintrag gespeichert und damit zu als Element der Trackingstatus-Historie akzeptiert wird, wird die durch den zusätzlichen Eintrag veränderte Trackingstatus-Historie auf die Zulässigkeit der Trackingstatus-Übergänge vor dem Hintergrund der Trackingstatus-Transformationsmatrizen für den anwendbaren Trackingstatus-Workflow überprüft. Jede dieser Matrizen bezieht sich dabei auf einen bestimmten Trackingstatustyp. Gleichzeitig sieht das Bezugsobjekt für jeden Trackingstatustyp einen spezifischen "aktuellen Trackingstatus" (bzw. ein Trackingstatus-Attribut) vor, der durch das Hinzufügen eines Trackingstatus ggf. verändert wird. Die Prüfung der Trackingstatus-Übergänge startet abhängig vom "Berechnungsmodus" für die jeweilige Matrix mit dem Beginn der Trackingstatus-Historie oder erst ab dem derzeit als "aktuell" registrierten Eintrag für den betreffenden Trackingstatustyp. Der hinzuzufügende Eintrag wird nur dann als zulässig betrachtet, wenn er vor dem Hintergrund mindestens einer der Trackingstatus-Transformationsmatrizen über zulässige Trackingstatus-Übergänge erreicht werden kann.
    HINWEIS◄ Vor allem wenn einer bestehenden Historie zurückdatierte Einträge hinzugefügt werden, muss dies nicht bedeuten, dass der hinzugefügte Eintrag auch zum aktuellen Eintrag für den jeweiligen Trackingstatustyp wird.

Hinzufügen von Trackingstatus zu Positionen eines Geschäftstransaktionsobjekts

►HINWEIS◄ Trackingstatus auf Positionsebene werden für Manifeste nicht unterstützt (s. Arbeiten mit Trackingstatus), da es bei diesen per Definition um Sendungen handelt, die selbst über Trackingstatus-Attribute verfügen.

Beim Hinzufügen eines Trackingstatus zu einer Position eines Geschäftstransaktionsobjekts, muss beim Ausführen der Aktion die interne ID des Geschäftstransaktionsobjekts im betreffenden Feld der Position verfügbar sein:

Geschäftstransaktionsobjekt

Feldname

Allgemeines Geschäftsobjekt

commonId

Bestellung

orderId

Sendung

shipmentId

Diese Felder werden im Client in der Regel nicht mit Daten versorgt. Stattdessen werden sie vor dem Ausführen von Ereignisaktionen automatisch mit der ID des Geschäftstransaktionsobjekts initialisiert.

Eine automatische Vorbelegung ist daher mit Ausnahme der folgenden Sonderfälle gewährleistet:

  1. Die betreffende Postion wurde erst innerhalb der laufenden Transaktion durch Ereignisaktionen hinzugefügt. Dann existierte sie zu Beginn der Ereignisbehandlung noch nicht, als die Initialisierung stattfand. Dieser Fall kann abgedeckt werden, indem die ID des Geschäftstransaktionsobjekts durch eine zusätzliche Ereignisaktion (Setze Wert) vor dem Aufruf von "Trackingstatus hinzufügen" in das betreffende Feld (laut Tabelle oben) eingetragen wird.

  2. Das Geschäftstransaktionsobjekt wurde noch nicht gespeichert oder die aktuelle Transaktion wurde durch das Ereignis "Erstellen" für das Geschäftstransaktionsobjekt (s. Allgemein (Ereignisse)) ausgelöst. Dann liegt noch keine ID für das Geschäftstransaktionsobjekt vor, die eingetragen werden könnte. Allerdings kann einem noch nicht gespeicherten Geschäftstransaktionsobjekt auch interaktiv kein Trackingstatus hinzugefügt werden.

Konfiguration

images/download/attachments/189442603/image-2024-12-17_8-43-50-version-1-modificationdate-1734421429389-api-v2.png

Im Parameter Trackingstatus kann optional der Trackingstatus-Code für den hinzuzufügenden Trackingstatus-Eintrag ausgewählt werden. Zur Auswahl stehen dabei alle Trackingstatus-Codes, für die im Anmeldekontext Lesezugriff besteht.
HINWEIS◄ Wird eine bestehende Ereignisbehandlung bearbeitet, in der kein Lesezugriff für den bereits konfigurierten Trackingstatus-Code besteht, erscheint ggf. die Beschriftung nicht im Label. Die Auswahl bleibt aber unverändert gültig. Sie kann allerdings in der betreffenden Sitzung
nicht erst ab- und dann erneut ausgewählt werden.

Der Parameter Name der TS Variable ist optional, muss aber einen Variablennamen für den neu angelegten Trackingstatus-Eintrag spezifizieren, sofern für die Ereignisaktionen im Block TS mit <Entitätstyp> anpassen Zugriff auf den Trackingstatus-Eintrag benötigt wird. Daher ist per Standard der Variablennamen trackingStatus vorbelegt.

Über das images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/add.svg -Symbol können im Abschnitt TS mit <Entitätstyp> anpassen Ereignisaktionen hinzugefügt werden. Diese werden nach dem Anlegen des neuen Trackingstatus-Eintrags ausgeführt, aber bevor versucht wird, diesen der Trackingstatus-Historie des Bezugsobjekts hinzuzufügen.
ANMERKUNG◄ Der Entitätstyp des Bezugsobjekts erscheint in der Beschriftung oberhalb des Blocks, um darauf hinzuweisen, dass dieses Bezugsobjekt auch für die hier eingefügten Ereignisaktionen gilt. Sowohl die Daten des Bezugsobjekts als auch die des neuen Trackingstatus-Eintrags können in diesem Block noch angepasst werden, bevor geprüft wird, ob und ggf. mit welchen Konsequenzen der Trackingstatus-Eintrag hinzugefügt werden darf.

Beispiel: Hinzufügen eines Trackingstatus zu einer Sendung

Im folgenden Beispiel wird einer Sendung der Trackingstatus "GO!" zugewiesen und dabei im Feld Kommentar (comment) des neuen Trackingstatus-Eintrags der Wert (textValue) des Textattributs Route (ROUTE) aus der Sendung eingetragen.

images/download/attachments/189442603/image2018-8-9_9_10_57-version-1-modificationdate-1734421332870-api-v2.png