Freigeben über


Verarbeiten von Benachrichtigungen zum Ausführen bestimmter Aufgaben in Oracle Database mithilfe von BizTalk Server

Sie können den Oracle-Datenbankadapter verwenden, um Benachrichtigungen für Ä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. Alle Nachbearbeitungen dieser Datensätze müssen von den Clientanwendungen selbst behandelt werden. Dieses Thema enthält eine szenariobasierte Beschreibung zum Verarbeiten der Datensätze in der Tabelle basierend auf der Art der Benachrichtigung, die von der Oracle-Datenbank empfangen wurde.

Szenarien zum Ausführen nachfolgender Aktionen nach erhaltder Benachrichtigung

Es folgen einige Szenarien, in denen die Adapterclients bestimmte Aufgaben nach der Benachrichtigung ausführen müssen.

  • Szenario 1. Erwägen Sie ein Szenario, in dem der Adapterclient bestimmte Aufgaben basierend auf der Art der Benachrichtigung ausführen muss, die Sie aus 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 der Tabelle "B" gelöscht werden.

    In diesem Szenario muss der Adapterclient aus der empfangenen Benachrichtigung den Typ der Benachrichtigung extrahieren, um zu entscheiden, ob die Benachrichtigung für einen Einfügevorgang oder einen Löschvorgang war. Sobald der Benachrichtigungstyp ermittelt wurde, müssen die Adapterclients nachfolgende Aktionen ausführen, um die relevanten Tabellen einzufügen oder zu aktualisieren.

  • Szenario 2. Erwägen Sie ein Szenario, in dem der Empfangsort, der Benachrichtigungen für Änderungen an einer Tabelle empfängt, ausfällt. Während der Empfangsort ausgefallen ist, werden einige Datensätze der Tabelle hinzugefügt. Für diese Datensätze erhält der Adapterclient jedoch keine Benachrichtigung. Wenn der Empfangsspeicherort gesichert ist, benachrichtigt der Adapter den Client durch Senden einer bestimmten Nachricht, 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 extrahieren, ob die Benachrichtigung sich auf eine Änderung an einer Datenbanktabelle bezieht oder darauf, dass der Empfangsstandort gestartet wird. Wenn die Benachrichtigung für den Start des Empfangsspeicherorts erfolgt, müssen die Adapter-Clients die Logik implementieren, um die Datensätze zu verarbeiten, die möglicherweise eingefügt, aktualisiert oder gelöscht wurden, während der Empfangsspeicherort nicht verfügbar war.

Hinweis

Dies sind nur einige Beispielszenarien, die für ein besseres Verständnis der Verwendung des Benachrichtigungsfeatures im Oracle Database-Adapter aufgeführt sind. Die grundlegenden Aufgaben, die zum Extrahieren des empfangenen Benachrichtigungstyps erforderlich sind, sind jedoch für alle Szenarien ähnlich. Dieses Thema enthält Anweisungen zum Extrahieren des Benachrichtigungstyps aus einer Benachrichtigung.

Wie in diesem Thema der Empfang von Benachrichtigungen veranschaulicht wird

In diesem Thema wird demonstriert, wie Benachrichtigungsnachrichten verarbeitet werden, um nachfolgende Aufgaben auszuführen, indem ein einfaches Szenario betrachtet wird, in dem ein Adapter-Client die BizTalk-Anwendung verwendet, um Benachrichtigungen über Änderungen an der ACCOUNTACTIVITY-Tabelle zu empfangen. Nachdem die Benachrichtigung empfangen wurde, filtert der Client den Typ der empfangenen Benachrichtigung und führt nachfolgende Aktionen aus. Um ein sehr einfaches Szenario zu veranschaulichen, betrachten wir, dass der Adapterclient die Benachrichtigungen basierend auf der Art der empfangenen Benachrichtigung in verschiedene Ordner kopiert. Deshalb:

  • Wenn die Benachrichtigung für einen Einfüge- oder Aktualisierungsvorgang vorgesehen ist, 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 unidirektionaler Empfangsanschluss für Benachrichtigungsnachrichten.

  • Eine Ausdrucksform, die eine XPath-Abfrage enthält, um die Informationen über die Art der empfangenen Benachrichtigungsnachricht zu extrahieren.

  • Ein Entscheidungs-Shape, das einen Entscheidungsblock in die Orchestrierung einschließt. In diesem Entscheidungsblock entscheidet die Anwendung, welche nachfolgenden Vorgänge basierend auf der empfangenen Benachrichtigung ausgeführt werden sollen.

  • Zwei Einweg-Sendeports, die schließlich die Benachrichtigungen empfangen werden.

