Freigeben über


Inkrementelles Empfangen von Oracle Database-Änderungsbenachrichtigungen mithilfe von BizTalk Server

Wichtig

Der Kürze halber wird in diesem Thema nur beschrieben, wie Benachrichtigungen inkrementell empfangen werden. In Geschäftsszenarien muss die Orchestrierung idealerweise die Logik enthalten, um die Art der empfangenen Benachrichtigungsnachricht zu extrahieren und anschließend alle nachfolgenden Vorgänge auszuführen. Mit anderen Worten, die in diesem Thema beschriebene Orchestrierung muss auf der Orchestrierung basieren, die unter Prozessbenachrichtigungsmeldungen beschrieben wird, um bestimmte Aufgaben in Oracle Database mit BizTalk Server auszuführen.

In diesem Thema wird veranschaulicht, wie Sie den Oracle Database-Adapter so konfigurieren, dass er Benachrichtigungen über inkrementelle Abfragen von Oracle empfängt. Um inkrementelle Benachrichtigungen zu veranschaulichen, betrachten wir eine Tabelle, ACCOUNTACTIVITY, mit einer Spalte "Verarbeitet". Wenn ein neuer Datensatz in diese Tabelle eingefügt wird, wird der Wert der Spalte "Verarbeitet" auf "n" festgelegt. Sie können den Adapter so konfigurieren, dass er inkrementelle Benachrichtigungen empfängt, indem Sie die folgenden Schritte ausführen:

  • Registrieren Sie sich für Benachrichtigungen mit einer SELECT-Anweisung, die alle Datensätze mit der Spalte "Verarbeitet" als "n" abruft. Hierzu geben Sie die SELECT-Anweisung für die NotificationStatement-Bindungseigenschaft an.

  • Aktualisieren Sie für Zeilen, für die eine Benachrichtigung erfolgt ist, die Spalte "Verarbeitet" auf "y".

    In diesem Thema wird veranschaulicht, wie Sie eine BizTalk-Orchestrierung erstellen und eine BizTalk-Anwendung konfigurieren, um dies zu erreichen.

Konfigurieren von Benachrichtigungen mit den Bindungseigenschaften des Oracle-Datenbankadapters

In der folgenden Tabelle sind die Bindungseigenschaften des Oracle Database-Adapters zusammengefasst, die Sie zum Konfigurieren des Empfangens von Benachrichtigungen aus der Oracle-Datenbank verwenden. Sie müssen diese Bindungseigenschaften beim Konfigurieren des Empfangsports in der BizTalk Server-Verwaltungskonsole angeben.

Hinweis

Sie können diese Bindungseigenschaften beim Generieren des Schemas für den Benachrichtigungsvorgang angeben, auch wenn dies nicht obligatorisch ist. Wenn Sie dies tun, enthält die Portbindungsdatei, die das Add-In "Adapterdienst nutzen" im Rahmen der Metadatengenerierung generiert, 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 Empfangsport mit den bereits festgelegten Bindungseigenschaften zu erstellen. Weitere Informationen zum Erstellen eines Empfangsports mithilfe der Bindungsdatei finden Sie unter Konfigurieren einer physischen Portbindung mithilfe einer Portbindungsdatei für Oracle Database.

Bindungseigenschaft BESCHREIBUNG
InboundOperationType Gibt den eingehenden Vorgang an, den Sie ausführen möchten. Legen Sie zum Empfangen von Benachrichtigungen dies auf Benachrichtigung fest.
NotificationPort Gibt die Portnummer an, die ODP.NET öffnen muss, um auf Datenbankänderungsbenachrichtigungen aus der Oracle-Datenbank zu lauschen.
NotificationStatement Gibt die SELECT-Anweisung an, die zum Registrieren von 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 Dem BizTalk-Adapter für Oracle-Datenbankbindungseigenschaften. Eine vollständige Beschreibung der Verwendung des Oracle Database-Adapters zum Empfangen von Benachrichtigungen aus der Oracle-Datenbank finden Sie weiter.

Wie dieses Thema den Empfang von Benachrichtigungsnachrichten veranschaulicht

