Freigeben über


Ausführen von Vorgängen für Tabellen mit großen Objektdatentypen in Oracle Database

Der Microsoft BizTalk-Adapter für Oracle-Datenbank bietet Unterstützung für die Oracle-Datentypen (Large Object, LOB):

Hinweis

Bei Verwendung des Oracle Database-Adapters mit BizTalk Server unterstützt der ReadLOB-Vorgang keine Streamingdaten vom TYP LOB aus einer Oracle-Datenbank. Zum Streamen von LOB-Daten aus einer Oracle-Datenbank mithilfe von BizTalk Server sollten Sie stattdessen den Select-Vorgang verwenden. Weitere Informationen zum Streaming finden Sie unter Streamingunterstützung für LOB-Datentypen in Oracle Database. Außerdem schlägt die Antwort aus der Oracle-Datenbank für den ReadLOB-Vorgang die Überprüfung für die WSDL fehl. Anweisungen zum Umgehen des Fehlers finden Sie unter Behandeln von Betriebsproblemen.

Wie führt man Vorgänge für BRANCHENdaten aus?

Das Ausführen eines Vorgangs für eine Oracle-Datenbank mithilfe des Oracle Database-Adapters mit BizTalk Server umfasst prozedurale Aufgaben, die unter Bausteine zum Entwickeln von BizTalk-Anwendungen mit Oracle-Datenbank beschrieben sind. Um sowohl ReadLOB- als auch UpdateLOB-Vorgänge für eine Tabelle in einer Oracle-Datenbank aufzurufen, sind die folgenden Aufgaben:

  1. Erstellen Sie ein BizTalk-Projekt, und generieren Sie schemas für ReadLOB- und UpdateLOB-Vorgänge.

  2. Erstellen Sie Nachrichten im BizTalk-Projekt zum Senden und Empfangen von Nachrichten aus der Oracle-Datenbank. Sie müssen Nachrichten sowohl für die Sendende Anforderung als auch für den Empfang von Antworten für beide Vorgänge erstellen.

  3. Erstellen Sie eine Orchestrierung, um sowohl ReadLOB- als auch UpdateLOB-Vorgänge aufzurufen.

  4. Erstellen und Bereitstellen des BizTalk-Projekts.

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

  6. Starten Sie die BizTalk-Anwendung.

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

Beispiel basierend auf diesem Thema

Ein auf diesem Thema basierendes Beispiel Operate_LOB wird auch mit dem BizTalk Adapter Pack bereitgestellt. Weitere Informationen finden Sie unter Adapterbeispiele.

Generieren eines Schemas

In diesem Thema generieren wir Metadaten für diese Vorgänge, die für die TABELLE CUSTOMER unter dem SCOTT-Schema in der Oracle-Datenbank angezeigt werden, um zu veranschaulichen, wie ReadLOB- und UpdateLOB-Vorgänge ausgeführt werden. Diese Tabelle wird unter dem SCOTT-Schema erstellt, indem die mit den Beispielen bereitgestellten SQL-Skripts ausgeführt werden. Weitere Informationen zu den Beispielen finden Sie unter Schemabeispiele.

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. Sie müssen das schema, das Sie im ersten Schritt generiert haben, mit den Nachrichten aus dem Fenster Orchestrierungsansicht des BizTalk-Projekts verknüpfen.

Für dieses Thema müssen Sie zwei Anforderung-Antwort-Nachrichtensätze erstellen: einen Request-Antwort-Satz für den ReadLOB-Vorgang und den zweiten Request-Antwort-Satz für den UpdateLOB-Vorgang.

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

  1. Öffnen Sie das Fenster Orchestrierungsansicht des BizTalk-Projekts, wenn dieses nicht bereits geöffnet ist. Klicken Sie hierzu auf Ansicht, zeigen Sie auf Andere Fenster, und klicken Sie dann auf Orchestrierungsansicht.

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

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

  4. Führen Sie im Bereich Eigenschaften für Message_1 die folgenden Schritte aus:

    Option Aufgabe
    Bezeichner Geben Sie Request ein.
    Nachrichtentyp Erweitern Sie in der Dropdownliste Schemas, und wählen Sie Operate_LOB aus. OracleDBBindingSchema.ReadLOB, wobei Operate_LOB der Name Ihres BizTalk-Projekts ist. OracleDBBindingSchema ist das Schema, das für die Vorgänge ReadLOB und UpdateLOB in der Tabelle CUSTOMER generiert wurde.
  5. Wiederholen Sie den vorherigen Schritt, um drei weitere Nachrichten zu erstellen. Führen Sie im Bereich Eigenschaften für die neuen Nachrichten die folgenden Schritte aus:

    Festlegen des Bezeichners auf Festlegen des Nachrichtentyps auf
    Antwort Operate_LOB. OracleDBBindingSchema.ReadLOBResponse
    Anforderung2 Operate_LOB. OracleDBBindingSchema.UpdateLOB
    Antwort2 Operate_LOB. OracleDBBindingSchema.UpdateLOBResponse

