Übung 07
Ziel: In diesem Lab liegt der Fokus nicht auf der Implementierung, sondern auf dem Entwurf und der Architektur. Du wirst zwei komplexe, reale Szenarien analysieren und die passenden Connect-Architekturen dafür entwerfen. Deine Aufgabe ist es, die richtigen Trigger, Knoten und Strategien auszuwählen und deine Entscheidung zu begründen.
Voraussetzungen:
Dein Wissen aus den Modulen 1-7.
Szenario 1: Nächtlicher DATEV-Rechnungsexport
Anforderungen:
Alle Rechnungen, die in Xentral im Laufe eines Tages erstellt werden, sollen gesammelt werden.
Jede Nacht um 03:00 Uhr soll ein Prozess starten, der alle gesammelten Rechnungen an die DATEV-API überträgt.
Die DATEV-API erlaubt maximal 100 API-Aufrufe pro Minute. Jede Rechnung erfordert einen einzelnen Aufruf.
Der Prozess muss robust sein: Wenn er bei der 500. von 1000 Rechnungen abbricht, soll er beim nächsten Lauf nicht wieder bei Null anfangen.
Die Authentifizierung an der DATEV-API erfolgt über OAuth2.
Deine Aufgabe:
Entwirf eine Architektur mit Xentral Connect, um diese Anforderungen zu erfüllen. Beschreibe die notwendigen Workflows, ihre Trigger und die Kernlogik. Erstelle ein Mermaid-Diagramm, das deine Architektur visualisiert.
Platz für deine Lösung:
Beschreibung der Architektur
Ich würde eine Architektur aus zwei Workflows verwenden, um die Sammlung der Rechnungen von deren Verarbeitung zu entkoppeln.
Workflow 1: Collect-Invoices
Trigger: Event-Trigger. Er lauscht auf das Xentral-Event
invoice.created.Aktion: Sobald eine Rechnung erstellt wird, nimmt der Workflow die Rechnungs-ID und speichert sie in einer dedizierten Liste im Data Store, z. B. unter dem Key
datev_pending_invoices. Hier wird eineappend/push-Operation auf ein Array verwendet.
Workflow 2: Process-DATEV-Export
Trigger: Timer-Trigger. Konfiguriert auf täglichen Start um 03:00 Uhr.
Credentials: Für den DATEV-API-Knoten werden OAuth2-Credentials eingerichtet, die Token-Refresh automatisch handhaben.
Kernlogik:
Verarbeitung pro ID
Hole die vollständigen Rechnungsdaten via
Xentral > invoice.getmit der aktuellen ID.Sende die Daten an die DATEV-API (OAuth2-gesichert).
Füge nach dem Senden einen
Wait-Knoten von 1 Sekunde ein (max. 60 Rechnungen/min, innerhalb des Limits von 100/min).Entferne nach erfolgreichem Senden die verarbeitete Rechnungs-ID aus
datev_pending_invoicesim Data Store — dadurch ist der Fortschritt persistent und der Prozess robust gegenüber Abbrüchen.
Mermaid-Diagramm
Szenario 2: Echtzeit-Tracking-Update
Anforderungen:
Ein externer Versanddienstleister (Carrier) ruft einen Webhook in Connect auf, sobald sich der Status eines Pakets ändert (z. B. "im Transit", "zugestellt").
Die Information enthält eine
tracking_numberund den neuenstatus.Dieser neue Status soll in einem benutzerdefinierten Feld am Lieferschein in Xentral gespeichert werden.
Sobald der Status in Xentral aktualisiert wurde, soll eine Benachrichtigung an die API des ursprünglichen Webshops gesendet werden, um den Kunden zu informieren.
Der Prozess muss in Echtzeit (< 10 Sekunden) erfolgen.
Deine Aufgabe:
Entwirf eine Architektur, die diesen Prozess abbildet. Begründe, warum du dich für eine bestimmte Anzahl von Workflows entscheidest und wie diese miteinander interagieren. Erstelle auch hier ein Mermaid-Diagramm.
Platz für deine Lösung:
Beschreibung der Architektur
Für diesen Prozess wähle ich eine entkoppelte Architektur aus zwei Workflows, um Verantwortlichkeiten klar zu trennen und Wartbarkeit zu erhöhen.
Workflow 1: Ingest-Carrier-Status (Status-Annahme)
Trigger: Webhook-Trigger — stellt die URL für den Carrier bereit.
Verantwortlichkeit: Nur Datenannahme vom Carrier und Schreiben in Xentral.
Kernlogik:
Workflow 2: Notify-Shop-On-Update (Shop-Benachrichtigung)
Trigger: Event-Trigger. Lauscht auf das Xentral-Event, das durch die Aktualisierung des Lieferscheins ausgelöst wird (z. B.
deliverynote.customfield.updated).Verantwortlichkeit: Nur Benachrichtigung des Webshops.
Kernlogik:
Warum diese Entkopplung?
Robustheit: Wenn die Shop-API nicht erreichbar ist, schlägt nur Workflow 2 fehl. Workflow 1 hat bereits die Carrier-Daten angenommen und Xentral aktualisiert. Die Benachrichtigung kann wiederholt werden, ohne Carrier-Aufrufe zu verlieren.
Wartbarkeit: API-Änderungen beim Shop betreffen nur Workflow 2.
Geschwindigkeit: Workflow 1 kann dem Carrier in < 10 Sekunden (typisch sofort) antworten, ohne auf externe Shop-API-Latenz zu warten.
Mermaid-Diagramm
Was this helpful?
