Tungsten Printix Cloud
Printix ist neu Tungsten Printix Cloud Wir freuen uns, Ihnen mitteilen zu können, dass Printix nun Tungsten Printix Cloud heisst. Der Name wurde geändert, ...
Viele Unternehmen setzen Systeme unterschiedlicher Hersteller ein, die nicht miteinander kommunizieren und teilweise sogar inkompatibel sind. Oft bieten die Systeme jedoch Schnittstellen an.
Da bei der Digitalisierung von Prozessen die beteiligten Systeme immer miteinander kommunizieren müssen, um Medienbrüche zu vermeiden, müssen komplexe Schnittstellen und Integrationsplattformen geschaffen werden.
Mit Azure Logic Apps und Liquid Templates kann die Kommunikation der Systeme schnell und effizient erfolgen. Zudem können Templates erstellt werden, die für weitere Integrationen wiederverwendet werden können. Dadurch werden die Kosten für solche Integrationen deutlich minimiert.
Azure Logic Apps ist ein Cloud-basierter Dienst, mit dem Workflows erstellt und automatisiert werden können. Durch den serverlosen Ansatz können schnell geschäftskritische und resiliente Lösungen erstellt werden. Man muss sich nicht um serverseitige Themen wie C#-Versionen, Betriebssystem-Updates etc. kümmern. Auch Kenntnisse in Programmiersprachen sind nicht zwingend erforderlich.
Logic Apps haben eine Vielzahl von Vorteilen für die Integration von Drittsystemen:
Liquid ist eine Open-Source Template-Sprache, welche von Shopify entwickelt wurde. Sie dient dazu, dynamische Inhalte zu transformieren. Mit Liquid können Entwickler benutzerdefinierte Templates erstellen und mittels Logic Apps Daten aus einer Vielzahl von Quellen einbinden. Liquid wird vorgängig für die JSON-to-JSON- oder XML-to-JSON-Transformation verwendet. In diesem Blog-Beitrag konzentrieren wir uns auf die JSON-to-JSON Transformation.
Liquid bietet eine Vielzahl von Tags und Filtern, um Aktionen oder Formatierungen auf Daten anzuwenden. Beispielsweise können bedingte Iterationen durchgeführt und Daten aus einem JSON-Array gefiltert und transformiert zurückgegeben werden.
Diese Möglichkeiten machen Liquid in Verbindung mit Logic Apps zu einem mächtigen Werkzeug. Logic Apps dienen zum Laden der Daten aus den Quellsystemen. Die Liquid Templates können dem Workflow als Logic App Action hinzugefügt werden. Nach der Transformation werden die Daten im Format des Zielsystems gespeichert.
In diesem Beispiel verwenden wir Logic Apps und Liquid Templates, um Spesen und andere externe Kosten aus einem Spend Management System in das ERP zu transformieren. Das Spend Management System ist eine SaaS-Anwendung, die über OData-APIs verfügt, was den Zugriff auf die relevanten Daten erleichtert.
Die Logic App verfügt über einen Storage Queue Trigger. Das Ausgabenmanagement ist so konfiguriert, dass ein Webhook (eine andere Logic App) aufgerufen wird, sobald die Ausgabe einen bestimmten Status erreicht hat. Die Webhook Logic App schreibt die übermittelte Expense-ID in die Queue.
Sobald der Eintrag in die Queue geschrieben wurde, startet die eigentliche Logik. Die Logic App erhält die Expense-ID und lädt die eigentlichen Expense-Informationen über die OData-API. Das definierte Schema wird mit der Aktion “Parse JSON” verarbeitet.
Nach dem die Expense gewisse Logiken durchläuft, um zu prüfen, ob die Expense für die Verarbeitung überhaupt relevant wird, wird für das ERP-System in zwei unterschiedliche Typen unterschieden, da das ERP hierfür unterschiedliche zwei Objekttypen und -formate zur Verfügung stellt.
Mittels zwei unterschiedlichen Liquid-Templates wird die eigentliche Transformation durchgeführt. Hierfür nimmt die Action den Body der Expense aus der OData-Schnittstelle entgegen (Input-JSON). Als Source ist “Logic App” definiert, da bei einer Standard Logic App im Gegensatz zur Consumption Logic App kein Azure Integration Account erforderlich ist.
Die Mapping Datei (MapSpesen.liquid) wurde im Vorfeld hochgeladen.
Die folgende Abbildung zeigt einen Auszug der MapSpesen.liquid Datei. Man sieht sehr schön, wie mächtig ein Liquid-Template sein kann.
Grundsätzlich ist das Liquid-Template so aufgebaut, wie das Zielformat definiert ist. Der Einfachheit halber macht es deshalb Sinn mit einem Beispiel-JSON des Zielformates zu beginnen und alle Werte mit Liquid-Platzhaltern zu versehen, die automatisch befüllt werden sollen.
Platzhalter werden mit {{ … }} definiert, während Funktionen mit {% … %} festgelegt sind.
Der den Platzhaltern können nun die Werte aus dem Input-JSON übergeben werden. Dies erfolgt über JsonPath und den Einstieg “content”. Wenn man also auf das Attribut “createdBy” des Quell-JSON zugreifen möchte, schreibt man:
{{ content.createdBy }}
Wichtig ist, das Liquid dabei nicht zwischen Feldtypen unterscheidet. Das heisst, es wird zum Beispiel nicht zwischen String und Integer unterschieden. Liquid gibt einfach nur den Wert zurück. Damit es bei der Transformation keine Fehler entstehen, muss also der Wert je nach Feldtyp mit ““ umschlossen werden:
"email": "{{ content.createdBy }}"
Neben String-Operationen, wie einem Split, können if-Conditions oder auch Berechnungen durchgeführt werden.
Nach der Transformation kann innerhalb der Logic App mit dem transformierten JSON weitergearbeitet werden und zum Beispiel noch Feldwerte ersetzt werden, die nicht im Input-JSON-Kontext vorhanden sind.
Zuletzt wird das finale JSON via HTTP-Call an das ERP-System gesendet. Auch hier ist eine Logic App im Standard-Tier sinnvoll, da VNETs unterstützt werden und damit sogar auf OnPremises-Systeme zugegriffen werden kann.
Zusammengefasst zeigt der Blog-Artikel eindrucksvoll wie schnell und einfach Schnittstellen mit Logic Apps und Liquid geschaffen werden können. Das Besondere ist hierbei noch, dass die Schnittstelle On-Demand funktioniert und nicht wie bei einer Data Factory in Intervallen gearbeitet werden muss.
Wenn Sie eine ähnliche Problematik realisieren müssen, treten Sie gerne mit uns in Kontakt. Wir unterstützen Sie!
Abonniere unseren Blog und verpasse keinen Beitrag mehr. Wir spammen Dich nicht zu, sondern informieren Dich nur über neue Beiträge.
Buche einen Microsoft Teams Meeting Termin bei Christoph Schoch. Nach der Buchung erhälst du eine Termineinladung. Dort findest du einen Link für das Teams Meeting. Natürlich kannst du uns auch gerne eine E-Mail schreiben oder uns direkt anrufen.
Wenn du Fragen hast, nutze dazu unser Helpcenter und/oder eröffne eine Ticket für dein Anliegen.