CONNECTED Conference 2023 - Aufzeichnungen jetzt hier verfügbar +++                     

Suche

über alle News und Events

 

Alle News

 

Vom 5. bis 7. Juni findet in London wieder die...

Weiterlesen

Vom 5. bis 7. Juni findet in London wieder die...

Weiterlesen

Vom 5. bis 7. Juni findet in London wieder die...

Weiterlesen

Live Coding on stage in Hamburg - exklusiv für...

Weiterlesen

Um Azure Ressourcen von DevOps aus zu deployen,...

Weiterlesen

In diesem Artikel wird ein beispielhafter Aufbau...

Weiterlesen

Die QUIBIQ Gruppe wurde am 9. März 2023 von dem...

Weiterlesen

Der Schnelleinstieg in die Welt der Tests für den...

Weiterlesen

Wenn man eine, im Azure Portal, entwickelte Logic...

Weiterlesen

WinSCP für BizTalk wird für den SFTP-Adapter...

Weiterlesen

How-to: Generic Stream Interface Orchestration – Passtruth Stream 2 Typed (XML) Stream

Immer wieder treffen wir auf Schnittstellen, die sehr einfach aufgebaut sind, aber dennoch nicht 1 : 1 übermittelt werden sollen.

Es muss zum Beispiel eine zusätzliche Information, wie der Dateiname an ein Fremdsystem (beispielsweise Microsoft Azure) übermittelt werden oder der Inhalt oder das Format soll verändert werden. Dazu wird eine Orchestration benötigt.

Meist sind zahlreiche solche Schnittstellenprobleme vorhanden, die identisch sind.

Damit nicht für jede Schnittstelle eine eigene Orchestration implementiert werden muss, entwickeln wir eine Generische pro Typ.
 

Problematik

Wir haben zum Beispiel einen Kunden mit 100 neu zu implementierenden Schnittstellen.

80 davon sollen mit Azure kommunizieren und den Inhalt als Base64 übermitteln. Die Zieldatei soll denselben Dateinamen wie die Quelldatei erhalten. Die Schnittstellen haben aber verschiedene Endpunkte, sowohl im Typ (SFTP/FTP/File Ablage) als auch in der Anbindung (anderer Server).

 

Lösungsansatz

Damit wir nicht 80 verschiedene Orchestrations bauen müssen, erstellen wir eine Generische und verwenden diese mit vorgegebenen Parametern.

Generische Orchestration

Wir erstellen uns also eine „generische“ Orchestration. Diese liest die Instanzen direkt aus der „MessageBox“. Das „Receive-Shape“ wird auf alle nötigen «ReceivePortNames» gefiltert.

SQL Datenbank

Damit wir die Informationen pro Schnittstelle variabel haben, lesen wir diese aus einer Datenbank. Selektionskriterium ist der „ReceivePortName“.

 

 

Generische Instanz generieren

Mit den ausgelesenen Informationen der Schnittstelle generieren wir die neue Instanz für das Zielsystem (Azure).

Dabei rufen wir eine Funktion in einer Helper-Klasse auf und lesen das Stream der Quell-Instanz ein. Dieses wiederum können wir mit nötigen Parametern ergänzen und als XML Instanz zurückgeben.

Wichtig: Damit auch ein XML übermittelt werden kann, sollte der Inhalt (FileContent) mit Base64 «encoded» werden.

 

Instanz an Endpunkt senden. Die generierte Instanz wird dann zurück in die MessageBox gesendet und kann dann per «SendPort» mit der nötigen Pipeline (JSON) an das Zielsystem (Azure) gesendet werden.

Wenn in der Datenbank der «TargetNamespace» und das «RootElement» verschieden angegeben werden, können auch verschiedene «SendPorts» verwendet werden. Diese wiederum einfach mit dem jeweiligen «MessageTypen» Filtern.

 

Fazit

Generische «Orchestrations» machen dann Sinn, wenn viele Schnittstellen fast identisch aufgebaut sind und in gleiche Typen eingeteilt werden können. Der Aufbau der jeweiligen Orchestration ist im Endeffekt jedoch immer spezifisch zu bestimmen. Entscheidend ist dabei, dass die nötigen Informationen, die pro Schnittstelle verschieden sind, in der Datenbank vorhanden sind und von dort ausgelesen werden.

 

Ergänzende Links

XLANGMessage to Stream examples:

https://csharp.hotexamples.com/de/examples/-/XLANGMessage/-/php-xlangmessage-class-examples.html

 

 

Ihre Kontaktmöglichkeiten

Sie haben eine konkrete Frage an uns


 

Bleiben Sie immer auf dem Laufenden


 

Mit meinem "Ja" erkläre ich mich mit der Verarbeitung meiner Daten zur Zusendung von Informationen einverstanden. Ich weiß, dass ich diese Erklärung jederzeit durch einfache Mitteilung widerrufen kann. Bei einem Nein an dieser Stelle erhalte ich zukünftig keine Informationen mehr.

© QUIBIQ GmbH · Impressum · Datenschutz