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

Suche

über alle News und Events

 

Alle News

 

Am 09.05.2022 wurde ein Artikel von Microsoft...

Weiterlesen

Neben den altbekannten Logic Apps (Consumption),...

Weiterlesen

Im Jahr 2022 fallen eine Reihe von .Net Versionen...

Weiterlesen

SAP in die Power Platform integrieren – In einem...

Weiterlesen

Bicep Templates benutzen eine deklarative Syntax...

Weiterlesen

In BizTalk gibt es einige Alternativen, wie...

Weiterlesen

Wir sind auf ein seltsames Phänomen bei einem...

Weiterlesen

Nach der Migration konnten in VS 2019 „normale“...

Weiterlesen

Warum wir uns als Sponsor engagieren, warum und...

Weiterlesen

Für einen Kunden sollen Produktkataloge im XML...

Weiterlesen

How-to: BizTalk Mapping – Klassenbibliothek – und Übergabe-Parameter

Ein Kunde muss innerhalb eines BizTalk Mappings auf eine MS-SQL Stored Procedure zugreifen, die wiederum einen Wert zurückgibt. Dazu wurde ein Scripting Functoid im BizTalk Mapping platziert. Das Scripting-Functoid ruft wiederum eine Klassenbibliothek auf, die den SQL-SERVER-Zugriff realisiert.

 

Class – Library

Für den Datenbankzugriff wurde eine Klassen-Bibliothek erstellt. Die Methode „GetNewID“ soll aus einer SQL-Datenbank einen neuen Wert zurückliefern. Als Parameter hat der Kunde einen boolean Typ angegeben. Damit soll die Unterscheidung zwischen dem DEV-SQL-SERVER und dem PROD-SQL-SERVER vorgenommen werden. (Wichtig: Das war die Lösung des Kunden. QUIBIQ würde hier anders vorgehen). Im Bild sieht man exemplarisch nur den relevanten Code ohne Datenbankzugriff:

 

BizTalk Projekt

Im BizTalk Projekt gibt es ein Input-Schema, Output-Schema und ein Mapping. Innerhalb des Mappings wurde eine Scripting-Functoid eingesetzt. Dieses Scripting-Functoid instanziiert die erstelle Class-Library.

Als Übergabe-Parameter wurde „true“ eingestellt.
Dann wurde die Map getestet und das Ergebnis war wie erwartet.

Sicherheitshalber wurde die Klassenbibliothek noch auf einer Konsolen-Test-Anwendung geprüft.

Test-Projekt

Das Ergebnis:

Wie erwarte: Bei „true“ soll 2000 zurückgegen werden bei „false“ 0.

Alles läuft somit gut.

Das Problem

Nachdem alles auf dem DEV-BizTalk deployed wurde, lief alles so, wie es getestet wurde. Als der Kunde den Übergabeparameter im Mapping von „true“ auf „false“ änderte und die BizTalk-DLLs auf PROD deployed hat, funktionierte der Datenbankzugriff nicht mehr.

Folgende Fehlermeldung war im BizTalk zu sehen:

 

Auf der PROD Umgebung hat das Mapping bzw. das Scripting-Functoid die Datenbank nicht gefunden.

Also hat der Kunde auch das Test-Projekt auf PROD deployed und dort ausgeführt. Jetzt konnte die SQL-Datenbank gefunden werden. Was war das Problem? Wo lag der Fehler?
 

Die Lösung

Der Fehler lag im Übergabe-Parameter in der Klassenbibliothek.

Der Code wurde wie folgt angepasst:

Das ist nicht best-practis, aber es zeigt die Lösung. Der BizTalk Mapper übergibt immer ein String als Type. Das war die Ursache! Zwar wirft Visual Studio keinen Fehler, wenn das Mapping innerhalb Visual Studio ausgeführt wird, aber es liefert auch nicht die korrekte Fehlermeldung.

Fazit

Wenn man eine Klassen-Bibliothek für ein BizTalk Mapping programmiert, dann sollte unbedingt der Übergabe-Parameter immer als „string“ deklariert werden. Innerhalb der Methode kann dann geprüft werden, ob der Übergabe-Parameter, in den gewünschten Ziel-Type konvertiert werden kann.

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