Einrichten der Orchestrierung

Sie müssen eine BizTalk-Orchestrierung erstellen, um BizTalk Server zum Aufrufen von ReadLOB- und UpdateLOB-Vorgängen für eine Tabelle zu verwenden. In dieser Orchestrierung löschen Sie zwei Anforderungsmeldungen, eine für den ReadLOB-Vorgang und die andere für den UpdateLOB-Vorgang. Diese Nachrichten werden an einem Empfangsspeicherort gelöscht. Der Oracle Database-Adapter nutzt die Nachrichten und gibt sie über ODP an die Oracle-Datenbank weiter. Die Antwort aus der Oracle-Datenbank wird an einem anderen Speicherort gespeichert.

Da die Orchestrierung zwei Anforderungen gleichzeitig auswählt, müssen Sie ein Shape für parallele Aktionen in die Orchestrierung einschließen. Für jede parallele Aktion müssen Sie Send- und Receive-Shapes einschließen, um Nachrichten an die Oracle-Datenbank zu senden und Antworten zu empfangen. Sie könnten jedoch dieselben Ports zum Senden und Empfangen von Nachrichten für beide Vorgänge verwenden. Eine typische Orchestrierung zum gleichzeitigen Ausführen der Vorgänge ReadLOB und UpdateLOB enthält Folgendes:

  • Senden und Empfangen von Shapes, um Nachrichten an Oracle-Datenbank zu senden und Antworten zu empfangen.

  • Ein unidirektionale Empfangsport zum Empfangen von Anforderungsnachrichten, die an die Oracle-Datenbank gesendet werden sollen.

  • Ein bidirektionales Sendeport zum Senden von Anforderungsnachrichten an die Oracle-Datenbank und zum Empfangen von Antworten.

  • Ein unidirektionale Sendeport, um die Antworten aus der Oracle-Datenbank an einen Ordner zu senden.

    Eine Beispielorchestrierung ähnelt der folgenden:

    Orchestrierung zum Lesen und Aktualisieren von LOB-Daten

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. In der folgenden Tabelle sind die Shapes aufgeführt, die Sie für eine der parallelen Aktionen einschließen müssen.

Form Formtyp Eigenschaften
ReceiveMessage Empfangen Name aufReceiveMessage festlegen
– Legen Sie Aktivieren auf True fest.
SendMessage Send Name aufSendMessage festlegen
ReceiveResponse Empfangen Name aufReceiveResponse festlegen
– Legen Sie Aktivieren auf False fest.
SendResponse Send Name aufSendResponse festlegen

In der folgenden Tabelle sind die Shapes aufgeführt, die Sie für die andere parallele Aktion einschließen müssen.

Form Formtyp Eigenschaften
ReceiveMessage2 Empfangen Name aufReceiveMessage2 festlegen
– Legen Sie Aktivieren auf True fest.
SendMessage2 Send Name aufSendMessage2 festlegen
ReceiveResponse2 Empfangen – Legen Sie Name auf ReceiveResponse2 fest.
– Legen Sie Aktivieren auf False fest.
SendResponse2 Send Name aufSendResponse2 festlegen

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
FileIn – Festlegen des Bezeichners auf FileIn
– Festlegen von Type auf FileInType
- Festlegen des Kommunikationsmusters auf unidirektionales Muster
- Festlegen der Kommunikationsrichtung auf Empfangen
LOBPort – Festlegen des Bezeichners auf LOBPort
– Legen Sie Type auf LOBPortType fest.
- Festlegen des Kommunikationsmusters auf Anforderungsantwort
- Festlegen der Kommunikationsrichtung auf Senden/Empfangen
SaveResponse – Legen Sie Bezeichner auf SaveResponse fest.
– Legen Sie Type auf SaveResponseType fest.
- Festlegen des Kommunikationsmusters auf unidirektionales Muster
- Kommunikationsrichtung auf Senden festlegen

