Das neue Limango Add-On. Oder auch: Wie baut Synesty eigentlich Steps?

Jeder, der schon einmal mit Synesty einen Flow gebaut hat, wird an Steps nicht vorbeikommen. Aber was sind Steps eigentlich? Steps sind nichts anderes als Schritte in einem Prozess, die nacheinander abgearbeitet werden. Dabei vergleiche ich die Steps immer wieder gern mit den einzelnen Schritten aus einem Kochrezept. Wobei hier die Daten die Zutaten darstellen und der Flow am Ende das fertige Rezept. Aber wie entsteht eigentlich so ein Step?

Hier stehen uns zwei Möglichkeiten zur Verfügung. Zum einen können wir den Step programmieren, in unserem Fall mit Java, oder wir bauen einen Flow, den wir dann in einen Step umwandeln. Dieser Prozess heißt bei uns Flow2Step. Wie man einen solchen Flow2Step baut, werde ich euch in diesem Artikel beschreiben. Als Fallbeispiel nehme ich eine Projektumsetzung für Limango, die mittels eines Flow2Steps umgesetzt wurde.

Ziel des Projekts

Es sollte ein Add-On für den Marktplatz Limango gebaut werden, um Kunden direkt an den Marktplatz anzubinden. Dies haben wir mit einem ersten Kunden und in Abstimmung mit Limango realisiert.
Dabei wurde das Projekt in zwei Phasen gegliedert. In der ersten Phase sollten die Aufträge an das Kundensystem übermittelt werden und von dort wieder zurück an limango. In der zweiten Phasen sollten dann die Bestände und Preise vom Kundensystem zu limango übertragen werden. Nach dieser Anforderung war klar, welche Steps das Add-on (Paket aus mehreren Steps) beinhalten wird.

  • Step zur Abholung der limango Aufträge
  • Step zur Aktualisierung des Auftragsstatus an limango
  • Step zur Aktualisierung der Preise
  • Step zur Aktualisierung der Bestände

Aller Anfang ist nicht immer schwer

Bevor die Flows für den Kunden erstellt wurden, mussten zunächst die entsprechenden Steps entwickelt werden. Mithilfe der Systemdokumentation und einem Ansprechpartner von limango war das Ganze ein angenehmer, iterativer Prozess. Aus der Dokumentation und den Gesprächen mit limango ging hervor, dass alle Prozesse über den SFTP verarbeitet werden. Was heißt das konkret? Zur Auftragsübermittlung stellt limango eine XML auf dem SFTP-Server bereit, die wir verarbeiten. Der Prozess, wie limango Aktualisierungen wieder in das eigene System einliest, war äquivalent. Das heißt, limango braucht eine XML, die wir auf dem SFTP bereitstellen. Nach dem also die Abläufe klar waren, stand fest, welchen Step ich für das limango Add-On am häufigsten brauchen werde, nämlich den TextHTMLWriter-Step. Dieser erlaubt es, limango-konforme XML-Dateien zu erstellen.

Was war zuerst da? Das Auslesen oder das Einlesen?

Um limango Aufträge zu aktualisieren, mussten diese erst einmal ausgelesen werden. Dazu habe ich den ersten Step gebaut, LimangoReadOrders.

Für den LimangoReadOrders habe ich einen XML2Spreadsheet-Step verwendet.

Mit diesem Step werden Auftragsdaten als XML von limangos SFTP eingelesen. Mit Freemarker gebe ich an, welche XML Felder ich einlesen möchte und wie die Spalten im Spreadsheet heißen sollen. Ihr lest richtig, am Ende entsteht dann ein Spreadsheet, der den Output des Steps darstellt und anschließend aus dem Step heraus verwendet werden kann. Um das noch benutzerfreundlicher zu gestalten, filtere ich das Spreadsheet noch nach Auftragskopf und Auftragsposition. Neben dem Einlesen und Filtern im Step, habe ich noch ein paar StopFlowIf´s eingebaut. Dieser Step dient zum Fehlerbehandlung verschiedener Fälle. Das bedeutet unter anderem, dass ich den Step abbreche, wenn keine XML vorhanden ist.

Das Spreadsheet, was nun aus dem LimangoReadOrders Step kommt, kann man für diverse Schnittstellen nutzen, um Aufträge in ein externes System zu importieren.

So wie es aus dem System schallt, so soll es auch wieder hineinschallen

Nachdem ich den Step gebaut hatte, um die Aufträge auszulesen, brauchte ich nun einen Step um die Aufträge in limango zu aktualisieren. Wie ich es eingangs schon erwähnt habe, musste ich dazu diesmal eine XML selbst erstellen. Das machte ich mit dem TextHTMLWriter-Step. Dieser funktioniert im Prinzip genau umgekehrt zum XML2Spreadsheet-Step. Denn hier sage ich, welche Spalten aus dem eingehenden Spreadsheet welches XML-Tag werden soll. Des Weiteren musste ich auch den Header der XML-Datei festlegen, der in der Dokumentation festgehalten ist, weshalb ich diesen einfach copy&pasten konnte. Auch in diesem Step habe ich wieder StopFlowIf´s verwendet, um diverse Fehlerfälle vorab abzufangen, wie zum Beispiel “kein vorhandenes Spreadsheet”. Am Ende war das Ergebnis der limangoUpdateOrder-Step.

Da die beiden letzten Steps, Aktualisierung der Bestände und Preise, sich nicht großartig von dem UpdateOrder-Step unterscheiden, konnte ich den Step gleich als Vorlage nutzen, weshalb ich diesen Prozess einfach mal außen vorlasse.

Den Kunden gibt es ja auch noch

Nachdem nun alle Steps fertig gebaut waren, mussten diese nur noch beim Kunden eingebaut werden. Denn erst beim Einbau der limango Steps in produktive Flows hat sich gezeigt, ob ich alles richtig gemacht habe. Spoiler: Da niemand perfekt ist, außer ich, lief alles glatt… Natürlich nicht. An einigen Stellen, gab es noch kleine Kinderkrankheiten, wie zum Beispiel falsch geschriebene Spalten in den Spreadsheets, aber diese Fehler konnte ich sehr schnell beheben, weshalb es produktiv zu keinen größeren Katastrophen kam.

Fazit:

Unsere Software erweitern wir stetig und können somit flexibel Lösungen für verschiedenste Systeme entwickeln, ohne dabei viel zu programmieren. Alle Steps zusammen bilden nun unser neues limango Add-On. Wer mehr über unser neues limango Add-On erfahren möchte, kann sich hier informieren. Wenn Ihr Fragen zu einem konkreten Anwendungsfall habt, gibt es auch die Möglichkeit einer persönlichen Beratung! Dazu kann man sich gern melden und einen Termin vereinbaren.

Weitere Themen rund um unsere neue limango Anbindung wird es auch hier auf Synesty Stories geben.