Konfigurieren von Benachrichtigungen mit den Oracle-Datenbankbindungseigenschaften

In der folgenden Tabelle sind die Bindungseigenschaften des Oracle-Datenbankadapters zusammengefasst, die Sie zum Konfigurieren des Empfangens von Benachrichtigungen aus der Oracle-Datenbank verwenden. Sie müssen diese Bindungseigenschaften angeben, während Sie den Empfangsport in der BizTalk Server-Verwaltungskonsole konfigurieren.

Hinweis

Sie können diese Bindungseigenschaften beim Generieren des Schemas für den Benachrichtigungsvorgang angeben, auch wenn es nicht obligatorisch ist. Wenn Sie dies tun, enthält die Portbindungsdatei, die das Add-In "Adapterdienst nutzen" als Teil der Metadatengenerierung erstellt, auch die Werte, die Sie für die Bindungseigenschaften angeben. Sie können diese Bindungsdatei später in der BizTalk Server-Verwaltungskonsole importieren, um den WCF-benutzerdefinierten oder WCF-OracleDB Empfangen-Port zu erstellen, wobei die Bindungseigenschaften bereits festgelegt sind. Weitere Informationen zum Erstellen eines WCF-benutzerdefinierten oder WCF-OracleDB-Ports mithilfe der Bindungsdatei finden Sie unter Konfigurieren einer physischen Portbindung mithilfe einer Portbindungsdatei zu Oracle Database.

Binding-Eigenschaft BESCHREIBUNG
InboundOperationType Gibt den ankommenden 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 auf Benachrichtigungen über Datenbankänderungen von Oracle zu lauschen.
NotificationStatement Gibt die SELECT-Anweisung an, die zum Registrieren 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 aus der Oracle-Datenbank finden Sie weiter.

So erhalten Sie Benachrichtigungen aus der Oracle-Datenbank

Das Ausführen eines Vorgangs auf der Oracle-Datenbank mithilfe des Oracle-Datenbankadapters mit BizTalk Server umfasst die in Bausteinen beschriebenen Verfahrensaufgaben zum Entwickeln von BizTalk Applications mit Oracle Database. Zum Konfigurieren des Adapters zum Empfangen von Benachrichtigungsnachrichten sind folgende Aufgaben erforderlich:

  1. Erstellen Sie ein BizTalk-Projekt, und generieren Sie dann das Schema für den eingehenden Benachrichtigungsvorgang . Optional können Sie Werte für die Bindungseigenschaften InboundOperationType, NotificationPort und NotificationStatement angeben.

  2. Erstellen Sie eine Nachricht im BizTalk-Projekt zum Empfangen von Benachrichtigungen aus der Oracle-Datenbank.

  3. Erstellen Sie eine Orchestrierung, wie im vorherigen Abschnitt beschrieben.

  4. Erstellen und Bereitstellen des BizTalk-Projekts.

  5. Konfigurieren Sie die BizTalk-Anwendung, indem Sie physische Sende- und Empfangsports erstellen.

    Hinweis

    Bei eingehenden Vorgängen wie dem 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.

  6. Starten Sie die BizTalk-Anwendung.

    Dieses Thema enthält Anweisungen zum Ausführen dieser Aufgaben.

Generieren des Schemas

Sie müssen das Schema für den eingehenden Benachrichtigungsvorgang generieren. Um das Schema zu generieren, finden Sie weitere Informationen im Artikel Abrufen von Metadaten für Oracle-Datenbankvorgänge in Visual Studio. Führen Sie beim Generieren des Schemas die folgenden Aufgaben aus. Überspringen Sie den ersten Schritt, wenn Sie die Bindungseigenschaften zur Entwurfszeit nicht angeben möchten.

  1. 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.

  2. Wählen Sie den Vertragstyp als Dienst (eingehende Vorgänge) aus.

  3. Generieren Sie das Schema für den Benachrichtigungsvorgang .

Definieren von Nachrichten und Nachrichtentypen

Das Schema, das Sie früher generiert haben, beschreibt die für die Nachrichten in der Orchestrierung erforderlichen "Typen". 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 Nachrichten aus der Orchestrierungsansicht des BizTalk-Projekts verknüpfen.

Für dieses Thema müssen Sie eine Nachricht erstellen, um Benachrichtigungen aus der Oracle-Datenbank zu erhalten.