Da Sie zwei Anforderungs- und Antwortnachrichten mit diesen Ports verarbeiten, müssen Sie zwei Vorgänge für jeden Port erstellen, wobei jeder Vorgang einem Nachrichtentyp entspricht. Klicken Sie zum Erstellen eines Vorgangs mit der rechten Maustaste auf das Port-Shape, und wählen Sie dann Neuer Vorgang aus. Benennen Sie den ersten Vorgang für jeden Port als ReadLOB und den zweiten Vorgang für jeden Port als UpdateLOB.

Verwenden der Korrelation

Mithilfe von Korrelation wird sichergestellt, dass eine eingehende Nachricht der entsprechenden Instanz einer Orchestrierung entspricht. In der Orchestrierung löschen Sie zwei Anforderungsmeldungen, eine für jede Überladung. Mithilfe der Korrelation ordnen Sie eine Anforderungsnachricht der richtigen Orchestrierung zu. Weitere Informationen zur Korrelation finden Sie unter Verwenden von Korrelationen in Orchestrierungen.

So verwenden Sie Korrelationen
  1. Höherstufen einer Eigenschaft aus dem Schema, das für jeden Vorgang generiert wurde. Höherstufen Sie beispielsweise die LOB_COLUMN-Eigenschaft aus dem ReadLOB-Vorgangsschema. Heraufstufen der FILTER-Eigenschaft aus dem UpdateLOB-Vorgangsschema. Klicken Sie zum Heraufstufen einer Eigenschaft mit der rechten Maustaste auf die Eigenschaft in der Schemaansicht, zeigen Sie auf Höherstufen, und wählen Sie dann Schnellaufstufung aus. Dadurch wird ihrem BizTalk-Projekt eine PropertySchema.xsd-Datei hinzugefügt.

    Informationen zum Höherstufen einer Eigenschaft finden Sie unter Höherstufen von Eigenschaften.

  2. Klicken Sie in der Orchestrierungsansicht mit der rechten Maustaste auf Korrelationstypen, und wählen Sie dann Neuer Korrelationstyp aus.

  3. Im Dialogfeld Korrelationseigenschaften werden die Eigenschaften aufgelistet, die Sie in Schritt 1 heraufgestuft haben. Wählen Sie eine Eigenschaft aus, und klicken Sie dann auf Hinzufügen.

  4. Klicken Sie auf OK.

  5. Wiederholen Sie diese Schritte, um Korrelationstypen für die andere höhergestufte Eigenschaft zu erstellen.

  6. Benennen Sie die Korrelationstypen basierend auf dem Vorgang um, dem sie zugeordnet sind. Sie können die Korrelationstypen in CorrelationType_ReadLOB (für den ReadLOB-Vorgang) und CorrelationType_UpdateLOB (für den UpdateLOB-Vorgang) umbenennen.

  7. Klicken Sie in der Orchestrierungsansicht mit der rechten Maustaste auf Korrelationssätze, und wählen Sie dann Neuer Korrelationssatz aus.

  8. Klicken Sie mit der rechten Maustaste auf den neu hinzugefügten Korrelationssatz, und klicken Sie dann auf Eigenschaften. Gehen Sie im Bereich Eigenschaften wie folgt vor:

    Option Aufgabe
    Korrelationstyp Operate_LOB. CorrelationType_ReadLOB
    Bezeichner Correlation_ReadLOB
  9. Fügen Sie einen weiteren Korrelationssatz hinzu, und geben Sie im Bereich Eigenschaften die folgenden Eigenschaften an.

    Option Aufgabe
    Korrelationstyp Operate_LOB. CorrelationType_UpdateLOB
    Bezeichner Correlation_UpdateLOB

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 Aktionsformen anzugeben und sie 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
ReceiveMessage Initialisieren von Korrelationssätzen auf Correlation_ReadLOB
- Nachricht aufAnforderung festlegen
- Festlegen des Vorgangs auf FileIn.ReadLOB.Request
SendMessage - Nachricht aufAnforderung festlegen
- Festlegen von Vorgang auf LOBPort.ReadLOB.Request
ReceiveResponse Nachricht aufAntwort festlegen
- Festlegen von Operation auf LOBPort.ReadLOB.Response
SendResponse Nachricht aufAntwort festlegen
– Festlegen von Operation auf SaveResponse.ReadLOB.Request
ReceiveMessage2 - Initializing Correlation Sets auf Correlation_UpdateLOB festlegen
- Legen Sie Die Nachricht auf Anforderung2 fest.
– Festlegen des Vorgangs auf FileIn.UpdateLOB.Request
SendMessage2 Nachricht aufRequest2 festlegen
– Legen Sie Operation auf LOBPort.UpdateLOB.Request fest.
ReceiveResponse2 Nachricht aufAntwort2 festlegen
– Legen Sie Operation auf LOBPort.UpdateLOB.Response fest.
SendResponse2 Nachricht aufAntwort festlegen
– Legen Sie Operation auf SaveResponse.UpdateLOB.Request fest.

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 in der BizTalk Server Verwaltungskonsole im Bereich Orchestrierungen 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:

    • Definieren Sie einen Speicherort auf der Festplatte und einen entsprechenden Dateiport, an dem Sie die Anforderungsmeldungen ablegen, jeweils eine für ReadLOB- und UpdateLOB-Vorgänge. Die BizTalk-Orchestrierung nutzt die Anforderungsnachrichten und sendet sie an die Oracle-Datenbank.

    • Definieren Sie einen Speicherort auf der Festplatte und einen entsprechenden Dateiport, an dem die BizTalk-Orchestrierung die Antwortnachrichten für jeden Vorgang mit der Antwort aus der Oracle-Datenbank abgibt.

    • Definieren Sie einen physischen WCF-Custom oder WCF-OracleDB Sendeport, um Nachrichten an die Oracle-Datenbank zu senden. Sie müssen die Aktion auch im Sendeport angeben. Informationen zum Erstellen WCF-Custom oder WCF-OracleDB Ports finden Sie unter Manuelles Konfigurieren einer physischen Portbindung an den Oracle Database Adapter. Da der WCF-Custom oder WCF-OracleDB Sendeport Nachrichten sendet und empfängt, die mehreren Schemas entsprechen und zwei Vorgänge ausführt, müssen Sie für beide Vorgänge eine dynamische Aktion festlegen. Weitere Informationen zu Aktionen finden Sie unter Konfigurieren der SOAP-Aktion für Oracle Database. Für diese Orchestrierung sollte die Aktion wie folgt festgelegt werden:

      <BtsActionMapping xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">  
        <Operation Name="ReadLOB" Action="http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Table/CUSTOMER/ReadLOB" />  
        <Operation Name="UpdateLOB" Action="http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Table/CUSTOMER/UpdateLOB" />  
      </BtsActionMapping>  
      

      Hinweis

      Beim Generieren des Schemas mithilfe des BizTalk-Projekt-Add-Ins "Consume Adapter Service" wird auch eine Bindungsdatei erstellt, die Informationen zu den Ports und den aktionen enthält, die für diese Ports festgelegt werden sollen. Sie können diese Bindungsdatei aus der BizTalk Server-Verwaltungskonsole importieren, um Sendeports (für ausgehende Anrufe) oder Empfangsports (für eingehende Anrufe) zu erstellen. Weitere Informationen finden Sie unter Konfigurieren einer physischen Portbindung mithilfe einer Portbindungsdatei für Oracle Database.

