Trackingstatus-zugehöriges-Objekt

Wertauflöser - Kurzfassung

Zweck: Gibt die Entität zurück, auf die sich ein als Eingabewert vorliegender Trackingstatus-Eintrag als Trackingstatus-Besitzer bezieht.

images/download/attachments/177910665/image-2024-9-11_11-26-8-version-1-modificationdate-1726046767895-api-v2.png

Der Trackingstatus-zugehöriges-Objekt-Wertauflöser gibt die Entität zurück, auf die sich ein als Eingabewert vorliegender Trackingstatus-Eintrag als Trackingstatus-Besitzer bezieht.

  • Handelt es sich beim Eingabewert nicht um einen Trackingstatus-Eintrag, wird "Kein Wert" ($null) zurückgegeben.

Für den Parameter Typ des zugehörigen Objekts muss eine Klasse ausgewählt werden, die mit dem Typ des Trackingstatus-Besitzers übereinstimmt oder zumindest kompatibel ist.

  • Ohne oder mit einer unpassenden Auswahl wird "Kein Wert" ($null) zurückgegeben.

HINWEIS◄ Dieser Wertauflöser wird clientseitig (z. B. in einem Client Workflow) nicht unterstützt, da das "zugehörige Objekt" vom Server abgerufen werden muss.

Konfiguration

Als Eingabewert wird eine Entität des Typs "Trackingstatus-Eintrag" (TrackingStatusEntry) erwartet.

Der Typ des zugehörigen Objekts muss "passend" zum Trackingstatus-Besitzer ausgewählt werden, da von dieser Auswahl u. a. die Auswahloptionen für die weitere Konfiguration (z. B. Zugriff auf Attribute usw.) abhängen kann.

Häufig ist im Einsatzumfeld des Wertauflösers ohnehin klar, von welchem Typ der Trackingstatus-Besitzer ist. Dann deklariert die Auswahl diesen Typ für nachfolgende Konfigurationen, etwa im Kontext einer Ausführen mit-Ereignisaktion.

Wird der Wertauflöser in einem Kontext eingesetzt ist, in dem der Typ des Trackingstatus-Besitzers variabel sein kann, muss eine geeignete übergreifende Klasse (z. B. "Entität" oder "Geschäftstransaktionsobjekt") als Typ des zugehörigen Objekts gewählt werden.

HINWEIS◄ Die Auswahl einer übergreifenden Klasse als Typ des zugehörigen Objekts kann Einschränkungen für die Konfiguration in Bezug auf spezifische Inhalte für die enthaltenen Klassen bedingen. Allerdings wird zur Laufzeit der Trackingstatus-Besitzer immer komplett zurückgegeben. Sein konkreter Typ kann per Typprüfung oder durch Auswerten der Variable entityClass festgestellt werden.

Beispiel

Einfacher Anwendungsfall

Das Ändern eines bestehenden Trackingstatus-Eintrags (z. B. zum Eintragen eines Kommentars oder Hochladen einer Unterschrift) soll für Bestellungen verhindert werden, wenn es sich nicht um den aktuellen Trackingstatus-Eintrag (für den Standard-Trackingstatustyp "Aktuell" (CURRENT)) des zugehörigen Objekts handelt.

Konfiguration:

Die rechts abgebildete Ereignisbehandlung zielt darauf ab, durch eine Abbrechen das Speichern von Änderungen für bestehende Trackingstatus-Einträge zu verhindern, sofern diese Bestellungen betreffen:

  • Als einziges Auslösendes Ereignis ist "Ändern" aus der Kategorie Allgemein (Ereignisse) ausgewählt.

  • Die Prüfende Regel beinhaltet drei UND-verknüpfte Kriterien, die mit Blick auf die Performance bewusst genau in der folgenden Sequenz angeordnet sind:

    • Die einleitende Typprüfung stellt fest, ob das "Ändern"-Ereignis für einen Trackingstatus-Eintrag ausgelöst wurde. Nur dann finden weitere Prüfungen statt.

    • Die erste Objekt-Feld-Regel stellt sicher, dass sich der Trackingstatus-Eintrag im Eingabewert per Feld statusOwner auf die Klasse "Bestellung" bezieht. Nur in diesem Fall soll das zugehörige Objekt für das letzte Prüfkriterium vom Server angefordert werden.

    • Die zweite Objekt-Feld-Regel fordert über den Trackingstatus-zugehöriges-Objekt-Wertauflöser die im Trackingstatus-Eintrag referenzierte Bestellung vom Server an, um zu überprüfen, ob sich deren Trackingstatus-Attribut für den Trackingstatustyp "Aktuell" (CURRENT) per Feld trackingStatusEntryId auf die ID (id) des geänderten Trackingstatus-Eintrags bezieht. Ist das das nicht der Fall ist, gilt die Prüfende-Regel insgesamt als "bestanden".

  • Als einzige Aktion bei bestandener Regel ist eine Abbrechen vorgesehen, die die Transaktion zum Ändern des Trackingstatus-Eintrags abbricht und den Benutzer mit einer Meldung vom Typ "Semantic Exception") darüber informiert.

