Freigeben über


Empfangen von Änderungsbenachrichtigungen in Oracle Database inkrementell mithilfe von BizTalk Server

Von Bedeutung

Aus Platzgründen beschreibt dieses Thema nur, wie Benachrichtigungen inkrementell empfangen werden. In Geschäftsszenarien muss die Orchestrierung idealerweise die Logik enthalten, um die Art der empfangenen Benachrichtigung zu extrahieren und dann nachfolgende Vorgänge auszuführen. Mit anderen Worten: Die in diesem Thema beschriebene Orchestrierung muss auf der in Prozessbenachrichtigungen beschriebenen Orchestrierung basieren , um bestimmte Aufgaben in Oracle Database mit BizTalk Server abzuschließen.

In diesem Thema wird veranschaulicht, wie Sie den Oracle Database-Adapter so konfigurieren, dass inkrementelle Abfragebenachrichtigungen von Oracle empfangen werden. 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 inkrementelle Benachrichtigungen empfangen werden:

  • Registrieren Sie sich für Benachrichtigungen mithilfe einer SELECT-Anweisung, die alle Datensätze mit der Spalte "Verarbeitet" als "n" abruft. Dazu können Sie die SELECT-Anweisung für die NotificationStatement-Bindungseigenschaft angeben.

  • Aktualisieren Sie die Spalte "Verarbeitet" auf "y" für die Zeilen, für die Sie benachrichtigt wurden.

    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-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 Empfangsports 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 BizTalk Adapter für Oracle Database Binding Properties. Eine vollständige Beschreibung der Verwendung des Oracle Database-Adapters zum Empfangen von Benachrichtigungen aus der Oracle-Datenbank finden Sie weiter.

Wie in diesem Thema der Empfang von Benachrichtigungen veranschaulicht wird

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

  • Erhalten Sie Benachrichtigungen für alle Datensätze, bei denen "Verarbeitet" auf "n" steht. Dazu können Sie eine SELECT-Anweisung als Benachrichtigungsanweisung angeben.

  • Nachdem die Benachrichtigung für einen bestimmten Datensatz empfangen wurde, legen Sie "Verarbeitet" auf "y" fest. Dazu 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 schema für die Benachrichtigung (eingehende Operation) und PROCESS_RECORDS (ausgehender Vorgang) in der ACCOUNTACTIVITY-Tabelle.

  • Erstellen Sie eine Orchestrierung mit folgendem Element:

    • Ein Empfangsort zum Empfangen von Benachrichtigungsnachrichten. Sie können eine Benachrichtigung 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 die Benachrichtigung bereits gesendet wurde. Sie führen die PROCESS_RECORDS gespeicherte Prozedur für diesen Port aus, um den Wert der Spalte "Verarbeitet" auf "y" für die Datensätze festzulegen, für die die Benachrichtigung empfangen wird.

      Beachten Sie, dass dieser Vorgang nach dem Empfang der Benachrichtigungen ausgeführt werden muss, damit die verarbeiteten Zeilen aktualisiert werden. Um den Aufwand für das Warten auf die Benachrichtigungsantwort und das manuelle Versenden einer Anforderungsnachricht zur Ausführung der PROCESS_RECORDS-Prozedur zu vermeiden, generieren Sie die Anforderungsnachricht für die PROCESS_RECORDS-Prozedur direkt innerhalb der Orchestrierung. Dazu können Sie das Shape "Nachricht konstruieren" in einer Orchestrierung verwenden.

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 ein Schema für die Benachrichtigung (eingehende Operation) und PROCESS_RECORDS Prozedur (ausgehender Vorgang) in der ACCOUNTACTIVITY-Tabelle. 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 gespeicherten Prozedur PROCESS_RECORDS und zum Empfangen von Antwortnachrichten.

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

    • Empfängt eine Benachrichtigungsnachricht 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

    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.

  7. 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 Benachrichtigungsvorgang und PROCESS_RECORDS Prozedur generieren. Siehe Abrufen von Metadaten für Oracle-Vorgänge in Visual Studio für weitere Informationen dazu, wie das Schema generiert wird. 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 Working with BizTalk Adapter for Oracle Database Binding Properties. 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 Sie das Schema für den Benachrichtigungsvorgang .

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

  5. Generieren Sie das Schema für die PROCESS_RECORDS-Prozedur . Dieses Verfahren steht unter dem ACCOUNT_PKG-Paket zur Verfügung.

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 drei Nachrichten erstellen– eine zum Empfangen von Benachrichtigungen aus der Oracle-Datenbank, eine zum Ausführen der PROCESS_RECORDS-Prozedur und eine zum Empfangen der Antwort für die Prozedur.

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 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 Eigenschaftenbereich für die neue Nachricht wie folgt vor:

    Den Bezeichner festlegen auf Festlegen des Nachrichtentyps auf
    Prozedur OracleNotifyIncremental.OracleDBBinding1.PROCESS_RECORDS, wobei OracleDBBinding1 das Schema ist, das für die PROCESS_RECORDS-Prozedur generiert wird.
    Verfahrensantwort OracleNotifyIncremental.OracleDBBinding1.PROCESS_RECORDSResponse

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 die Zeilen zu aktualisieren, für die die Benachrichtigung empfangen wurde. In dieser Orchestrierung empfängt der Adapter die Benachrichtigung basierend auf der SELECT-Anweisung, die für die NotificationStatement-Bindungseigenschaft angegeben ist. Die Benachrichtigung wird an einem DATEIspeicherort empfangen. Sobald die Antwort empfangen wurde, erstellt die Orchestrierung eine Nachricht, um die PROCESS_RECORDS-Prozedur aufzurufen, wodurch die Zeilen aktualisiert werden, für die die Benachrichtigung empfangen wird. Die Antwort für diese Nachricht wird auch an demselben DATEIspeicherort empfangen.

