Verarbeiten von Benachrichtigungen zum Ausführen bestimmter Aufgaben in Oracle Database mithilfe von BizTalk Server
Sie können den Oracle Database-Adapter verwenden, um Benachrichtigungen über Änderungen an den Oracle-Datenbanktabellen zu erhalten. Der Adapter sendet Ihnen jedoch nur eine Benachrichtigung, dass einige Datensätze in eine bestimmte Datenbanktabelle eingefügt, aktualisiert oder gelöscht wurden. Jede Nachbearbeitung dieser Datensätze muss von den Clientanwendungen selbst verarbeitet werden. Dieses Thema enthält eine szenariobasierte Beschreibung der Verarbeitung der Datensätze in der Tabelle basierend auf der Art der Benachrichtigung, die von der Oracle-Datenbank empfangen wird.
Szenarien zum Ausführen nachfolgender Aktionen nach dem Empfang der Benachrichtigung
Im Folgenden sind einige Szenarien aufgeführt, in denen die Adapterclients bestimmte Aufgaben nach der Benachrichtigung ausführen müssen.
Szenario 1: Stellen Sie sich ein Szenario vor, in dem der Adapterclient bestimmte Aufgaben basierend auf der Art der Benachrichtigung ausführen muss, die Sie von der Oracle-Datenbank erhalten. Beispielsweise muss die Clientanwendung die Datensätze in Tabelle "A" aktualisieren, wenn Datensätze in tabelle "B" eingefügt werden. Ebenso muss die Clientanwendung Datensätze aus tabelle "A" löschen, wenn Datensätze aus tabelle "B" gelöscht werden.
In diesem Szenario müssen die Adapterclients aus der empfangenen Benachrichtigung den Typ der Benachrichtigung extrahieren, um zu entscheiden, ob die Benachrichtigung für einen Einfügevorgang oder einen Löschvorgang gilt. Nachdem der Benachrichtigungstyp ermittelt wurde, müssen die Adapterclients nachfolgende Aktionen ausführen, um die relevanten Tabellen einzufügen oder zu aktualisieren.
Szenario 2: Stellen Sie sich ein Szenario vor, in dem der Empfangsspeicherort, der Benachrichtigungen über Änderungen an einer Tabelle empfängt, ausfällt. Während der Empfangsspeicherort ausgefallen ist, werden der Tabelle einige Datensätze hinzugefügt. Für diese Datensätze erhält der Adapterclient jedoch keine Benachrichtigung. Wenn der Empfangsspeicherort gesichert ist, benachrichtigt der Adapter den Client, indem er eine bestimmte Nachricht sendet, und dann muss die Clientanwendung nach allen Datensätzen suchen, die in die Datenbanktabelle eingefügt wurden, während der Empfangsspeicherort ausgefallen war.
In diesem Szenario müssen die Adapterclients aus der empfangenen Benachrichtigung die Informationen darüber extrahieren, ob die Benachrichtigung für eine Änderung an einer Datenbanktabelle oder für den Empfangsspeicherort abgibt. Wenn die Benachrichtigung für den empfangsfähigen Speicherort gilt, müssen die Adapterclients die Logik implementieren, um die Datensätze zu verarbeiten, die eingefügt, aktualisiert oder gelöscht wurden, während der Empfangsspeicherort ausgefallen ist.
Hinweis
Dies sind nur einige Beispielszenarien, die für ein besseres Verständnis der Verwendung des Benachrichtigungsfeatures im Oracle Database-Adapter aufgeführt sind. Der grundlegende Satz von Aufgaben, die erforderlich sind, um den Typ der empfangenen Benachrichtigung zu extrahieren, ist jedoch für alle Szenarien ähnlich. Dieses Thema enthält Anweisungen zum Extrahieren des Benachrichtigungstyps aus einer Benachrichtigung.
In diesem Thema wird der Empfang von Benachrichtigungen veranschaulicht.
Um zu veranschaulichen, wie Benachrichtigungen verarbeitet werden, um nachfolgende Aufgaben auszuführen, betrachten wir ein grundlegendes Szenario, in dem ein Adapterclient die BizTalk-Anwendung verwendet, um Benachrichtigungen für Änderungen an der TABELLE ACCOUNTACTIVITY zu empfangen. Nachdem die Benachrichtigung empfangen wurde, filtert der Client den Typ der empfangenen Benachrichtigung und führt eine nachfolgende Aktion aus. Um ein sehr einfaches Szenario zu veranschaulichen, sollten wir berücksichtigen, dass der Adapterclient die Benachrichtigungen basierend auf der Art der empfangenen Benachrichtigung in verschiedene Ordner kopiert. Deshalb gilt Folgendes:
Wenn die Benachrichtigung für einen Insert- oder Update-Vorgang gilt, kopiert der Adapterclient die Nachricht in den Ordner C:\TestLocation\UpsertNotification.
Wenn die Benachrichtigung für einen anderen Vorgang gilt, z. B. Löschen, kopiert der Adapterclient die Nachricht in den Ordner C:\TestLocation\OtherNotificaiton.
Um dies als Teil einer BizTalk-Anwendung zu erreichen, muss die Orchestrierung Folgendes enthalten:
Ein unidirektionales Empfangsport zum Empfangen von Benachrichtigungen.
Ein Ausdrucks-Shape, das eine xpath-Abfrage zum Extrahieren der Informationen über die Art der empfangenen Benachrichtigung enthält.
Eine Entscheidungsform, die einen Entscheidungsblock in die Orchestrierung einschließt. In diesem Entscheidungsblock entscheidet die Anwendung basierend auf der empfangenen Benachrichtigung, welche nachfolgenden Vorgänge ausgeführt werden sollen.
Zwei unidirektionale Sendeports, die schließlich die Benachrichtigungen empfangen.
Konfigurieren von Benachrichtigungen mit den Oracle Database-Bindungseigenschaften
In der folgenden Tabelle sind die Bindungseigenschaften des Oracle Database-Adapters zusammengefasst, mit denen Sie den Empfang von Benachrichtigungen aus der Oracle-Datenbank konfigurieren. Sie müssen diese Bindungseigenschaften beim Konfigurieren des Empfangsports in der BizTalk Server-Verwaltungskonsole angeben.
Hinweis
Sie können diese Bindungseigenschaften angeben, wenn Sie das Schema für den Benachrichtigungsvorgang generieren, auch wenn dies nicht obligatorisch ist. Wenn Sie dies tun, enthält die Portbindungsdatei, die das Nutzungsdienst-Add-In im Rahmen der Metadatengenerierung generiert, auch die Werte, die Sie für die Bindungseigenschaften angeben. Sie können diese Bindungsdatei später in die BizTalk Server-Verwaltungskonsole importieren, um den benutzerdefinierten WCF- oder WCF-OracleDB-Empfangsport mit den bereits festgelegten Bindungseigenschaften zu erstellen. Weitere Informationen zum Erstellen eines benutzerdefinierten WCF- oder WCF-OracleDB-Ports mithilfe der Bindungsdatei finden Sie unter Konfigurieren einer physischen Portbindung mithilfe einer Portbindungsdatei an Oracle Database.
Binding-Eigenschaft | BESCHREIBUNG |
---|---|
InboundOperationType | Gibt den eingehenden Vorgang an, den Sie ausführen möchten. Um Benachrichtigungen zu empfangen, legen Sie dies auf Benachrichtigung fest. |
NotificationPort | Gibt die Portnummer an, die ODP.NET öffnen muss, um von der Oracle-Datenbank auf Datenbankänderungsbenachrichtigungen zu lauschen. |
NotificationStatement | Gibt die SELECT-Anweisung an, die für die Registrierung für Abfragebenachrichtigungen verwendet wird. Der Adapter erhält nur dann eine Benachrichtigung, wenn sich das Resultset für die angegebene SELECT-Anweisung ändert. |
NotifyOnListenerStart | Gibt an, ob der Adapter beim Starten des Listeners eine Benachrichtigung an die Adapterclients sendet. |
Eine ausführlichere Beschreibung dieser Eigenschaften finden Sie unter Arbeiten mit Bindungseigenschaften. Eine vollständige Beschreibung der Verwendung des Oracle Database-Adapters zum Empfangen von Benachrichtigungen von der Oracle-Datenbank finden Sie weiter.
Empfangen von Benachrichtigungen von Oracle Database
Das Ausführen eines Vorgangs für die Oracle-Datenbank mithilfe des Oracle Database-Adapters mit BizTalk Server umfasst die unter Bausteine zum Entwickeln von BizTalk-Anwendungen mit Oracle-Datenbank beschriebenen prozeduralen Aufgaben. Um den Adapter für den Empfang von Benachrichtigungen zu konfigurieren, lauten die folgenden Aufgaben:
Erstellen Sie ein BizTalk-Projekt, und generieren Sie dann ein Schema für den eingehenden Benachrichtigungsvorgang . Optional können Sie Werte für die Bindungseigenschaften InboundOperationType, NotificationPort und NotificationStatement angeben.
Erstellen Sie im BizTalk-Projekt eine Nachricht zum Empfangen von Benachrichtigungen aus der Oracle-Datenbank.
Erstellen Sie eine Orchestrierung, wie im vorherigen Abschnitt beschrieben.
Erstellen sie das BizTalk-Projekt, und stellen Sie es bereit.
Konfigurieren Sie die BizTalk-Anwendung, indem Sie physische Sende- und Empfangsports erstellen.
Hinweis
Für eingehende Vorgänge, z. B. das Empfangen von Benachrichtigungen, müssen Sie nur einen unidirektionale WCF-Custom oder WCF-OracleDB Empfangsport konfigurieren. Bidirektionale Empfangsports werden für eingehende Vorgänge nicht unterstützt.
Starten Sie die BizTalk-Anwendung.
Dieses Thema enthält Anweisungen zum Ausführen dieser Aufgaben.
Generieren eines Schemas
Sie müssen das Schema für den eingehenden Benachrichtigungsvorgang generieren. Weitere Informationen zum Generieren des Schemas finden Sie unter Abrufen von Metadaten für Oracle Database-Vorgänge in Visual Studio . Führen Sie beim Generieren des Schemas die folgenden Aufgaben aus. Überspringen Sie den ersten Schritt, wenn Sie die Bindungseigenschaften nicht zur Entwurfszeit angeben möchten.
Geben Sie beim Generieren des Schemas einen Wert für die Bindungseigenschaften InboundOperationType, NotificationPort und NotificationStatement an. Weitere Informationen zu dieser Bindungseigenschaft finden Sie unter Arbeiten mit Bindungseigenschaften. Anweisungen zum Angeben von Bindungseigenschaften finden Sie unter Konfigurieren der Bindungseigenschaften für Oracle Database.
Wählen Sie den Vertragstyp Als Dienst (Eingehende Vorgänge) aus.
Generieren Sie ein Schema für den Benachrichtigungsvorgang .
Definieren von Nachrichten und Nachrichtentypen
Das Schema, das Sie zuvor generiert haben, beschreibt die "Typen", die für die Nachrichten in der Orchestrierung erforderlich sind. Eine Nachricht ist in der Regel eine Variable, deren Typ durch das entsprechende Schema definiert wird. Nachdem das Schema generiert wurde, müssen Sie es mit den Meldungen aus der Orchestrierungsansicht des BizTalk-Projekts verknüpfen.
Für dieses Thema müssen Sie eine Nachricht erstellen, um Benachrichtigungen von der Oracle-Datenbank zu empfangen.
Führen Sie die folgenden Schritte aus, um Nachrichten zu erstellen und mit dem Schema zu verknüpfen.
So erstellen Sie Nachrichten und Verknüpfen mit dem Schema
Fügen Sie dem BizTalk-Projekt eine Orchestrierung hinzu. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den Namen des BizTalk-Projekts, zeigen Sie auf Hinzufügen, und klicken Sie dann auf Neues Element. Geben Sie einen Namen für die BizTalk-Orchestrierung ein, und klicken Sie dann auf Hinzufügen.
Öffnen Sie das Fenster "Orchestrierungsansicht" des BizTalk-Projekts, wenn es noch nicht geöffnet ist. Klicken Sie auf Ansicht, zeigen Sie auf Andere Fenster, und klicken Sie dann auf Orchestrierungsansicht.
Klicken Sie in der Orchestrierungsansicht mit der rechten Maustaste auf Nachrichten, und klicken Sie dann auf Neue Nachricht.
Klicken Sie mit der rechten Maustaste auf die neu erstellte Nachricht, und wählen Sie dann Eigenschaftenfenster aus.
Gehen Sie im Bereich Eigenschaften für Message_1 wie folgt vor:
Option Aufgabe Bezeichner Geben Sie NotifyReceive
ein.Nachrichtentyp Erweitern Sie in der Dropdownliste Schemas, und wählen Sie Process_Notification.OracleDBBinding.Notification aus, wobei Process_Notification der Name Ihres BizTalk-Projekts ist. OracleDBBinding ist das Schema, das für den Benachrichtigungsvorgang generiert wird.
Einrichten der Orchestrierung
Sie müssen eine BizTalk-Orchestrierung erstellen, um BizTalk Server zum Empfangen von Benachrichtigungen aus der Oracle-Datenbank zu verwenden und anschließend Aufgaben basierend auf dem Typ der empfangenen Benachrichtigung auszuführen. Bei dieser Orchestrierung empfängt der Adapter die Benachrichtigung basierend auf der SELECT-Anweisung, die für die NotificationStatement-Bindungseigenschaft angegeben ist. Die im Ausdrucks-Shape angegebene xpath-Abfrage extrahiert den Typ der Benachrichtigung in eine Variable, z. B. NotificationType. Das Shape Decide verwendet den Wert in dieser Variablen, um die Art der empfangenen Benachrichtigung zu bestimmen, und verwendet den entsprechenden "Pfad", um nachfolgende Vorgänge auszuführen. Wie im vorherigen Abschnitt erwähnt, führt die Orchestrierung die folgenden Vorgänge basierend auf der Art der empfangenen Benachrichtigung aus.
Wenn die Benachrichtigung für einen Insert- oder Update-Vorgang gilt, kopiert der Adapterclient die Nachricht in den Ordner C:\TestLocation\UpsertNotification.
Wenn die Benachrichtigung für einen anderen Vorgang gilt, z. B. Löschen, kopiert der Adapterclient die Nachricht in den Ordner C:\TestLocation\OtherNotificaiton.
Daher muss Ihre Orchestrierung Folgendes enthalten:
Ein unidirektionales Empfangsport zum Empfangen von Benachrichtigungen.
Ein Ausdrucks-Shape, das eine xpath-Abfrage enthält, um die Art der empfangenen Benachrichtigung zu extrahieren.
Eine Entscheidungsform, die einen Entscheidungsblock in die Orchestrierung einschließt. In diesem Entscheidungsblock entscheidet die Anwendung basierend auf der empfangenen Benachrichtigung, welche nachfolgenden Vorgänge ausgeführt werden sollen.
Zwei unidirektionale Sendeports, die schließlich die Benachrichtigungen empfangen.
Form empfangen.
Eine Beispielorchestrierung sieht wie folgt aus.
Hinzufügen von Nachrichten-Shapes
Stellen Sie sicher, dass Sie die folgenden Eigenschaften für die einzelnen Nachrichtenformen angeben. Die in der Spalte Shape aufgeführten Namen sind die Namen der Nachrichtenformen, die in der gerade erwähnten Orchestrierung angezeigt werden.
Form | Shape-Typ | Eigenschaften |
---|---|---|
ReceiveNotification | Empfangen | – Legen Sie Name auf ReceiveNotification fest. – Legen Sie Activate auf True fest. |
Hinzufügen eines Ausdrucks-Shapes
Der Zweck des Einschließens eines Ausdrucks-Shapes in die Orchestrierung besteht darin, eine xpath-Abfrage zu erhalten, um die Art der empfangenen Benachrichtigung zu extrahieren. Bevor Wir eine xpath-Abfrage erstellen, sehen wir uns das Format einer Benachrichtigung an. Eine typische Benachrichtigung sieht wie folgt aus:
<?xml version="1.0" encoding="utf-8" ?>
<Notification xmlns="http://Microsoft.LobServices.OracleDB/2007/03/Notification/">
<Details>
<NotificationDetails>
<ResourceName>SCOTT.ACCOUNTACTIVITY</ResourceName>
<Info>1</Info>
<QueryId>0</QueryId>
</NotificationDetails>
</Details>
<Info>Insert</Info>
<ResourceNames>
<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/Arrays">SCOTT.ACCOUNTACTIVITY</string>
</ResourceNames>
<Source>Data</Source>
<Type>Change</Type>
</Notification>
Wie Sie sehen, sind die Informationen zum Typ der Benachrichtigung innerhalb des <info>
Tags im übergeordneten <Notification>
Tag verfügbar. Daher müssen Sie im Rahmen dieses Ausdrucks-Shapes Folgendes ausführen:
Erstellen Sie eine Variable, die den Wert im
<Info>
Tag enthält, und legen Sie ihren Typ auf System.String fest. Weitere Informationen zum Erstellen von Variablen finden Sie unter Verwenden von Variablen in Orchestrierungen.Benennen Sie für dieses Thema die Variable als NotificationType.
Erstellen Sie eine xpath-Abfrage, um den Wert aus dem <Info-Tag> zu extrahieren. Die xpath-Abfrage sieht wie folgt aus:
NotificationType = xpath(NotifyReceive,"string(/*[local-name()='Notification']/*[local-name()='Info']/text())");
In dieser xpath-Abfrage ist NotifyReceive die Nachricht, die Sie zum Empfangen von Benachrichtigungen erstellt haben. Der Auszug innerhalb der
string
Funktion gibt an, dass die Abfrage den Wert innerhalb des<Info>
Tags extrahieren muss, das sich wiederum innerhalb des<Notification>
-Tags befindet. Schließlich wird der von der Abfrage extrahierte Wert der NotificaitonType-Variablen zugewiesen.
Hinzufügen einer Entscheidungsform
Der Zweck des Hinzufügens eines Decide-Shapes besteht darin, einen Entscheidungsblock in die Orchestrierung einzuschließen, um basierend auf der Art der empfangenen Benachrichtigung zu entscheiden, welche nachfolgenden Vorgänge ausgeführt werden sollen. Die Entscheidung erfolgt auf Der Grundlage des Werts der NotificationType-Variablen . In diesem Thema trifft die Orchestrierung basierend auf der Art der empfangenen Benachrichtigung eine Entscheidung. Daher wird die Bedingung in der Regel-Form wie folgt angegeben:
NotificationType.Equals("Insert") | NotificationType.Equals("Update")
Diese Bedingung deutet darauf hin, dass die Orchestrierung einen Satz von Aufgaben ausführt, wenn der Wert für die NotificaitonType-Variable Insert oder Update ist. Wenn der Wert der NotificationType-Variablen einen anderen Wert aufweist, führt die Orchestrierung andere Aufgaben aus.
Wie in den vorherigen Abschnitten erwähnt, kopiert die Orchestrierung nachrichten basierend auf dem Benachrichtigungstyp in verschiedene Ordner, um einen einfachen Ansatz zu veranschaulichen. Daher müssen Sie innerhalb der Blöcke "Regel" und "Else" Send-Shapes hinzufügen, um die Nachrichten an verschiedene Ports zu senden. Benennen Sie für dieses Thema das Shape Senden im Regelblock send als SendUpsertNotification und das Send-Shape im Else-Block als SendOtherNotification.
Hinzufügen von Ports
Nun müssen Sie der Orchestrierung die folgenden logischen Ports hinzufügen:
Unidirektionale Empfangsport zum Empfangen von Benachrichtigungen aus der Oracle-Datenbank.
Unidirektionale Sendeport zum Senden von Benachrichtigungen für Insert- und Update-Vorgänge an einen bestimmten Ordner.
Unidirektionale Sendeport zum Senden von Benachrichtigungen für andere Vorgänge an einen bestimmten Ordner.
Stellen Sie sicher, dass Sie die folgenden Eigenschaften für jeden der logischen Ports angeben. Die in der Spalte Port aufgeführten Namen sind die Namen der Ports, wie in der Orchestrierung angezeigt.
Port | Eigenschaften |
---|---|
OracleNotifyPort | – Bezeichner auf OracleNotifyPort festlegen – Legen Sie Type auf OracleNotifyPortType fest. – Festlegen des Kommunikationsmusters auf Unidirektionale – Festlegen der Kommunikationsrichtung auf "Empfangen" |
NotificationUpsertPort | – Bezeichner auf NotificationUpsertPort festlegen – Legen Sie Type auf NotificationUpsertPortType fest. – Festlegen des Kommunikationsmusters auf Unidirektionale – Kommunikationsrichtung auf Senden festlegen |
OtherNotificationPort | – Festlegen des Bezeichners auf OtherNotificationPort – Legen Sie Type auf OtherNotificationPortType fest. – Festlegen des Kommunikationsmusters auf Unidirektionale – Kommunikationsrichtung auf Senden festlegen |
Angeben von Nachrichten für Aktions-Shapes und Herstellen einer Verbindung mit Ports
In der folgenden Tabelle sind die Eigenschaften und deren Werte angegeben, die Sie festlegen sollten, um Meldungen für Aktionsformen anzugeben und die Nachrichten mit den Ports zu verknüpfen. Die in der Spalte Shape aufgeführten Namen sind die Namen der Meldungs-Shapes, die in der zuvor erwähnten Orchestrierung angezeigt werden.
Form | Eigenschaften |
---|---|
ReceiveNotification | – Nachricht aufNotifyReceive festlegen – Legen Sie Operation auf OracleNotifyPort.Notify.Request fest. |
SendUpsertNotification | – Nachricht aufNotifyReceive festlegen – Festlegen von Operation auf NotificationUpsertPort.Upsert.Request |
SendOtherNotification | – Nachricht aufAuswählen festlegen – Festlegen von Operation auf OtherNotificationPort.Other.Request |
Nachdem Sie diese Eigenschaften angegeben haben, werden die Nachrichtenformen und Ports verbunden, und Die Orchestrierung ist abgeschlossen.
Sie müssen nun die BizTalk-Lösung erstellen und in einem BizTalk Server bereitstellen. Weitere Informationen finden Sie unter Erstellen und Ausführen von Orchestrierungen.
Konfigurieren der BizTalk-Anwendung
Nachdem Sie das BizTalk-Projekt bereitgestellt haben, wird die zuvor erstellte Orchestrierung im Bereich Orchestrierung in der BizTalk Server-Verwaltungskonsole aufgeführt. Sie müssen die BizTalk Server-Verwaltungskonsole verwenden, um die Anwendung zu konfigurieren. Eine exemplarische Vorgehensweise finden Sie unter Exemplarische Vorgehensweise: Bereitstellen einer einfachen BizTalk-Anwendung.
Das Konfigurieren einer Anwendung umfasst Folgendes:
Auswählen eines Hosts für die Anwendung.
Zuordnen der Ports, die Sie in Ihrer Orchestrierung erstellt haben, zu physischen Ports in der BizTalk Server-Verwaltungskonsole. Für diese Orchestrierung müssen Sie Folgendes ausführen:
Definieren Sie einen physischen WCF-Custom oder WCF-OracleDB unidirektionalen Empfangsport. Dieser Port lauscht auf Benachrichtigungen aus der Oracle-Datenbank. Informationen zum Erstellen von Empfangsports finden Sie unter Manuelles Konfigurieren einer physischen Portbindung an den Oracle-Datenbankadapter. Stellen Sie sicher, dass Sie die folgenden Bindungseigenschaften für den Empfangsport angeben.
Wichtig
Sie müssen diesen Schritt nicht ausführen, wenn Sie die Bindungseigenschaften zur Entwurfszeit angegeben haben. In einem solchen Fall können Sie einen benutzerdefinierten WCF- oder WCF-OracleDB-Empfangsport erstellen, wobei die erforderlichen Bindungseigenschaften festgelegt sind, indem Sie die bindungsdatei importieren, die vom Add-In Consume Adapter Service erstellt wurde. Weitere Informationen finden Sie unter Konfigurieren einer physischen Portbindung mithilfe einer Portbindungsdatei.
Bindungseigenschaft Wert InboundOperationType Legen Sie dies auf Benachrichtigung fest. NotificationPort Gibt die Portnummer an, die ODP.NET öffnen muss, um auf Datenbankänderungsbenachrichtigungen aus der Oracle-Datenbank zu lauschen. Legen Sie dies auf die gleiche Portnummer fest, die Sie der Liste der Windows-Firewallausnahmen hinzugefügt haben müssen. Anweisungen zum Hinzufügen von Ports zur Liste der Windows-Firewallausnahmen finden Sie unter https://go.microsoft.com/fwlink/?LinkID=196959.
Wichtig: Wenn Sie dies auf den Standardwert -1 festlegen, müssen Sie die Windows-Firewall vollständig deaktivieren, um Benachrichtigungen zu empfangen.NotificationStatement Legen Sie dies auf fest:
SELECT TID,ACCOUNT,PROCESSED FROM SCOTT.ACCOUNTACTIVITY WHERE PROCESSED = ‘n’
Hinweis: Sie müssen den Tabellennamen zusammen mit dem Schemanamen angeben. Beispiel:SCOTT.ACCOUNTACTIVITY
.NotifyOnListenerStart Legen Sie dies auf True fest. Weitere Informationen zu den verschiedenen Bindungseigenschaften finden Sie unter Arbeiten mit Bindungseigenschaften.
Hinweis
Es wird empfohlen, die Transaktionsisolationsstufe und das Transaktionstimeout zu konfigurieren, während eingehende Vorgänge mithilfe des Oracle Database-Adapters ausgeführt werden. Dazu fügen Sie das Dienstverhalten beim Konfigurieren des WCF-Custom oder WCF-OracleDB Empfangsports hinzu. Anweisungen zum Hinzufügen des Dienstverhaltens finden Sie unter Konfigurieren der Transaktionsisolationsstufe und des Transaktionstimeouts mit Oracle Database.
Definieren Sie einen Speicherort auf der Festplatte und einen entsprechenden Dateiport, an dem die BizTalk-Orchestrierung die Benachrichtigungen aus der Oracle-Datenbank für Insert- und Update-Vorgänge ablöscht. Konfigurieren Sie diesen Port so, dass Benachrichtigungsmeldungen im Ordner C:\TestLocation\UpsertNotification abgelegt werden.
Definieren Sie einen Speicherort auf der Festplatte und einen entsprechenden Dateiport, an dem die BizTalk-Orchestrierung die Benachrichtigungsmeldungen aus der Oracle-Datenbank für alle anderen Vorgänge ablöscht. Konfigurieren Sie diesen Port so, dass Benachrichtigungsmeldungen im Ordner C:\TestLocation\OtherNotification abgelegt werden.
Starten der Anwendung
Sie müssen die BizTalk-Anwendung starten, um Benachrichtigungen aus der Oracle-Datenbank zu empfangen und die nachfolgenden Select- und Update-Vorgänge auszuführen. Anweisungen zum Starten einer BizTalk-Anwendung finden Sie unter Starten einer Orchestrierung.
Stellen Sie in dieser Phase Folgendes sicher:
Der WCF-Custom oder WCF-OracleDB unidirektionalen Empfangsport, der die Benachrichtigungsmeldungen aus der Oracle-Datenbank empfängt, wird ausgeführt.
Die beiden FILE-Sendeports, die Nachrichten aus der Oracle-Datenbank empfangen, werden ausgeführt.
Die BizTalk-Orchestrierung für den Vorgang wird ausgeführt.
Ausführen des Vorgangs
Nachdem Sie die BizTalk-Orchestrierung gestartet haben, werden die folgenden Aktionen ausgeführt:
Da die NotifyOnListenerStart-Bindungseigenschaft auf True festgelegt ist, erhalten Sie die folgende Meldung:
<?xml version="1.0" encoding="utf-8" ?> <Notification xmlns="http://Microsoft.LobServices.OracleDB/2007/03/Notification/"> <Info>ListenerStarted</Info> <Source>OracleDBBinding</Source> <Type>Startup</Type> </Notification>
Beachten Sie, dass der Wert im
<Info>
Tag "ListnerStarted" lautet. Daher wird diese Nachricht im Ordner C:\TestLocation\OtherNotification empfangen.Fügen Sie einen Datensatz in die Tabelle ACCOUNTACTIVITY ein. Sie erhalten eine Benachrichtigung, die wie folgt aussieht:
<?xml version="1.0" encoding="utf-8" ?> <Notification xmlns="http://Microsoft.LobServices.OracleDB/2007/03/Notification/"> <Details> <NotificationDetails> <ResourceName>SCOTT.ACCOUNTACTIVITY</ResourceName> <Info>1</Info> <QueryId>0</QueryId> </NotificationDetails> </Details> <Info>Insert</Info> <ResourceNames> <string xmlns="http://schemas.microsoft.com/2003/10/Serialization/Arrays">SCOTT.ACCOUNTACTIVITY</string> </ResourceNames> <Source>Data</Source> <Type>Change</Type> </Notification>
Beachten Sie, dass der Wert im
<Info>
Tag "Insert" ist. Daher wird diese Nachricht im Ordner C:\TestLocation\UpsertNotification empfangen.Aktualisieren Sie einen Datensatz in der Tabelle ACCOUNTACTIVITY. Sie erhalten eine Benachrichtigung, die wie folgt aussieht:
<?xml version="1.0" encoding="utf-8" ?> <Notification xmlns="http://Microsoft.LobServices.OracleDB/2007/03/Notification/"> <Details> <NotificationDetails> <ResourceName>SCOTT.ACCOUNTACTIVITY</ResourceName> <Info>32</Info> <QueryId>0</QueryId> </NotificationDetails> </Details> <Info>Update</Info> <ResourceNames> <string xmlns="http://schemas.microsoft.com/2003/10/Serialization/Arrays">SCOTT.ACCOUNTACTIVITY</string> </ResourceNames> <Source>Data</Source> <Type>Change</Type> </Notification>
Beachten Sie, dass der Wert im
<Info>
Tag "Update" lautet. Daher wird diese Nachricht im Ordner C:\TestLocation\UpsertNotification empfangen.Löschen Sie einen Datensatz aus der Tabelle ACCOUNTACTIVITY. Sie erhalten eine Benachrichtigung, die wie folgt aussieht:
<?xml version="1.0" encoding="utf-8" ?> <Notification xmlns="http://Microsoft.LobServices.OracleDB/2007/03/Notification/"> <Details> <NotificationDetails> <ResourceName>SCOTT.ACCOUNTACTIVITY</ResourceName> <Info>16</Info> <QueryId>0</QueryId> </NotificationDetails> </Details> <Info>Delete</Info> <ResourceNames> <string xmlns="http://schemas.microsoft.com/2003/10/Serialization/Arrays">SCOTT.ACCOUNTACTIVITY</string> </ResourceNames> <Source>Data</Source> <Type>Change</Type> </Notification>
Beachten Sie, dass der Wert im
<Info>
Tag "Delete" lautet. Daher wird diese Nachricht im Ordner C:\TestLocation\OtherNotification empfangen.
Bewährte Methoden
Nachdem Sie das BizTalk-Projekt bereitgestellt und konfiguriert haben, können Sie Konfigurationseinstellungen in eine XML-Datei namens bindungsdatei exportieren. Nachdem Sie eine Bindungsdatei generiert haben, können Sie die Konfigurationseinstellungen aus der Datei importieren, sodass Sie nicht die Sende- und Empfangsports für dieselbe Orchestrierung erstellen müssen. Weitere Informationen zu Bindungsdateien finden Sie unter Wiederverwenden von Oracle Database Adapter-Bindungen.
Ausführen komplexer Vorgänge nach dem Empfang von Benachrichtigungen
Aus Gründen der Einfachheit und des besseren Verständnisses kopiert die Orchestrierung in diesem Thema Nachrichten basierend auf dem Benachrichtigungstyp in verschiedene Ordner. In realen Szenarien sollten Sie jedoch komplexere Vorgänge ausführen. Sie können ähnliche Prozeduren wie in diesem Thema ausführen und darauf aufbauen, um die gewünschten Vorgänge auszuführen. Beispielsweise können Sie die Orchestrierung so ändern, dass Datensätze in eine andere Tabelle eingefügt werden, wenn Sie eine Benachrichtigung für einen Insert-Vorgang für die Tabelle ACCOUNTACTIVITY erhalten. In einem solchen Fall können Sie entsprechende Änderungen im Shape Entscheiden vornehmen.
Weitere Informationen
Empfangen von Oracle Database-Änderungsbenachrichtigungen mithilfe von BizTalk Server