Übung 04
Ziel: In diesem Lab kombinierst du die Konzepte aus diesem Modul, um einen Prototyp für einen intelligenten Synchronisations-Workflow zu bauen. Du wirst eine Liste von Produkten filtern, durch die gültigen Produkte loopen und dabei Werte mithilfe einer Assignment Table übersetzen.
Voraussetzungen:
Eine funktionierende Xentral Connect Instanz.
Teil 1: Die Vorbereitung (Daten und Übersetzungen)
Szenario: Du musst Produktdaten für den Versand in verschiedene Länder vorbereiten. Dabei müssen die Ländercodes des Shops (DE, AT) in die länderspezifischen Versandanweisungen des Logistikers (Versand nach Deutschland, Versand nach Österreich) übersetzt werden.
Schritte
Testdaten anlegen
Erstelle einen neuen Workflow mit dem Namen
M04-Lab-Smart-Sync.Füge einen
Set-Knoten hinzu, um eine Liste von Bestellungen zu simulieren. Nenne ihnsource_ordersund gib folgenden JSON-Wert ein:
[
{
"order_id": "ORD-101",
"country_code": "DE",
"is_shipped": false
},
{
"order_id": "ORD-102",
"country_code": "FR",
"is_shipped": false
},
{
"order_id": "ORD-103",
"country_code": "AT",
"is_shipped": true
},
{
"order_id": "ORD-104",
"country_code": "AT",
"is_shipped": false
}
]Erwartetes Ergebnis
Die Assignment Table
Shipping-Instructionsist angelegt.Der Workflow
M04-Lab-Smart-Syncist erstellt und enthält einenSet-Knoten mit den Test-Bestellungen.
Teil 2: Der intelligente Workflow
Szenario: Verarbeite die Liste der Bestellungen. Es sollen nur Bestellungen berücksichtigt werden, die noch nicht versendet wurden (is_shipped ist false) und für die eine Versandanweisung existiert (Ländercode ist in der Assignment Table vorhanden).
Schritte
Versandanweisung nachschlagen (Assignment)
Füge einen
Assignment-Knoten vor dem If-Knoten, aber innerhalb der Schleife hinzu.Table:
Shipping-InstructionsKey:
{{$node["Loop"].context["value"]["country_code"]}}Wichtig: Aktiviere die Option "Continue on Fail", damit der Workflow nicht abbricht, wenn ein Ländercode (wie
FR) nicht in der Tabelle gefunden wird.
Bedingungen prüfen (If-Knoten)
Füge einen
If-Knoten in die Schleife.Erstelle eine Bedingung mit zwei Regeln (AND-Verknüpfung):
Regel: Prüfe, ob die Bestellung noch nicht versendet wurde.
Value 1:
{{$node["Loop"].context["value"]["is_shipped"]}}Operation:
EqualValue 2 (Boolean):
false
Regel: Prüfe, ob der Ländercode in unserer Tabelle existiert. Hierfür nutzen wir die
hasOwnProperty-Methode auf die Daten der Assignment Table.Value 1 (Expression):
{{$item.json.hasOwnProperty($node["Loop"].context["value"]["country_code"])}}Hinweis: Wähle hierfür den
Assignment-Knoten aus dem vorherigen Schritt aus, du musst ihn also zuerst erstellen und dann hierher zurückkehren.
Operation:
EqualValue 2 (Boolean):
true
Ergebnis loggen
Verbinde einen
Log-Knoten mit demtrue-Ausgang desIf-Knotens.Gib eine aussagekräftige Nachricht aus, die die Bestelldaten und die übersetzte Versandanweisung enthält, z.B.:
Bestellung {{$node["Loop"].context["value"]["order_id"]}} wird bearbeitet. Anweisung: {{$node["Assignment"].json["value"]}}
Erwartetes Ergebnis
Der Workflow läuft erfolgreich durch.
Die Log-Ausgabe zeigt nur die Einträge für die Bestellungen
ORD-101undORD-104an, da nur diese beiden die Kriterien (nicht versendet & gültiger Ländercode) erfüllen.Die Ausgabe für
ORD-101lautet:Bestellung ORD-101 wird bearbeitet. Anweisung: Versand nach Deutschland
Die Ausgabe für
ORD-104lautet:Bestellung ORD-104 wird bearbeitet. Anweisung: Versand nach Österreich
Die Bestellungen
ORD-102(unbekannter Ländercode) undORD-103(bereits versendet) werden vomIf-Knoten herausgefiltert und erzeugen keinen Log-Eintrag.
Musterlösung (Mermaid-Diagramm)
Cleanup
Die erstellten Workflows und die Assignment Table können für spätere Referenz in der Instanz verbleiben.
Was this helpful?
