Erstellen einer statischen Zielstruktur

Beim Erstellen einer Zielstruktur für ein Lobster_data-Profil kann neben den Lobster_pro Vorlagen auch eine konkret vorliegende Datenstruktur verwendet werden, um eine Zielstruktur insgesamt zu erstellen oder ihr einen Unterknoten hinzuzufügen. Analog zur Verwendung von Lobster_pro Vorlagen (Details s. dort) wird ausgehend vom Menü für eine Zielstruktur der betreffende Dialog geöffnet, indem die Funktion Vorlage laden mit der Vorlagen-Kategorie Lobster SCM ausgeführt wird.

Die Option Struktur als Unterknoten einfügen kann gesetzt und in Verbindung mit der Auswahl eines Zielknotens per Parameter api.scm.appendToNode verwendet werden, um eine bestehende Zielstruktur zu erweitern.
images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/warning.svg ACHTUNGimages/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/warning.svg Ist die Option Struktur als Unterknoten einfügen nicht gesetzt, ersetzt die generierte die komplette bestehende Zielstruktur und nicht gespeicherte Einstellungen gehen unwiderruflich verloren.

Statt unter Entität eine vordefinierte Vorlage auszuwählen, kann man im Parameter Xml/Json in statische Struktur eine konkrete Datenstruktur im XML- oder JSON-Format eingeben bzw. aus der Zwischenablage einfügen.

images/download/attachments/62851371/image2020-7-15_18-41-17-version-1-modificationdate-1603704027920-api-v2.png

Per Klick auf images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/check.svg Anwenden wird aus den eingegebenen Daten eine Zielstruktur aus Knoten und Feldern erstellt, denen automatisch der angegebene Fixwert und ein entsprechender Datentyp zugewiesen werden.

Für das oben abgebildete Beispiel ergibt sich dann folgendes Bild der generierten "statischen Zielstruktur"':

images/download/attachments/62851371/image2020-7-15_19-10-10-version-1-modificationdate-1603704027916-api-v2.png

  • Dem hinzugefügten Knoten wird automatisch ein Name wie objekt#1 zugewiesen, der den anonymen Datenobjekttyp kennzeichnen soll.

  • Die Textwerte true und false (ohne Hochkommas) werden als Datentyp Boolean gelesen.

  • Ein nummerischer Wert mit einem Dezimalkomma wird als Datentyp Double interpretiert.

  • Ein ganzzahliger nummerischer Wert ohne Dezimalkomma wird als Integer interpretiert.

  • Texte zwischen Hochkommas werden als String gelesen.

  • Verschachtelte Strukturen werden in Unterknoten mit Feldern oder weiteren Unterknoten aufgelöst.

In der Praxis wird es oft sinnvoll sein, die zugewiesenen Fixwerte anschließend ganz oder teilweise zu entfernen und stattdessen durch Zuordnungen aus den Quelldaten zu ersetzen.

Beispiele

Beispiel: JSON-Struktur -Export aus einem Portal

Zur Erfassung spezifischer Angaben für einen LKW-Langstreckentransport wurde ein Portal erstellt, in dem der Typ des Fahrzeugs und einer oder mehrere Fahrer und Beifahrer ausgewählt werden sollen:

images/download/attachments/62851371/image2020-7-15_20-21-55-version-1-modificationdate-1603704027909-api-v2.png

Der "Struktur-Export" der hier im Testmodus per Portal erfassten Beispieldaten liefert die folgende JSON-Struktur, aus der wie oben beschrieben eine Zielstruktur für ein Lobster_data-Profil erstellt wird:

Struktur-Export der Eingaben im JSON Format

Daraus erstellte Zielstruktur für ein Lobster_data-Profil