Um zu veranschaulichen, wie der Oracle Database-Adapter den Empfang von Benachrichtigungen zu inkrementellen Datenbankänderungen aus der Oracle-Datenbank unterstützt, konfigurieren wir den Adapter so, dass er Benachrichtigungen für Änderungen an der TABELLE ACCOUNTACTIVTY empfängt. Angenommen, die TABELLE ACCOUNTACTIVITY enthält die Spalten "TID", "Account" und "Processed". Wenn ein neuer Datensatz hinzugefügt wird, wird der Wert der Spalte "Verarbeitet" auf "n" festgelegt. Um also inkrementelle Benachrichtigungen zu erhalten, müssen Sie die folgenden Aufgaben im Rahmen der BizTalk-Orchestrierung ausführen:

  • Rufen Sie eine Benachrichtigung für alle Datensätze ab, bei denen "Verarbeitet" "n" ist. Dazu geben Sie eine SELECT-Anweisung als Benachrichtigungsanweisung an.

  • Nachdem die Benachrichtigung für einen bestimmten Datensatz empfangen wurde, legen Sie "Verarbeitet" auf "y" fest. Hierzu können Sie eine gespeicherte Prozedur ausführen, PROCESS_RECORDS, die die Spalte "Verarbeitet" aktualisiert.

    Um den Empfang inkrementeller Benachrichtigungen zu veranschaulichen, gehen wir wie folgt vor:

  • Generieren Sie ein Schema für die Benachrichtigung (eingehender Vorgang) und PROCESS_RECORDS (ausgehender Vorgang) für die Tabelle ACCOUNTACTIVITY.

  • Erstellen Sie eine Orchestrierung, die Folgendes aufweist:

    • Ein Empfangsspeicherort zum Empfangen von Benachrichtigungen. Sie können für Benachrichtigungen konfigurieren, indem Sie die SELECT-Anweisung wie folgt angeben:

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

      Hinweis

      Sie müssen den Tabellennamen zusammen mit dem Schemanamen angeben. Beispiel: SCOTT.ACCOUNTACTIVITY.

    • Ein Sendeport zum Aktualisieren der Zeilen, für die bereits eine Benachrichtigung gesendet wurde. Sie führen die PROCESS_RECORDS gespeicherten Prozedur an diesem Port aus, um den Wert der Spalte "Verarbeitet" für die Datensätze, für die eine Benachrichtigung empfangen wird, auf "y" festzulegen.

      Beachten Sie, dass dieser Vorgang nach dem Empfang der Benachrichtigungsmeldungen ausgeführt werden muss, damit die verarbeiteten Zeilen aktualisiert werden. Um den Aufwand des Wartens auf das Abrufen der Benachrichtigungsantwort und das manuelle Löschen einer Anforderungsnachricht zum Ausführen der PROCESS_RECORDS-Prozedur zu beheben, generieren Sie die Anforderungsnachricht für PROCESS_RECORDS Prozedur innerhalb der Orchestrierung selbst. Sie können dies tun, indem Sie das Shape Nachricht erstellen innerhalb einer Orchestrierung verwenden.

Empfangen von Benachrichtigungsnachrichten aus der Oracle-Datenbank

Das Ausführen eines Vorgangs für die Oracle-Datenbank mithilfe des Oracle-Datenbank-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, sind die folgenden Aufgaben:

  1. Erstellen Sie ein BizTalk-Projekt, und generieren Sie dann ein Schema für die Benachrichtigung (eingehender Vorgang) und PROCESS_RECORDS Prozedur (ausgehender Vorgang) in der Tabelle ACCOUNTACTIVITY. 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 Nachrichten im BizTalk-Projekt zum Ausführen der PROCESS_RECORDS gespeicherten Prozedur und zum Empfangen von Antwortnachrichten.

  4. Erstellen Sie eine Orchestrierung, die folgendes ausführt:

    • Empfängt Benachrichtigungen aus der Oracle-Datenbank.

    • Erstellt eine Nachricht zum Ausführen der PROCESS_RECORDS-Prozedur.

    • Sendet diese Nachricht an die Oracle-Datenbank, um die Datensätze auszuwählen und zu aktualisieren und eine Antwort zu erhalten.

  5. Erstellen und Bereitstellen des BizTalk-Projekts.

  6. 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 unidirektionalen WCF-Custom oder WCF-OracleDB Empfangsport konfigurieren. Bidirektionale Empfangsports werden für eingehende Vorgänge nicht unterstützt.

  7. 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 Benachrichtigungsvorgang und PROCESS_RECORDS Prozedur generieren. Weitere Informationen zum Generieren des Schemas finden Sie unter Abrufen von Metadaten für Oracle-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.

  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 BizTalk-Adapter für Oracle-Datenbankbindungseigenschaften. Anweisungen zum Angeben von Bindungseigenschaften finden Sie unter Angeben von Bindungseigenschaften.

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

  3. Generieren Eines Schemas für den Benachrichtigungsvorgang .

  4. Wählen Sie den Vertragstyp als Client (Ausgehende Vorgänge) aus.

  5. Generieren Sie ein Schema für die PROCESS_RECORDS-Prozedur . Dieses Verfahren ist unter dem ACCOUNT_PKG-Paket verfügbar.

