Was ist der BAM-Interceptor?
Überblick
Der BAM-Inceptor ist ein Objekt, mit dem Sie Ihre Anwendung zum Erfassen von zu überwachenden Daten nutzen können. In der folgenden Abbildung wird die Rolle des BAM-Interceptors und seiner Interaktion mit den anderen BAM-Komponenten veranschaulicht:
BAM-Interceptor
In jedem Schritt Ihrer Anwendung, in dem zu überwachende Daten auftreten können, rufen Sie den Interceptor "OneStep" auf, um einen Bezeichner für den Schritt anzugeben, und geben einige Daten oder ein beliebiges Objekt an, das Sie in Ihrer Anwendung verwenden.
Sie müssen eine Rückruffunktion implementieren. Bei Auftreten des Rückrufs ruft Ihre Rückrufprozedur die aktuelle Schritt-ID und Ihr Datenobjekt ab. Im Wesentlichen gibt der BAM-Interceptor nur das Datenobjekt an den Rückruf weiter. Die tatsächliche Programmlogik zum Extrahieren von Daten befindet sich in Ihrer Anwendung. Wenn Ihre Daten z. B. das Format von XML-Nachrichten verwenden, dann verwendet der Rückruf XPaths. Weitere Informationen zu XPaths finden Sie unter Verwenden von XPaths in der Nachrichtenzuweisung.
Der BAM-Interceptor entscheidet auf der Grundlage der Konfiguration, die Sie programmgesteuert erstellen können, welche Daten in jedem Schritt anzufordern sind. Anschließend ruft der BAM-Interceptor mithilfe der erhaltenen Daten entweder "DirectEventStream" oder "BufferedEventStream" auf. Diese müssen stets vorhanden sein und jedes Mal als Argument an "OnStep" übergeben werden.
Das Aufrufen des Interceptors für jeden Schritt ist kein ressourcenintensiver Vorgang. Wenn Sie beim Aufruf nichts für diesen Schritt registrieren, wird der Interceptor sofort zurückgegeben. Dies bedeutet, dass es fast keine Datenträgeroperationen, keine Transaktionen und nicht einmal Speicherzuordnungen gibt, weshalb es zu fast keiner Leistungsbeeinträchtigung kommt. Gleichzeitig können Sie bei Bedarf beliebige Daten für BAM extrahieren. Die Auswirkungen auf die Leistung auf die Schritte zur Datenextraktion und die Verfügbarkeit der Daten hängen von Ihrer Implementierung von ab IBAMDataExtractor Interface
.
Im folgenden Codebeispiel wird die Verwendung des Interceptors während der Konfiguration und zur Laufzeit gezeigt.
Konfigurationszeit
Der folgende Code zeigt, wie Sie den Interceptor so konfigurieren, dass er bei Schritt "recvPO" der Anwendung anhält und nach "Customer Name" und "Customer SSN" fragt:
ActivityInterceptorConfiguration cfg= new ActivityInterceptorConfiguration ("PurchaseOrder");
...
cfg.RegisterDataExtraction("CustomerName",recvPO,XpathName);
cfg.RegisterDataExtraction("CustomerSSN",recvPO,XpathSSN);
...
BAMInterceptor interceptor=new BAMInterceptor();
cfg.UpdateInterceptor(interceptor);
...
// The interceptor instance is ready.
Nach dem Erstellen einer Interceptorinstanz können Sie diese für die spätere Verwendung zur Laufzeit speichern.
Sie können verschiedene Interceptors bereits im Voraus erstellen, die unterschiedliche Einstellungen für die Daten und Meilensteine für BAM darstellen. Serialisieren Sie für eine bestmögliche Leistung die Interceptorinstanzen mithilfe der "BinaryFormatter"-Klasse.
Laufzeit
Mit diesem Code verwenden Sie den Interceptor zur Laufzeit in einer Produktionsumgebung:
// Deserialize the Interceptor that was prepared before
...
es=new DirectEventStream(...)
...
Interceptor.OnStep(recvPO, data1, es, callback)
...
Interceptor.OnStep(approvePO, data2, es, callback)
...
Hierbei gilt:
recvPO und approvePO sind beliebige Objekte, die Sie zum Identifizieren der Schritte in Ihrer Anwendung verwenden.
data1 und data2 sind beliebige Objekte, die Sie zu diesem Zeitpunkt haben, und können interessante Daten enthalten – z. B. das XML-Dokument der Bestellung.
es ist je nach Leistungsanforderungen entweder DirectEventStream oder BufferedEvent-Stream.
Der Rückruf ist Ihre Implementierung von
IBAMDataExtractor Interface
.Das SDK-Beispiel BAM-API (BizTalk Server Beispiel) veranschaulicht die Verwendung des Interceptors, der sowohl ein Konfigurationstool als auch eine Beispiellaufzeitanwendung enthält.
Die Orchestrierungs-Engine von BizTalk unterstützt das Abfangen, wodurch Sie die von BAM zur Laufzeit erfassten Daten mithilfe des Überwachungsprofil-Editors ändern können.