images/download/attachments/62851371/image2020-7-15_20-31-53-version-1-modificationdate-1603704027898-api-v2.png

  • Die eckigen Klammern [...] für die Datenfelder drivers und assistants weisen auf einen pluralen Inhalt, also eine Liste von Einzelwerten hin. In der Zielstruktur (rechts) wird daher jeweils ein entry-Knoten für jeden Einzelwert eingefügt. Diese Knoten werden üblicherweise im "Mapping" iteriert, um eine variable Anzahl von Wiederholungen abhängig von den Eingangsdaten zu ermöglichen.

  • Das Auswahlfeld/Combobox "Zugmaschine (Typ)" liefert offensichtlich eine komplexe Datenstruktur für den truck mit zwei Feldern type und hp, für die in der Zielstruktur ebenfalls separat erscheinen.

images/download/attachments/62851371/image2020-7-15_20-33-37-version-1-modificationdate-1603704027895-api-v2.png

Beispiel: XML-Struktur aus dem Abfragekonfigurator in die Suche für ein Importprofil übernehmen

Wenn ein Profil für einen Import verwendet wird, um bestehende Datenobjekte in Lobster Data Platform / Orchestration zu aktualisieren, ist deren interne ID (id) in den Eingangsdaten oft nicht enthalten, weil im Quellsystem unbekannt. Dieses eindeutige Kennzeichen ist aber erforderlich, damit ein "Update" eines bestehenden Objekts per Import ausgeführt werden kann. Wenn die Eingangsdaten andere Schlüsselmerkmale verwenden, um ein Datenobjekt zu identifizieren, müssen diese im Zuge des Imports auf die betreffende interne ID von Lobster Data Platform / Orchestration "umgeschlüsselt" werden. Dies ermöglicht der search-Knoten in der Importstruktur, in dem die betreffenden Suchkriterien formuliert und per "Mapping" an Feldwerte aus den Eingangsdaten gebunden werden können.

Das Beispiel zeigt die Struktur einer Suche, die mit dem Abfragekonfigurator erstellt wurde, um Bestellungen anhand einer Zeichenfolge zu identifizieren, die in Lobster Data Platform / Orchestration in einem Referenzattribut "Beleg-Nr." (RECEIPT_NO) der jeweiligen Bestellung im Feld "Referenz" (reference) vorliegen sollte.

  • Innerhalb der abgebildeten Bedingung werden zwei Kriterien zum Typ Feld Einschränkung UND-verknüpft. Sie müssen also beide erfüllt sein, damit ein Bestellung als Treffer akzeptiert wird.


  • Die erste Feld Einschränkung verlangt eine vollständige Übereinstimmung der über eine per Typisiertes-Attribut-Projektion gelesenen "Referenz" mit einer hier statisch definierten Zeichenfolge MAP_TO_RECEIPT_NO, an deren Stelle im Importprofil per "Mapping" ein geeignetes Quellfeld zugewiesen werden sollte.


  • Die zweite Feld Einschränkung prüft, ob das für die Bestellung in Lobster Data Platform / Orchestration angelegte Datenobjekt laut Zeitstempel im Feld "Erstelldatum" (created) im laufenden Jahr erstellt wurde.

Diese Konjunktion wäre z. B. dann sinnvoll, wenn die extern vergebene Beleg-Nr. je Kalenderjahr zurückgesetzt und während des Jahres hochgezählt wird und Aktualisierungen für Belege aus der Vorperiode ausgeschlossen sind. Dann ergibt die Verknüpfung zwischen der "Beleg-Nr." und dem Zeitraum (aktuelles Kalenderjahr) eine eindeutige Referenz für eine zu aktualisierende Bestellung.

images/download/attachments/62851371/image2020-7-16_14-8-1-version-1-modificationdate-1603704027853-api-v2.png

Mit dem Abfragekonfigurator kann eine geeignete Suche nicht nur erstellt werden, um sie ggf. mit konkreten Angaben (hier: anstelle des Werts DUMMY_RECEIPT_NO) testen zu können. Die Definition der Abfrage kann auch direkt als XML-Struktur angezeigt und ggf. sogar bearbeitet werden.