Führen Sie die folgenden Schritte aus, um Nachrichten zu erstellen und mit dem Schema zu verknüpfen.

  1. 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".

  2. Ö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".

  3. Klicken Sie in der Orchestrierungsansicht mit der rechten Maustaste auf "Nachrichten", und klicken Sie dann auf "Neue Nachricht".

  4. Klicken Sie mit der rechten Maustaste auf die neu erstellte Nachricht, und wählen Sie dann "Eigenschaftenfenster" aus.

  5. Gehen Sie im Eigenschaftenbereich für Message_1 wie folgt vor:

    Verwenden Sie diese Aktion
    Kennung 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 dann Aufgaben basierend auf dem Typ der empfangenen Benachrichtigung auszuführen. In 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, nämlich NotificationType. Das Shape "Entscheiden" verwendet den Wert in dieser Variablen, um zu entscheiden, welche Art von Benachrichtigung empfangen wurde, 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 Einfüge- oder Aktualisierungsvorgang vorgesehen ist, 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".

    Ihre Orchestrierung muss also Folgendes enthalten:

  • Ein unidirektionaler Empfangsanschluss für Benachrichtigungsnachrichten.

  • Eine Ausdrucksform, die eine XPath-Abfrage enthält, um die Art der empfangenen Benachrichtigung zu extrahieren.

  • Ein Entscheidungs-Shape, das einen Entscheidungsblock in die Orchestrierung einschließt. In diesem Entscheidungsblock entscheidet die Anwendung, welche nachfolgenden Vorgänge basierend auf der empfangenen Benachrichtigung ausgeführt werden sollen.

  • Zwei Einweg-Sendeports, die schließlich die Benachrichtigungen empfangen werden.

  • Gestalt annehmen

    Eine Beispiel-Orchestrierung ähnelt der folgenden.

    Orchestrierung zum Ausführen der Nachbenachrichtigungsaufgabe

Hinzufügen von Nachrichtenformen

Stellen Sie sicher, dass Sie die folgenden Eigenschaften für die einzelnen Nachrichten-Shapes angeben. Die in der Spalte "Shape" aufgeführten Namen sind die der Nachrichten-Shapes, die in der gerade erwähnten Orchestrierung angezeigt werden.

Gestalt Shape-Typ Eigenschaften
ReceiveNotification Empfangen - Name auf ReceiveNotification setzen

- Setze Aktivieren auf True

Hinzufügen einer Ausdrucksform

Der Zweck der Einbindung eines Ausdrucks-Elements in die Orchestrierung besteht darin, eine XPath-Abfrage zu verwenden, um die Art der empfangenen Benachrichtigung zu extrahieren. Bevor Sie eine xpath-Abfrage erstellen, schauen 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, stehen die Informationen zum Typ der Benachrichtigung innerhalb des <info> Tags innerhalb des übergeordneten <Notification> Tags zur Verfügung. Im Rahmen dieses Ausdrucks-Shapes müssen Sie folgende Aktionen ausführen:

  • Erstellen Sie eine Variable, die den Wert innerhalb des <Info> Tags enthält, und legen Sie den 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 für den Empfang von Benachrichtigungen erstellt haben. Der Auszug innerhalb der string Funktion gibt an, dass die Abfrage den Wert innerhalb des <Info> Tags extrahieren muss, der wiederum innerhalb des <Notification> Tags liegt. Schließlich wird der von der Abfrage extrahierte Wert der Variablen NotificaitonType zugewiesen.

Hinzufügen einer Entscheidungsform

Der Zweck des Hinzufügens eines Entscheidungs-Shapes besteht darin, einen Entscheidungsblock in die Orchestrierung einzuschließen, um zu entscheiden, welche nachfolgenden Vorgänge je nach Art der empfangenen Benachrichtigung ausgeführt werden sollen. Die Entscheidung wird auf der Grundlage des Werts der NotificationType-Variablen getroffen. In diesem Thema trifft die Orchestrierung eine Entscheidung basierend auf der Art der empfangenen Benachrichtigung. Die Bedingung in der Regelform wird also wie folgt angegeben:

NotificationType.Equals("Insert") | NotificationType.Equals("Update")

Diese Bedingung deutet darauf hin, dass die Orchestrierung eine Reihe von Aufgaben ausführt, wenn der Wert für die Variable NotificaitonType "Insert" oder "Update" lautet. Wenn der Wert der NotificationType-Variablen etwas anderes ist, führt die Orchestrierung andere Aufgaben aus.