Ihre Orchestrierung muss also Folgendes enthalten:

  • Ein unidirektionaler Empfangsport für WCF-Custom oder WCF-OracleDB zum Empfang von Benachrichtigungsnachrichten.

  • Eine bidirektionale WCF-Custom- oder WCF-OracleDB-Sendeeinrichtung, um Nachrichten zu übermitteln und die PROCESS_RECORDS-Prozedur durchzuführen.

  • Ein Construct Message-Shape, um Nachrichten zu konstruieren und die Prozedur PROCESS_RECORDS innerhalb der Orchestrierung auszuführen.

  • Ein DATEI-Sendeport zum Speichern der Benachrichtigung und der Antwort für die PROCESS_RECORDS-Prozedur.

  • Formen empfangen und senden.

    Eine Beispiel-Orchestrierung ähnelt der folgenden.

    Orchestrierung zum Empfangen von Benachrichtigungen von Oracle

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
Benachrichtigung speichern Senden - Name aufSaveNotification festlegen
SendProcMessage Senden - Name auf SendProcMessage setzen
ReceiveProcResponse Empfangen - Name auf ReceiveProcResponse festlegen
SaveProcResponse Senden - Name aufSaveProcResponse festlegen

Hinzufügen eines Message-Shape-Konstrukts

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

Legen Sie für die Nachrichtenformkonstruktion die Eigenschaft "Message Constructed" auf "Procedure" fest.

Der Code zum Generieren der Antwort kann 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, müssen Sie eine XML-Anforderungsnachricht (für die PROCESS_RECORDS-Prozedur) an dem speicherort haben, der für die XmlFileLocation Variable angegeben ist.

Hinweis

Nachdem Sie das Projekt erstellt haben, wird 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 Nachrichtenzuweisungs-Shape aufzurufen und die Aktion für die Nachricht festzulegen. Um einen Ausdruck hinzuzufügen, doppelklicken Sie auf die Form "Nachrichtenzuweisung", um den Ausdruckeditor 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.

