Referenzieren eines Ports in einer Orchestrierung über eine Zeichenfolgevariable
-
12-12-2019 - |
Frage
Ich versuche, eine generische BizTalk-Anwendung für die Konfiguration dynamischer Ports zu entwickeln.Ich habe eine Orchestrierung, die alle Konfigurationseinstellungen für jeden Port zurückzieht, und ich möchte diese Einstellungen durchlaufen und die Ports konfigurieren.Die Einstellungen finden in MSSQL statt, und z. B. sind zwei der Eigenschaften Portname und Adresse.Von der Orchestrierung möchte ich also den Port mit dem Portnamen String-Variablen verweisen.Es gibt also eine Möglichkeit, eine Sammlung aller Ports in einer Orchestrierung oder einem Anschluss über eine String-Variable zu erhalten, danke, danke
Lösung
In erster Linie sollten Sie nicht versuchen, Konfigurationsänderungen mithilfe einer Orchestrierung zu verwenden.Technisch ist es möglich, das, was Sie versuchen, zu tun, aber als Praxis sollten Sie Ihren Geschäftsprozess nicht mit der Verwaltung vermischen.
Der beste Weg, solche Dinge zu tun, wird entweder einige normale Skripte oder Powershell schreiben.
Um Ihre Frage zu beantworten, können Sie die gewünschten Daten von der BTSorchestration-Klasse in Explorerom erhalten http://msdn.microsoft.com / en-us / bibliothek / microsoft.biztalk.explorerom.btsorchestration_members (v= BTS.20)
Andere Tipps
Um dynamische logische Send-Ports dynamisch in einer Orchestrierung dynamisch zu konfigurieren, muss man die Einstellungen in einem persistenten Datastore (z. B. eine Datenbank- oder Konfigurationsdatei) speichern und einen Weg implementieren, um diese Eigenschaften zur Laufzeit dynamisch zuzuweisen. .
Aber zuerst müssen wir verstehen, was passiert, wenn Sie einen dynamischen Sendeport konfigurieren.
Konfigurieren der Eigenschaften eines dynamischen logischen Senden Port von Innerhalb einer Orchestrierung beinhaltet zwei Schritte:
-
Erster, das Transporttype und Ziel Adresse muss auf dem Sendeport angegeben werden. Dies erfolgt in der Regel in einer -Expression-Form mit dem Code ähnlich diesem:
dynamicsendport (microsoft.xlangs.basetypes.transporttype)="Datei"; Dynamicsendport (microsoft.xlangs.basetypes.address)="C: \ temp \ Ordner \% SourceFileName%";
-
Zweitens müssen alle zusätzlichen Transporteigenschaften im Kontext der ausgehenden Nachricht selbst festgelegt werden. Praktisch alle BizTalk-Adapter haben Weitere Eigenschaften die zur Kommunikation zwischen dem Messaging-Motor und dem Xlang / s-Orchestrierungsmotor verwendet werden. Zum Beispiel der empfangenefileName Context-Eigenschaft wird verwendet, um einen bestimmten Namen dynamisch festzulegen, wenn der Dateiadapter die ausgehende Nachricht an seinem Zielort speichert. Dies wird am besten in einer -zuweisungsform durchgeführt, als Teil des Aufbaus der ausgehenden Nachricht:
Das folgende .xsd-Schema veranschaulicht eine mögliche Struktur für die Serialisierung von Port-Einstellungen.
Nachdem nach serialisiert, können die angegebenen Kontexteigenschaften dann in einer SQL-Datenbank oder einer Konfigurationsdatei sehr einfach gespeichert werden. Zum Beispiel sind hier die Einstellungen, die als Beispiel in diesem Beitrag verwendet werden:
Mit einer einfachen Helferbibliothek ist die Einrichtung der dynamischen Portkonfiguration sehr einfach. Erstens müssen Sie die serialisierten Einstellungen vom persistenten Medium abrufen. Dies kann leicht mit dem WCF-SQL-Adapter und einer einfachen gespeicherten Prozedur erreicht werden.
Nach dem Abgerufenen können diese Eigenschaften dann in einem stark eingegebenen C # -Bild-Objektdiagramm deserialisiert werden. Erstellen Sie dazu zunächst eine C # -Dresage des oben angezeigten Kontextproperties-Schemas mit dem folgenden Befehlszeilen-Dienstprogramm:
generasacodicetagpre.Dies erzeugt eine Teilklasse, die mit dem folgenden Verfahren verbessert werden kann:
generasacodicetagpre.zweite Anwendung Diese Konfiguration umfasst das Erstellen einer Xlang / s-Nachricht vom Code und der Einrichtung der Kontexteigenschaften dynamisch mit Reflexion, basierend auf der Beschreibung der in der Deserializ angegebenen Kontexteigenschaften
ED Kontextproperties Objektdiagramm.Hierzu benutze ich eine Technik, die von paolo salvatori serie Art von Artikeln verwendet wird bezüglich dynamischer Transformationen , die beim Erstellen eines benutzerdefinierten btxmessage --derevive-Klasse, intern vom Biztalk Xlang / s-Motor verwendet.
generasacodicetagpre.Nun ist das letzte Stück des Puzzles, wie man diese benutzerdefinierte Klasse von einer Inchestrierung nutzt. Dies geschieht leicht in einer -zuweisungsform mit dem folgenden Helfercode:
generasacodicetagpre.Sie können diese statische Methode in Ihrer -zuweisungsform verwenden, wie der nachstehend gezeigte Code, in dem der generationspoDicetagcode die Nachricht darstellt, die Sie den Kontext einstellen möchten:
generasacodicetagpre.