Starten der Anwendung

Sie müssen die BizTalk-Anwendung starten, um einen Vorgang für die Oracle-Datenbank auszuführen. Anweisungen zum Starten einer BizTalk-Anwendung finden Sie unter Starten einer Orchestrierung.

Stellen Sie in dieser Phase Folgendes sicher:

  • Der FILE-Empfangsport zum Empfangen von Anforderungsmeldungen für die Orchestrierung wird ausgeführt.

  • Der FILE-Sendeport zum Empfangen der Antwortnachrichten von der Orchestrierung wird ausgeführt.

  • Der WCF-Custom Sendeport oder WCF-OracleDB zum Senden von Nachrichten an die Oracle-Datenbank wird ausgeführt.

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

Ausführen des Vorgangs

Nachdem Sie die Anwendung ausgeführt haben, müssen Sie Anforderungsmeldungen am File-Empfangsspeicherort ablegen. Das Schema für die Anforderungsmeldungen muss dem Schema für die vorgänge entsprechen, die Sie zuvor generiert haben. Weitere Informationen zum Anforderungsnachrichtenschema zum Aufrufen von Vorgängen für LOB-Datentypen mithilfe des Oracle Database-Adapters finden Sie unter Nachrichtenschemas für spezielle LOB-Vorgänge .