Diese Darstellung im Reiter "XML" eignet sich aber auch, um die XML-Struktur der Suche ganz oder teilweise in die Zwischenablage zu kopieren, um sie im Kontext eines Import-Profils innerhalb der Zielstruktur hinzuzufügen.

Im Bild rechts ist der Abschnitt aus dem XML selektiert, der die oben dargestellte Bedingung definiert. Diese UND-Verknüpfung (SearchJunction) wird nun in die Zwischenablage kopiert, um sie in ein Profil zu übernehmen, dass Aktualisierungen für bestehende Bestellungen ausführen soll.

images/download/attachments/62851371/image2020-7-16_9-23-51-version-1-modificationdate-1603704027879-api-v2.png

Der Screenshot rechts zeigt die Zielstruktur eines Import-Profils, die zur Demonstration ausnahmsweise ausgehend von der Single-Import-Vorlage (core:Import) erstellt wurde, da diese kompakter aufgebaut ist als der ansonsten überlegene Batch-Import.

Der search-Knoten aus der Vorlage ist expandiert und im Bild selektiert. Er enthält den ebenfalls selektierten Knoten ISearchRestriction, der als Platzhalter für unterschiedliche Typen von Suchbedingungen dient. An dessen Stelle soll die in der Zwischenablage gespeicherte Suchbedingung eingefügt werden.

Unterhalb der Suche wurde als Knoten "Order" die Vorlage für Bestellungen (ord:Order) eingefügt.

images/download/attachments/62851371/image2020-7-16_11-56-51-version-1-modificationdate-1603704027868-api-v2.png

Die Selektion wird auf den Knoten ISearchRestriction reduziert, damit dieser beim Ausführen der Menü-Funktion Vorlage laden mit der Vorlagen-Kategorie Lobster SCM im folgenden bereits als api.scm.appendToNode vorbelegt erscheint:

images/download/attachments/62851371/image2020-7-16_12-18-20-version-1-modificationdate-1603704027864-api-v2.png

  • WICHTIG◄ Die Option Struktur als Unterknoten einfügen muss gesetzt werden.

  • Der Inhalt der Zwischenlage wurde oben bereits in das Eingabefeld Xml/Json in statische Struktur eingefügt.

  • Die Schaltfläche images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/check.svg Anwenden (nicht im Bild) startet das Einfügen der statischen Struktur in den Knoten ISearchRestriction.

Das Bild rechts zeigt den Inhalt des selektierten Platzhalter-Knotens ISearchRestriction nach dem Hinzufügen der statischen Struktur für die Suchbedingung als Unterknoten.

Die im Bild nicht sichtbare "Beschreibung" des Platzhalters legt nahe, dass die Suchbedingung eigentlich dessen Platz einnehmen sollte:

One of [core:PropertySearch,
core:SearchJunction,
core:SimplePropertySearch,
core:SubSearch]

Insofern könnte man nun noch den SearchJunction-Knoten aus dem ISearchRestriction ausschneiden, ihn oberhalb wieder einfügen und den Platzhalter löschen.

Alternativ dazu kann man die Struktur aber auch wie rechts dargestellt beibehalten, wenn man den Platzhalter per Parameter XML/JSON Behandlung "Transparent" setzt:

images/download/attachments/62851371/image2020-7-16_13-36-23-version-1-modificationdate-1603704027856-api-v2.png

images/download/attachments/62851371/image2020-7-16_12-29-58-version-1-modificationdate-1603704027860-api-v2.png

HINWEIS◄ Damit die "Suche" nach konkreten Bestellungen wirklich funktioniert muss hier der statische Textwert MAP_TO_RECEIPT_NO in dem Feld value#2_2_val (blau eingerahmt im Bild) noch durch eine Zuweisung aus einem geeigneten Feld der Quellstruktur ersetzt werden.