images/download/attachments/177910665/image2022-7-18_9-43-31-version-1-modificationdate-1726046760669-api-v2.png

Komplexerer Anwendungsfall

Ein Anwender soll auf Knopfdruck Benachrichtigungen über "aktuelle" Trackingstatuswechsel in seinem Zuständigkeitsbereich informiert werden.

  • Als "aktuell" sollen Trackingstatus-Einträge gelten, die seit Anfang des aktuellen Tages erstellt (also einer Entität erfolgreich hinzugefügt) wurden.

  • Die Abgrenzung für den "Zuständigkeitsbereich" soll durch den Lesezugriff für die Trackingstatuseinträge im Kontext der aktuellen Sitzung gewährleistet sein.

Laufzeitbeispiel:

Nach dem Klick auf einen Ribbon Button soll für jeden "aktuellen" Trackingstatuswechsel eine Benachrichtigung vom Typ "Info" am rechten Bildschirmrand eingeblendet werden, die folgende Informationen enthält:

Im Titel:

  • Zeitpunkt des Trackingstatuswechsels
    (Datum ist per Definition "Heute")

  • Hinzugefügter Trackingstatus-Code

  • Entitätstyp (Trackingstatus-Besitzer)

In der Meldung:

  • Weitere Informationen zum "zugehörigen Objekt"
    (hier: ID ~ Besitzer-ID / Aktueller Arbeitsstatus)

images/download/attachments/177910665/image2022-7-15_12-51-11-version-1-modificationdate-1726046760694-api-v2.png

Konfiguration:

Die folgende Ereignisbehandlung soll über ein eigens eingerichtetes Eigenes Aktionsevent "Was gibt's Neues?" (WHATS_NEW) ausgelöst werden, das Benutzer über Ribbon Buttons in ausgewählten Views auslösen können.

Die für die Anzeige relevanten Trackingstatus-Einträge durch eine Suche (Ereignisaktion) bereitgestellt. Diese liefert eine eine chronologisch sortierte Liste aller im Kontext der Sitzung lesbaren Trackingstatus-Einträge, die seit dem Anfang des heutigen Tags (s. Relatives Datum mit Zeit) erstellt wurden, in einer Variablen whatsNew.

Die folgende Für jeden Eintrag wiederholen (Schleife)-Ereignisaktion iteriert über die Trackingstatus-Einträge in der Variablen whatsNew:

Für jeden Eintrag wird eine Hinweis anzeigen (Popup)-Ereignisaktion ausgeführt, in der die gewünschten Informationen aufbereitet werden:

  • Die Informationen für den Titel können alle direkt aus dem Trackingstatus-Eintrag gewonnen werden, der innerhalb der Schleife als Bezugsobjekt vorliegt. Dies Aufbereitung erledigt hier ein Textverkettung-Wertauflöser, auf dessen Konfiguration nicht näher eingegangen werden soll.

  • Von den für die Meldung spezifizierten Daten ist nur die ID des Trackingstatus-Besitzers im Trackingstatus-Eintrag (Feld statusOwnerId) verfügbar. Für alle anderen Daten ist der Zugriff auf das "zugehörige Objekt" (alias Trackingstatus-Besitzer) notwendig. Der Trackingstatus-zugehöriges-Objekt-Wertauflöser liefert die betreffende Entität ausgehend vom Bezugsobjekt (Trackingstatus-Eintrag). Als Typ des zugehörigen Objekts muss hier die übergreifende Klasse "Entität" gewählt werden, damit alle Typen von Trackingstatus-Besitzern abgedeckt sind.

  • Der verkettete Vorlage-Wertauflöser definiert die Aufbereitung von ausgewählten Inhalten aus dem Datenobjekt der Entität, die als "zugehöriges Objekt" für den Trackingstatus-Eintrag ermittelt wurde.

ANMERKUNG◄ Die Felder id und onwerId sind "Entitätsattribute", die jeder Entitätstyp verwendet. Ein Arbeitsstatus wird dagegen nicht von jedem Entitätstyp unterstützt, der einen Trackingstatus "besitzen" kann. Eine Position eines Geschäftstransaktionsobjekts, gilt der Klasse nach zwar als "Entität" aber nicht als "Geschäftstransaktionsobjekt". Sie besitzt keinen Arbeitsstatus, ihr können aber Trackingstatus hinzugefügt werden. Sofern für unterschiedliche Entitätstypen spezifische Detaildaten erscheinen sollen, sind Fallunterscheidungen erforderlich.

images/download/attachments/177910665/image2022-7-15_13-10-30-version-1-modificationdate-1726046760692-api-v2.png