Die Orchestrierung nutzt die Anforderungsnachrichten und sendet sie an die Oracle-Datenbank. Die Antwort aus der Oracle-Datenbank wird an einem anderen FILE-Speicherort gespeichert, der als Teil der Orchestrierung definiert ist.

Für diese Orchestrierung wird zunächst eine Anforderungsmeldung für den UpdateLOB-Vorgang gelöscht, um die Spalte PHOTO (des BLOB-Datentyps) der TABELLE CUSTOMER zu aktualisieren. Die Anforderungsmeldung zum Aufrufen der Aktualisierung der PHOTO-Spalte für einen bestimmten Kunden lautet:

<UpdateLOB xmlns="http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Table/CUSTOMER">  
  <LOB_COLUMN>PHOTO</LOB_COLUMN>  
  <FILTER>Name='Mindy Martin'</FILTER>  
  <Stream>YWJjZA==</Stream>  
</UpdateLOB>  

Hinweis

Die Filterzeichenfolge muss immer eine übereinstimmende Zeile abrufen, andernfalls löst der Oracle Database-Adapter eine XmlReaderParsingException aus. Außerdem muss der Wert für das <Stream-Element> vom Typ base64Binary sein.

Die Antwort für den UpdateLOB-Vorgang lautet:

<?xml version="1.0" encoding="utf-8"?>  
<UpdateLOBResponse xmlns="http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Table/CUSTOMER"></UpdateLOBResponse>  

Wir löschen nun eine Anforderungsmeldung für den ReadLOB-Vorgang, um die Daten zu lesen, die durch den UpdateLOB-Vorgang aktualisiert wurden. Die Anforderungsnachricht zum Aufrufen des ReadLOB-Vorgangs für die Spalte PHOTO für einen bestimmten Kunden lautet:

<ReadLOB xmlns="http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Table/CUSTOMER">  
  <LOB_COLUMN>PHOTO</LOB_COLUMN>  
  <FILTER>NAME='Mindy Martin'</FILTER>  
</ReadLOB>  

Hinweis

Die Filterzeichenfolge muss immer eine übereinstimmende Zeile abrufen. Wenn mehr als eine übereinstimmende Zeile vorhanden ist, gibt der Oracle Database-Adapter nur die LOB-Spalte für die erste (übereinstimmende) Zeile zurück.

Die Antwort für den ReadLOB-Vorgang lautet:

<?xml version="1.0" encoding="utf-8"?>  
<ReadLOBResponse mlns="http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Table/CUSTOMER">  
  <ReadLOBResult>YWJjZA==</ReadLOBResult>  
</ReadLOBResponse>  

Hinweis

Die Antwort für den ReadLOB-Vorgang kann möglicherweise nicht anhand der WSDL überprüft werden. Sie müssen bestimmte Aufgaben ausführen, um readLOB anhand der WSDL zu überprüfen. Weitere Informationen finden Sie unter Behandeln von Betriebsproblemen.

Mögliche Ausnahmen

Informationen zu den Ausnahmen, die beim Ausführen von Vorgängen für eine Tabelle mit LOB-Daten mithilfe von BizTalk Server auftreten können, finden Sie unter Ausnahmen und Fehlerbehandlung.

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 die Sendeports, Empfangsports usw. für dieselbe Orchestrierung nicht erstellen müssen. Weitere Informationen zu Bindungsdateien finden Sie unter Wiederverwenden von Oracle Database Adapter-Bindungen.

Weitere Informationen

Bausteine zum Entwickeln von BizTalk-Anwendungen mit Oracle Database