Hafen Eigenschaften
OracleNotifyPort - Stellen Sie Identifier auf OracleNotifyPort ein

- Typ für OracleNotifyPortType einrichten

- Kommunikationsmuster auf Einweg festlegen

- Setze Kommunikationsrichtung auf Empfangen
SaveMessagePort - Bezeichner auf SaveMessagePort festlegen

- Typ aufSaveMessagePortType festlegen

- Kommunikationsmuster auf Einweg festlegen

- Kommunikationsrichtung auf "Senden" festlegen

– Erstellen eines Vorgangs "Notify". Dieser Vorgang wird für Benachrichtigungsnachrichten verwendet.

- Erstellen Sie eine Vorgangsprozedur. Dieser Vorgang wird für ausgewählte Antwortnachrichten verwendet.
OracleOutboundPort - Setzen Sie Identifier auf OracleOutboundPort

- Typ aufOracleOutboundPortType festlegen

- Kommunikationsmuster auf Anfrage-Antwort festlegen

- Kommunikationsrichtung auf "Senden-Empfangen" 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
Benachrichtigung speichern - Nachricht auf NotifyReceive festlegen

- Vorgang auf SaveMessagePort.Notify.Request festlegen
SendProcMessage - Nachricht auf Prozedur festlegen

- Setzen Sie Operation auf OracleOutboundPort.Procedure.Request
ReceiveProcResponse - Nachricht auf ProcedureResponse festlegen

- Setzen Sie Operation zu OracleOutboundPort.Procedure.Response
SaveProcResponse - Nachricht auf "ProedureResponse" festlegen

- Vorgang auf SaveMessagePort.Procedure.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 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 zu Oracle Database.

      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 BizTalk Adapter für Oracle Database Binding Properties.

      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.

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

    • Definieren Sie einen Speicherort auf der Festplatte und einen entsprechenden Dateiport, an dem die BizTalk-Orchestrierung die Nachrichten aus der Oracle-Datenbank ablegen wird. Hierbei handelt es sich um die Benachrichtigungen, die von der Oracle-Datenbank sowie die Nachrichten für das PROCESS_RECORDS-Verfahren erhalten werden, das Sie über den Sendeport WCF-Custom oder WCF-OracleDB ausführen.

Starten der Anwendung

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

  • Der WCF-Custom- oder WCF-OracleDB-Sendeport zum Ausführen der PROCESS_RECORDS-Prozedur läuft.

  • Der FILE-Sendeport, der Nachrichten aus der Oracle-Datenbank empfängt, läuft.

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

Ausführen des Vorgangs

Gehen Sie davon aus, dass die TABELLE ACCOUNTACTIVITY bereits einige Datensätze enthält. Stellen Sie außerdem sicher, dass die XML-Nachricht zum Ausführen der PROCESS_RECORDS-Prozedur im Verzeichnis 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"/>

Nachdem die BizTalk-Orchestrierung gestartet wurde, werden die folgenden Aktionen in derselben Reihenfolge ausgeführt:

  • Der Adapter empfängt eine Benachrichtigung, die etwa wie folgt aussieht:

    \<?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 Meldung benachrichtigt, dass der Empfangsport für den Empfang der Benachrichtigungsnachrichten gestartet wird. 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 der Oracle-Datenbank bezieht sich auf 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 als Teil der PROCESS_RECORDS-Prozedur ausgeführt wird.

  • Die PROCESS_RECORDS Prozedur aktualisiert auch die Zeilen, um "PROCESSED" auf "y" festzulegen. Daher empfängt 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 erneut die PROCESS_RECORDS-Prozedur aus. Da jetzt jedoch keine Datensätze vorhanden sind, bei denen DIE PROCESSED-Spalte auf "n" festgelegt ist, gibt die Prozedur eine leere Antwort zurück, die dem folgenden entspricht.

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

Siehe auch

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