Definieren von Nachrichten und Nachrichtentypen

Das zuvor generierte Schema 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 Nachrichten aus der Orchestrierungsansicht des BizTalk-Projekts verknüpfen.

Für dieses Thema müssen Sie drei Nachrichten erstellen: eine zum Empfangen von Benachrichtigungen aus der Oracle-Datenbank, eine zum Ausführen der PROCESS_RECORDS-Prozedur und eine, um die Antwort für die Prozedur zu erhalten.

Führen Sie die folgenden Schritte aus, um Nachrichten zu erstellen und sie 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 BizTalk-Projektnamen, 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 Orchestrierungsansichtsfenster des BizTalk-Projekts, falls 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. Führen Sie im Bereich Eigenschaften für Message_1 die folgenden Schritte aus:

    Option Aufgabe
    Bezeichner Geben Sie NotifyReceiveein.
    Nachrichtentyp Erweitern Sie in der Dropdownliste Schemas, und wählen Sie OracleNotifyIncremental.OracleDBBinding.Notification aus, wobei OracleNotifyIncremental der Name Ihres BizTalk-Projekts ist. OracleDBBinding ist das Schema, das für den Benachrichtigungsvorgang generiert wird.
  6. Wiederholen Sie Schritt 3, um zwei neue Nachrichten zu erstellen. Gehen Sie im Bereich Eigenschaften für die neue Nachricht wie folgt vor:

    Festlegen des Bezeichners auf Festlegen des Nachrichtentyps auf
    Prozedur OracleNotifyIncremental.OracleDBBinding1.PROCESS_RECORDS, wobei OracleDBBinding1 das schema ist, das für die PROCESS_RECORDS-Prozedur generiert wurde.
    ProcedureResponse OracleNotifyIncremental.OracleDBBinding1.PROCESS_RECORDSResponse

Einrichten der Orchestrierung

Sie müssen eine BizTalk-Orchestrierung erstellen, um BizTalk Server zum Empfangen von Benachrichtigungsmeldungen aus der Oracle-Datenbank und dann zum Aktualisieren der Zeilen zu verwenden, für die eine Benachrichtigung empfangen wurde. In dieser Orchestrierung empfängt der Adapter die Benachrichtigungsmeldung basierend auf der SELECT-Anweisung, die für die NotificationStatement-Bindungseigenschaft angegeben wurde. Die Benachrichtigungsmeldung wird an einem FILE-Speicherort empfangen. Sobald die Antwort empfangen wurde, erstellt die Orchestrierung eine Nachricht, um die PROCESS_RECORDS-Prozedur aufzurufen, die die Zeilen aktualisiert, für die eine Benachrichtigung empfangen wird. Die Antwort für diese Nachricht wird auch am gleichen FILE-Speicherort empfangen.