Wie in den vorherigen Abschnitten erwähnt, wird die Orchestrierung, um einen einfachen Ansatz zu veranschaulichen, Nachrichten basierend auf dem Benachrichtigungstyp in verschiedene Ordner kopieren. Daher müssen Sie innerhalb der Regel- und Else-Blöcke "Senden"-Shapes hinzufügen, um die Nachrichten an verschiedene Ports zu senden. Benennen Sie für dieses Thema das Send-Shape im Regelblock als SendUpsertNotification und das Send-Shape im Else-Block als SendOtherNotification.

Hinzufügen von Ports

Sie müssen nun die folgenden logischen Ports zur Orchestrierung hinzufügen:

  • Der unidirektionale Empfangsport zum Empfangen von Benachrichtigungen aus der Oracle-Datenbank.

  • Einweg-Sendeport zum Senden von Benachrichtigungen für Einfüge- und Aktualisierungsvorgänge an einen bestimmten Ordner.

  • Einweg-Sendeport, um Benachrichtigungsnachrichten für beliebige andere Vorgänge in einen bestimmten Ordner zu senden.

    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, die in der Orchestrierung angezeigt werden.

Hafen Eigenschaften
OracleNotifyPort - Stellen Sie Identifier auf OracleNotifyPort ein

- Typ für OracleNotifyPortType einrichten

- Kommunikationsmuster auf Einweg festlegen

- Setze Kommunikationsrichtung auf Empfangen
NotificationUpsertPort - Bezeichner auf NotificationUpsertPort festlegen

- Typ auf NotificationUpsertPortType festlegen

- Kommunikationsmuster auf Einweg festlegen

- Kommunikationsrichtung auf "Senden" festlegen
AndererBenachrichtigungsPort - Bezeichner auf OtherNotificationPort festlegen

- Stellen Sie Typ auf OtherNotificationPortType

- Kommunikationsmuster auf Einweg festlegen

- Kommunikationsrichtung auf "Senden" festlegen

Angeben von Nachrichten für Aktions-Shapes und Verbinden mit Ports

In der folgenden Tabelle werden die Eigenschaften und deren Werte angegeben, die Sie festlegen sollten, um Nachrichten für Aktions-Shapes anzugeben und die Nachrichten mit den Ports zu verknüpfen. Die in der Spalte "Shape" aufgeführten Namen sind die Namen der Nachrichten-Shapes, wie in der zuvor erwähnten Orchestrierung angezeigt.

Gestalt Eigenschaften
ReceiveNotification - Nachricht auf NotifyReceive festlegen

- Vorgang auf OracleNotifyPort.Notify.Request festlegen
SendeUpsertBenachrichtigung - Nachricht auf NotifyReceive festlegen

- Vorgang auf NotificationUpsertPort.Upsert.Request festlegen
AndereBenachrichtigungSenden - Nachricht auf Auswahl einstellen

- Vorgang auf OtherNotificationPort.Other.Request festlegen

Nachdem Sie diese Eigenschaften angegeben haben, sind die Nachrichtenformen und Ports verbunden, und die Orchestrierung ist abgeschlossen.

Sie müssen nun die BizTalk-Lösung erstellen und auf einem BizTalk Server bereitstellen. Weitere Informationen finden Sie unter Building and Running Orchestrations.

Konfigurieren der BizTalk-Anwendung

