Verwenden von Pipelineschnittstellen
Bei einer Pipelinekomponente handelt es sich um eine .NET- oder COM-Komponente, mit der eine Reihe von vordefinierten Schnittstellen für die Interaktion mit der BizTalk-Messaging-Engine implementiert werden können. Abhängig von den Funktionen der Komponente müssen verschiedene Schnittstellen implementiert werden. Im Rahmen dieses Themas werden die Schnittstellen und einige der entsprechenden Methoden beschrieben.
Warnung
Wenn mithilfe von COM eine benutzerdefinierte Pipelinekomponente erstellt werden soll, müssen Ihre Komponenten für die Verwendung des Multithread-Apartment-(MTA-)Modells konfiguriert werden. Andernfalls schlägt der Aufruf der Komponente mit einem E_NOINTERFACE-Fehler fehl.
IPipelineContext
Alle Pipelinekomponenten können IPipelineContext-Methoden verwenden, um auf alle dokumentverarbeitungsspezifischen Schnittstellen zuzugreifen. Die IPipelineContext-Schnittstelle bietet die folgenden Funktionen:
Sie ermöglicht Komponenten das Abrufen der Ambient-Pipeline- und Stufeneinstellungen.
Sie ermöglicht Komponenten das Abrufen von Nachrichten und Nachrichtenfactorys. Mithilfe dieser Factorys können die Komponenten verschiedene für die Ausführung der Komponente erforderliche Objekte erstellen.
Sie ermöglicht Komponenten das Abrufen von Dokumentspezifikationen. Bei einer Dokumentspezifikation handelt es sich um ein XSD-Schema mit zusätzlichen Anmerkungen.
IBaseComponent
Diese Schnittstelle muss von allen Pipelinekomponenten implementiert werden, damit die grundlegenden Informationen über die Komponente bereitgestellt werden.
IComponent
Mit Ausnahme von Assemblern und Disassemblern implementieren alle Komponenten diese Schnittstelle, um von der BizTalk Server-Engine Nachrichten zur Verarbeitung abzurufen und verarbeitete Nachrichten anschließend an die Engine zurückzugeben.
„Execute“. Methode, die von der Engine aufgerufen wird, um die Eingangsnachricht an die Komponente weiterzugeben und die verarbeitete Nachricht von der Komponente abzurufen.
IPropertyBag, IPersistPropertyBag
Pipelinekomponenten müssen IPersistPropertyBag implementieren, um die Konfigurationsinformationen zu erhalten. Diese Schnittstelle und IPropertyBag sind die Standardschnittstellen. Weitere Informationen zu diesen Schnittstellen finden Sie in der Dokumentation zum Microsoft .NET Framework SDK (Software Development Kit).
IDisassemblerComponent
Eine Disassembler-Komponente ist eine Pipelinekomponente, die an der Eingabe eine Nachricht empfängt und für die Ausgabe null oder keine Nachrichten erzeugt. Mit Disassembler-Komponenten wird ein Nachrichtenaustausch in einzelne Dokumente aufgeteilt. Eine Disassemblerkomponente muss die Methoden der IDisassemblerComponent-Schnittstelle implementieren, um Nachrichten von BizTalk Server zur Verarbeitung abzurufen und disassemblierte Dokumente an BizTalk Server zurückzugeben.
Methode | BESCHREIBUNG |
---|---|
Disassemble | Führt die Disassemblierung des eingehenden Dokuments pInMsg aus. |
GetNext | Ruft die nächste Nachricht aus dem Nachrichtensatz ab, der durch die Disassemblierung erstellt wurde. Gibt NULL zurück, wenn keine weiteren Nachrichten vorhanden sind. |
Beim Schreiben einer Disassembler-Komponente, die eine wiederherstellbare Austauschverarbeitung unterstützen soll, muss folgendermaßen vorgegangen werden:
Die Eingangsstreams müssen durchsucht werden können. Dies erreichen Sie, indem sie VirtualStream() als Wrapper für die Streams verwenden.
In GetNext() muss die Logik zur Ermittlung fehlerhafter Nachrichten implementiert werden. Wenn eine Nachricht fehlerhaft ist, muss BTS.MessageDestination = "SuspendQueue" gesetzt und die Nachricht in GetNext() zurückgegeben werden.
Wenn die Nachricht nicht fehlerhaft ist, muss BTS.SuspendMessageOnRoutingFailure = True gesetzt und die Nachricht in GetNext() zurückgegeben werden.
IAssemblerComponent
Eine Assembler-Komponente ist eine Pipelinekomponente, die an der Eingabe mehrere Nachrichten empfängt und für die Ausgabe eine Nachricht erstellt. Mit Assembler-Komponenten werden einzelne Dokumente im Nachrichtenaustauschbatch gesammelt.
Hinweis
In dieser Version von BizTalk Server wird die Assembling-Funktionalität nicht verwendet, sodass BizTalk Server immer ein Dokument an die Komponenteneingabe übergibt.
Eine Assemblerkomponente implementiert die IAssemblerComponent-Methoden, die zur Laufzeit von der BizTalk Server-Engine aufgerufen werden.
Methode | BESCHREIBUNG |
---|---|
AddDocument | Fügt das Dokument pInMsg der Liste der Nachrichten hinzu, die in den Austausch aufgenommen werden. |
Assemble | Erstellt den Austausch der Nachrichten, die mithilfe der vorherigen Methode hinzugefügt wurden. Gibt einen Zeiger auf die assemblierte Nachricht zurück. |
IProbeMessage
Jede Pipelinekomponente (allgemein, assemblieren oder disassemblieren) kann IProbeMessage implementieren, wenn die Nachrichtenüberprüfungsfunktion erforderlich ist. In den Pipelinephasen mit dem FirstMatch-Ausführungsmodus wird eine Testkomponente verwendet. In solchen Phasen übergibt BizTalk Server die Nachricht an die Komponente, und die Testmethode untersucht den Anfang der Nachricht, um zu bestimmen, ob die Komponente das Format der Nachricht erkennt.
Methode | BESCHREIBUNG |
---|---|
Test | Diese Methode akzeptiert die pInMsg-Nachricht und gibt True zurück, wenn das Format erkannt wird, oder andernfalls False . |
INamedItem
Hierbei handelt es sich um eine Hilfsschnittstelle für den Zugriff auf Dokumentschemas von verwaltetem und nicht verwaltetem Code aus.
INamedItemList
Hierbei handelt es sich um eine Hilfsschnittstelle für den Zugriff auf Dokumentschemas von verwaltetem und nicht verwaltetem Code aus.
IDocumentSpec
Pipelinekomponenten können Methoden der IDocumentSpec-Schnittstelle verwenden, um dokumentspezifische Aktionen auszuführen, z. B. Das Verschieben von Inhaltseigenschaften in den Kontext und zurück, der Zugriff auf Dokumentschemas usw.
Methode | BESCHREIBUNG |
---|---|
DocType | Gibt den Typ des aktuellen Dokuments zurück. |
DocSpecName | Gibt den Spezifikationsnamen des aktuellen Dokuments zurück. |
GetSchemaCollection | Gibt eine Liste der Dokumentschemas des aktuellen Dokuments zurück. |
GetBodyPath | Gibt den XPath zum Knoten im Dokument zurück, an dem der Textteil beginnt. |
GetDistinguishedPropertyAnnotationEnumerator | Gibt einen Verzeichnisenumerator aller Eigenschaftsanmerkungen von gekennzeichneten Feldern zurück. |
GetPropertyAnnotationEnumerator | Gibt einen Enumerator aller Eigenschaftsanmerkungen zurück. |
IComponentUI
Pipelinekomponenten müssen diese Schnittstelle implementieren, um innerhalb der Pipeline-Designer-Umgebung verwendet werden zu können.
Methode | Beschreibung |
---|---|
Symbol: | Gibt das Symbol an, das dieser Komponente zugeordnet ist. |
Überprüfen | In Pipeline-Designer wird diese Methode vor der Pipelinekompilierung aufgerufen, um sicherzustellen, dass alle Konfigurationseigenschaften richtig festgelegt wurden. |
Die Icon-Eigenschaft gibt einen IntPtr zurück. Im folgenden C#-Beispiel wird gezeigt, wie ein IntPtr zurückgegeben wird.
static ResourceManager resManager = new ResourceManager("ResourceManager", Assembly.GetExecutingAssembly());
...
[Browsable(false)]
public IntPtr Icon
{
get
{
return ((Bitmap)resManager.GetObject("MyIcon")).GetHicon();
}
}
Weitere Informationen finden Sie unter IComponentUI-Schnittstelle (COM) in der Referenz zum API-Namespace für Benutzeroberflächen und Entwickler.
Weitere Informationen
Entwickeln von benutzerdefinierten Pipelinekomponenten
CustomComponent (BizTalk Server-Beispiel)
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für