Daher muss Ihre Orchestrierung Folgendes enthalten:

  • Ein unidirektionales WCF-Custom oder WCF-OracleDB Port empfangen, um Benachrichtigungsnachrichten zu empfangen.

  • Ein bidirektionales WCF-Custom oder WCF-OracleDB Sendeport, um Nachrichten zu senden, um die PROCESS_RECORDS-Prozedur auszuführen.

  • Ein Shape "Nachricht erstellen ", um Nachrichten zu erstellen, um PROCESS_RECORDS Prozedur innerhalb der Orchestrierung auszuführen.

  • Ein FILE-Sendeport, um die Benachrichtigungsnachricht und die Antwort für die PROCESS_RECORDS-Prozedur zu speichern.

  • Empfangen und Senden von Shapes.

    Eine Beispielorchestrierung ähnelt der folgenden.

    Orchestrierung zum Empfangen von Benachrichtigungen von Oracle

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 Formtyp Eigenschaften
ReceiveNotification Empfangen Name aufReceiveNotification festlegen

– Legen Sie Aktivieren auf True fest.
SaveNotification Send – Legen Sie Name auf SaveNotification fest.
SendProcMessage Send Name aufSendProcMessage festlegen
ReceiveProcResponse Empfangen Name aufReceiveProcResponse festlegen
SaveProcResponse Send – Legen Sie Name auf SaveProcResponse fest.

Hinzufügen von Nachrichtenform erstellen

Sie können das Shape Nachricht erstellen verwenden, um eine Anforderungsnachricht innerhalb der Orchestrierung zu generieren, um die PROCESS_RECORDS-Prozedur auszuführen. Dazu müssen Sie der Orchestrierung ein Shape "Nachricht erstellen " und darin ein Shape "Nachrichtenzuweisung " hinzufügen. In diesem Beispiel ruft das Shape Nachrichtenzuweisung Code auf, der eine Nachricht generiert, die zur Ausführung der Prozedur an die Oracle-Datenbank gesendet wird. Das Shape "Nachrichtenzuweisung " legt auch die Aktion für die Nachricht fest, die an die Oracle-Datenbank gesendet werden soll.

Legen Sie für die Form der Konstruktnachricht die Eigenschaft Message Constructed auf Procedure fest.

Der Code zum Generieren der Antwort könnte Teil derselben Visual Studio-Projektmappe wie Ihr BizTalk-Projekt sein. Ein Beispielcode zum Generieren einer Antwortnachricht sieht wie folgt aus.

namespace SampleMessageCreator
{
    public class SampleMessageCreator
    {
        private static XmlDocument Message;
        private static string XmlFileLocation;
        private static string ResponseDoc;

        public static XmlDocument XMLMessageCreator()
        {
            XmlFileLocation = "C:\\TestLocation\\MessageIn";
            try
            {
                ResponseDoc = (Directory.GetFiles(XmlFileLocation, "*.xml", SearchOption.TopDirectoryOnly))[0];
            }
            catch (Exception ex)
            {
                Console.WriteLine("Trying to get XML from: " + XmlFileLocation);
                Console.WriteLine("EXCEPTION: " + ex.ToString());
                throw ex;
            }
            //Create Message From XML
            Message = new XmlDocument();
            Message.PreserveWhitespace = true;
            Message.Load(ResponseDoc);
            return Message;
        }
    }
}

Damit der obige Codeauszug eine Anforderungsnachricht generieren kann, muss eine XML-Anforderungsnachricht (für die PROCESS_RECORDS Prozedur) an dem für die XmlFileLocation Variable angegebenen Speicherort vorhanden sein.

Hinweis

Nachdem Sie das Projekt erstellt haben, werden MessageCreator.dll im Projektverzeichnis erstellt. Sie müssen diese DLL dem globalen Assemblycache (GAC) hinzufügen. Außerdem müssen Sie die MessageCreator.dll als Verweis im BizTalk-Projekt hinzufügen.

Fügen Sie den folgenden Ausdruck hinzu, um diesen Code aus dem Shape Nachrichtenzuweisung aufzurufen und die Aktion für die Nachricht festzulegen. Um einen Ausdruck hinzuzufügen, doppelklicken Sie auf das Shape Nachrichtenzuweisung , um den Ausdrucks-Editor zu öffnen.

Procedure = SampleMessageCreator.SampleMessageCreator.XMLMessageCreator();
Procedure(WCF.Action) = "http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Package/ACCOUNT_PKG/PROCESS_RECORDS";

Hinzufügen von Ports

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.