Nachdem Sie das BizTalk-Projekt bereitgestellt haben, wird die zuvor erstellte Orchestrierung im Bereich "Orchestrierungen " 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 Walkthrough: Deploying a Basic BizTalk Application.

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:

    • 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 Database Adapter. Stellen Sie sicher, dass Sie die folgenden Bindungseigenschaften für den Empfangsport angeben.

      Von Bedeutung

      Sie müssen diesen Schritt nicht ausführen, wenn Sie die Bindungseigenschaften zur Entwurfszeit angegeben haben. In diesem Fall können Sie einen WCF-benutzerdefinierten oder WCF-OracleDB-Empfangsport erstellen, wobei die erforderlichen Bindungseigenschaften festgelegt sind, indem Sie die Bindungsdatei importieren, die vom Add-In "Consume Adapter Service Add-in" erstellt wurde. Weitere Informationen finden Sie unter Konfigurieren einer physischen Portbindung mithilfe einer Portbindungsdatei.

      Binding-Eigenschaft Wert
      InboundOperationType Legen Sie dies auf "Benachrichtigung" fest.
      NotificationPort Gibt die Portnummer an, die ODP.NET öffnen muss, um auf Benachrichtigungen über Datenbankänderungen von Oracle zu lauschen. Legen Sie dies auf dieselbe Portnummer fest, die Sie der Liste der Ausnahmen für die Windows-Firewall hinzugefügt haben müssen. Anweisungen zum Hinzufügen von Ports zur Windows-Firewall-Ausnahmenliste finden Sie unter https://go.microsoft.com/fwlink/?LinkID=196959.

      Wichtig: Wenn Sie dies auf den Standardwert von -1 festlegen, müssen Sie die Windows-Firewall vollständig deaktivieren, um Benachrichtigungen zu empfangen.
      NotificationStatement Legen Sie folgendes fest:

      SELECT TID,ACCOUNT,PROCESSED FROM SCOTT.ACCOUNTACTIVITY WHERE PROCESSED = ‘n’

      Anmerkung: Sie müssen den Tabellennamen zusammen mit dem Schemanamen angeben. Beispiel: SCOTT.ACCOUNTACTIVITY.
      NotifyOnListenerStart Legen Sie diesen Wert 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 mit dem Oracle Database-Adapter ausgeführt werden. Dazu können Sie das Dienstverhalten hinzufügen, indem Sie den Empfangsport WCF-Custom oder WCF-OracleDB konfigurieren. Anweisungen zum Hinzufügen des Dienstverhaltens finden Sie unter Configure Transaction Isolation Level and Transaction Timeout with 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 Einfüge- und Aktualisierungsvorgänge ablöscht. Konfigurieren Sie diesen Port, um Benachrichtigungen im Ordner "C:\TestLocation\UpsertNotification" abzulegen.

    • Definieren Sie einen Speicherort auf der Festplatte und einen entsprechenden Dateiport, an dem die BizTalk-Orchestrierung die Benachrichtigungen aus der Oracle-Datenbank für alle anderen Vorgänge ablöscht. Konfigurieren Sie diesen Port, um Benachrichtigungen im Ordner C:\TestLocation\OtherNotification abzulegen.

Starten der Anwendung

Sie müssen die BizTalk-Anwendung zum Empfangen von Benachrichtigungen aus der Oracle-Datenbank und zum Ausführen der nachfolgenden Auswahl- und Aktualisierungsvorgänge starten. Anweisungen zum Starten einer BizTalk-Anwendung finden Sie unter "So starten Sie eine Orchestrierung".

Stellen Sie in dieser Phase folgendes sicher:

  • Der WCF-Custom- oder WCF-OracleDB-Empfangsport, der die Benachrichtigungen aus der Oracle-Datenbank empfängt, läuft.

  • Die beiden FILE-Sendeports, die Nachrichten aus der Oracle-Datenbank empfangen, laufen.

  • 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 lautet:

    <?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 "Einfügen" lautet. Daher wird diese Nachricht im Ordner "C:\TestLocation\UpsertNotification" empfangen.

  • Einen Datensatz in der TABELLE ACCOUNTACTIVITY aktualisieren. Sie erhalten eine Benachrichtigung, die wie folgt lautet:

    <?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 eines Datensatzes aus der ACCOUNTACTIVITY-Tabelle. Sie erhalten eine Benachrichtigung, die wie folgt lautet:

    <?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 exportieren, die als Bindungsdatei bezeichnet wird. Nachdem Sie eine Bindungsdatei generiert haben, können Sie die Konfigurationseinstellungen aus der Datei importieren, sodass Sie keine Sendeports erstellen und Ports für dieselbe Orchestrierung empfangen müssen. Weitere Informationen zu Bindungsdateien finden Sie unter Wiederverwenden von Oracle Database Adapter-Bindungen.

Ausführen komplexer Vorgänge nach erhalt von Benachrichtigungen

Zur Vereinfachung und besseren Verständnis 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 Verfahren wie in diesem Thema beschrieben ausführen und auf diese aufbauen, um die gewünschten Vorgänge auszuführen. Sie können z. B. die Orchestrierung so ändern, dass Datensätze in eine andere Tabelle eingefügt werden, wenn Sie eine Benachrichtigung für einen Einfügevorgang in der ACCOUNTACTIVITY-Tabelle erhalten. In einem solchen Fall können Sie entsprechende Änderungen innerhalb des Shape "Entscheiden" vornehmen.

Siehe auch

Empfangen von Änderungsbenachrichtigungen über Oracle-Datenbank mithilfe von BizTalk Server