Port Eigenschaften
OracleNotifyPort – Festlegen des Bezeichners auf OracleNotifyPort

– Legen Sie Type auf OracleNotifyPortType fest.

- Festlegen des Kommunikationsmusters auf unidirektionales Muster

- Festlegen der Kommunikationsrichtung auf Empfangen
SaveMessagePort – Legen Sie Bezeichner auf SaveMessagePort fest.

– Legen Sie Type auf SaveMessagePortType fest.

- Festlegen des Kommunikationsmusters auf unidirektionales Muster

- Kommunikationsrichtung auf Senden festlegen

– Erstellen Sie einen Vorgang Benachrichtigen. Dieser Vorgang wird für Benachrichtigungsmeldungen verwendet.

– Erstellen sie eine Vorgangsprozedur. Dieser Vorgang wird für ausgewählte Antwortnachrichten verwendet.
OracleOutboundPort – Festlegen des Bezeichners auf OracleOutboundPort

– Festlegen von Type auf OracleOutboundPortType

- Festlegen des Kommunikationsmusters auf Anforderungsantwort

- Festlegen der Kommunikationsrichtung auf Senden/Empfangen

Angeben von Nachrichten für Aktionsformen und Herstellen einer Verbindung mit Ports

Die folgende Tabelle gibt die Eigenschaften und deren Werte an, die Sie festlegen sollten, um Nachrichten 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 Nachrichtenformen, die in der zuvor erwähnten Orchestrierung angezeigt werden.

Form Eigenschaften
ReceiveNotification - Festlegen der Nachricht auf NotifyReceive

– Festlegen von Operation auf OracleNotifyPort.Notify.Request
SaveNotification - Festlegen der Nachricht auf NotifyReceive

– Festlegen von Operation auf SaveMessagePort.Notify.Request
SendProcMessage - Nachricht aufProzedur festlegen

- Festlegen von Operation auf OracleOutboundPort.Procedure.Request
ReceiveProcResponse – Festlegen von Message auf ProcedureResponse

– Festlegen von Operation auf OracleOutboundPort.Procedure.Response
SaveProcResponse - Legen Sie Die Nachricht auf ProedureResponse fest.

– Festlegen von Operation auf SaveMessagePort.Procedure.Request

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

Sie müssen jetzt die BizTalk-Lösung erstellen und in einer 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 Empfangsport mit den erforderlichen Bindungseigenschaften erstellen, 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 für Oracle Database.

      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 BizTalk-Adapter für Oracle-Datenbankbindungseigenschaften.

      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.

    • Definieren Sie einen physischen WCF-Custom oder WCF-OracleDB Sendeport, um Nachrichten an die Oracle-Datenbank zu senden, um die PROCESS_REOCRDS-Prozedur auszuführen. Sie müssen auch die Aktion im Sendeport angeben.

    • Definieren Sie einen Speicherort auf der Festplatte und einen entsprechenden Dateiport, an dem die BizTalk-Orchestrierung die Nachrichten aus der Oracle-Datenbank ablöscht. Dies sind die Benachrichtigungen, die von der Oracle-Datenbank empfangen werden, und Nachrichten für die PROCESS_RECORDS Prozedur, die Sie über den WCF-Custom oder WCF-OracleDB Sendeport ausführen.

Starten der Anwendung

Sie müssen die BizTalk-Anwendung zum Empfangen von Benachrichtigungen aus der Oracle-Datenbank und zum Ausführen der PROCESS_RECORDS-Prozedur starten. 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.

  • Der WCF-Custom oder WCF-OracleDB Sendeport zum Ausführen der PROCESS_RECORDS Prozedur wird ausgeführt.

  • Der FILE-Sendeport, der Nachrichten aus der Oracle-Datenbank empfängt, wird ausgeführt.

  • Die BizTalk-Orchestrierung für den Vorgang wird ausgeführt.

Ausführen des Vorgangs

Angenommen, die TABELLE ACCOUNTACTIVITY enthält bereits einige Datensätze. Stellen Sie außerdem sicher, dass die XML-Nachricht zum Ausführen PROCESS_RECORDS Prozedur unter C:\TestLocation\MessageIn verfügbar ist. Die XML-Datei sollte wie folgt aussehen:

<PROCESS_RECORDS xmlns="http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Package/ACCOUNT_PKG"/>

Sobald die BizTalk-Orchestrierung gestartet wurde, finden die folgenden Aktionen in derselben Reihenfolge statt:

  • Der Adapter empfängt eine Benachrichtigung, die der folgenden ähnelt:

    \<?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>
    

    Diese Nachricht benachrichtigt, dass der Empfangsport für den Empfang der Benachrichtigungsnachrichten gestartet wurde. Beachten Sie, dass der Wert für das <Info> Element "ListnerStarted" lautet.

  • Der Adapter führt die PROCESS_RECORDS-Prozedur aus. Die nächste Antwort aus der Oracle-Datenbank ist für die Prozedur.

    <?xml version="1.0" encoding="utf-8" ?>
    <PROCESS_RECORDSResponse xmlns="http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Package/ACCOUNT_PKG">
      <TABLE_DATA>
        <xs:schema id="NewDataSet" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
          <xs:element msdata:IsDataSet="true" name="NewDataSet">
            <xs:complexType>
              <xs:sequence>
                <xs:element minOccurs="0" maxOccurs="unbounded" name="NewTable">
                  <xs:complexType>
                    <xs:sequence>
                      <xs:element minOccurs="0" name="TID" type="xs:decimal" />
                      <xs:element minOccurs="0" name="ACCOUNT" type="xs:decimal" />
                      <xs:element minOccurs="0" name="PROCESSED" type="xs:string" />
                    </xs:sequence>
                  </xs:complexType>
                </xs:element>
              </xs:sequence>
            </xs:complexType>
          </xs:element>
        </xs:schema>
        <diffgr:diffgram xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
        <NewDataSet xmlns="">
          <NewTable>
            <TID>1</TID>
            <ACCOUNT>100001</ACCOUNT>
            <PROCESSED>n</PROCESSED>
          </NewTable>
          <NewTable>
            ......
            ......
          </NewTable>
          ......
          ......
        </NewDataSet>
        </diffgr:diffgram>
      </TABLE_DATA>
    </PROCESS_RECORDSResponse>
    

    Dies ist die Antwort für die SELECT-Anweisung, die im Rahmen der PROCESS_RECORDS-Prozedur ausgeführt wird.

  • Die PROCESS_RECORDS-Prozedur aktualisiert auch die Zeilen, um PROCESSED auf "y" festzulegen. Daher erhält der Adapter eine weitere Benachrichtigung für den Updatevorgang.

    <?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 das Info Element "Update" enthält.

  • Nach der zweiten Benachrichtigung führt der Adapter die PROCESS_RECORDS-Prozedur erneut aus. Da es jedoch keine Datensätze gibt, in denen die PROCESSED-Spalte auf "n" festgelegt ist, gibt die Prozedur eine leere Antwort zurück, die der folgenden ähnelt.

    <?xml version="1.0" encoding="utf-8" ?>
    <PROCESS_RECORDSResponse xmlns="http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Package/ACCOUNT_PKG">
      <TABLE_DATA>
        <xs:schema id="NewDataSet" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
          <xs:element msdata:IsDataSet="true" name="NewDataSet">
            <xs:complexType>
              <xs:sequence>
                <xs:element minOccurs="0" maxOccurs="unbounded" name="NewTable">
                  <xs:complexType>
                    <xs:sequence>
                      <xs:element minOccurs="0" name="TID" type="xs:decimal" />
                      <xs:element minOccurs="0" name="ACCOUNT" type="xs:decimal" />
                      <xs:element minOccurs="0" name="PROCESSED" type="xs:string" />
                    </xs:sequence>
                  </xs:complexType>
                </xs:element>
              </xs:sequence>
            </xs:complexType>
          </xs:element>
        </xs:schema>
        <diffgr:diffgram xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
          <NewDataSet xmlns="" />
        </diffgr:diffgram>
      </TABLE_DATA>
    </PROCESS_RECORDSResponse>
    

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.

Weitere Informationen

Empfangen von Oracle Database-Änderungsbenachrichtigungen mithilfe von BizTalk Server