Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gespeicherte Prozeduren und Funktionen können in einer Oracle-Datenbank überladen werden. Der Oracle Database-Adapter unterstützt überladene Funktionen und Prozeduren, indem der Zielnamespace des Vorgangs geändert wird. Die Nachrichtenstruktur für zwei überladene Prozeduren sieht z. B. wie folgt aus:
Stored Procedure Overload 1:
<[SP_NAME] xmlns="http://Microsoft.LobServices.OracleDB/2007/03/[SCHEMA]/Package/[PACKAGE_NAME]/[SP_NAME]/overload1">
<[PRM1_NAME]>value1</[PRM1_NAME]>
<[PRM2_NAME]>value1</[PRM2_NAME]>
…
</[SP_NAME]>
Stored Procedure Overload 2:
<[SP_NAME] xmlns="http://Microsoft.LobServices.OracleDB/2007/03/[SCHEMA]/Package/[PACKAGE_NAME]/[SP_NAME]/overload2">
<[PRM1_NAME]>value1</I_[PRM1_NAME]>
<[PRM2_NAME]>value1</I_[PRM2_NAME]>
…
</[SP_NAME]>
Die SOAP-Nachrichtenstruktur und die SOAP-Aktion, die zum Aufrufen einer überladenen Funktion oder Prozedur erforderlich ist, ähnelt dem Aufrufen einer Funktion und Prozedur, wie unter "Nachrichtenschemas für Funktionen und Prozeduren" beschrieben.
Das Aufrufen einer überladenen Prozedur ähnelt dem Aufrufen einer anderen Funktion, wie unter " Aufrufen von Funktionen und Prozeduren in Oracle Database Using BizTalk Server" beschrieben. Um jedoch überladene Funktionen zu unterscheiden, fügt der Oracle-Datenbankadapter eine eindeutige Zeichenfolge an die Knoten-ID und den Namespace an, der für überladene Artefakte angezeigt wird. Diese Zeichenfolge ist "overload1" für die erste Überladung, "overload2" für die nächste Überladung usw.
Wie rufen Sie überladene Funktionen und Prozeduren auf?
Das Ausführen eines Vorgangs für eine Oracle-Datenbank mithilfe des Oracle-Datenbankadapters mit BizTalk Server umfasst verfahrene Aufgaben, die in Bausteinen zum Entwickeln von BizTalk-Anwendungen mit Oracle Database beschrieben werden. Zum Aufrufen einer Funktion in einer Oracle-Datenbank sind die folgenden Aufgaben erforderlich:
Erstellen Sie ein BizTalk-Projekt, und generieren Sie ein Schema für die überladene Funktion, die Sie in einer Oracle-Datenbank aufrufen möchten.
Erstellen Sie Nachrichten im BizTalk-Projekt zum Senden und Empfangen von Nachrichten aus der Oracle-Datenbank. Sie müssen Nachrichten für jede Überladung erstellen.
Erstellen Sie eine Orchestrierung, um die überladene Funktion in der Oracle-Datenbank aufzurufen.
Erstellen und Bereitstellen des BizTalk-Projekts.
Konfigurieren Sie die BizTalk-Anwendung, indem Sie physische Sende- und Empfangsports erstellen.
Starten Sie die BizTalk-Anwendung.
Dieses Thema enthält Anweisungen zum Ausführen dieser Aufgaben.
Beispiel basierend auf diesem Thema
Ein Beispiel, InvokeOverloadedProc, basierend auf diesem Thema, wird auch mit dem BizTalk Adapter Pack bereitgestellt. Weitere Informationen finden Sie unter Adapterbeispiele.
Generieren des Schemas
In diesem Thema wird gezeigt, wie eine überladene Funktion oder Prozedur aufgerufen wird und wie die Prozedur GET_ACCOUNT unter dem Schema SCOTT\Package\ACCOUNT_PKG aufgerufen wird. Dieses Paket wird unter dem SCOTT-Schema erstellt, indem die sql-Skripts ausgeführt werden, die mit den Beispielen bereitgestellt werden. Dies ist eine überladene Prozedur, bei der:
Eine Überladung verwendet die Konto-ID als IN-Parameter und gibt einen ACCOUNT-%ROWTYPE als OUT-Parameter zurück.
Die zweite Überladung nimmt den Kontonamen als Eingabeparameter und gibt ein KONTO%ROWTYPE als Ausgabeparameter zurück.
Weitere Informationen zu den Beispielen und den SQL-Skripts finden Sie unter Schemabeispiele.
Um eine überladene Funktion aufzurufen, generieren wir ein Schema für die überladenen Prozeduren GET_ACCOUNT.1 und GET_ACCOUNT.2. Siehe Abrufen von Metadaten für Oracle-Datenbankvorgänge in Visual Studio für weitere Informationen zum Generieren von Schemas.
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. Sie müssen das im ersten Schritt generierte Schema mit den Nachrichten aus dem Fenster "Orchestrierungsansicht" des BizTalk-Projekts verknüpfen.
Für dieses Thema müssen Sie zwei Anforderungsantwort-Nachrichtensätze erstellen– einen Anforderungsantwortsatz für die erste überladene Prozedur und den zweiten Anforderungsantwortsatz für die zweite überladene Prozedur.
Führen Sie die folgenden Schritte aus, um Nachrichten zu erstellen und mit dem Schema zu verknüpfen.
So erstellen Sie Nachrichten und Verknüpfungen zum Schema
Öffnen Sie das Fenster "Orchestrierungsansicht" des BizTalk-Projekts, wenn es noch nicht geöffnet ist. Klicken Sie dazu auf Ansicht, zeigen Sie auf Andere Fenster, und klicken Sie dann auf Orchestrierungsansicht.
Klicken Sie in der Orchestrierungsansicht mit der rechten Maustaste auf "Nachrichten", und klicken Sie dann auf "Neue Nachricht".
Klicken Sie mit der rechten Maustaste auf die neu erstellte Nachricht, und wählen Sie dann "Eigenschaftenfenster" aus.
Gehen Sie im Eigenschaftenbereich für Message_1 wie folgt vor:
Verwenden Sie diese Aktion Kennung Geben Sie "Anforderung" ein. Nachrichtentyp Erweitern Sie in der Dropdownliste Schemas, und wählen Sie InvokeOverloadedProc.OracleDBBindingSchema.GET_ACCOUNT aus, wobei InvokeOverloadedProc der Name Ihres BizTalk-Projekts ist. OracleDBBindingSchema ist das Schema, das für die GET_ACCOUNT-Prozedur generiert wird. Wiederholen Sie den vorherigen Schritt, um drei weitere Nachrichten zu erstellen. Gehen Sie im Eigenschaftenbereich für die neuen Nachrichten wie folgt vor:
Den Bezeichner festlegen auf Festlegen des Nachrichtentyps auf Antwort InvokeOverloadedProc.OracleDBBindingSchema.GET_ACCOUNTResponse Anforderung2 InvokeOverloadedProc.OracleDBBindingSchema1.GET_ACCOUNT Antwort2 InvokeOverloadedProc.OracleDBBindingSchema1.GET_ACCOUNTResponse
Einrichten der Orchestrierung
Sie müssen eine BizTalk-Orchestrierung erstellen, um BizTalk Server zum Aufrufen einer überladenen Prozedur in einer Oracle-Datenbank zu verwenden. In dieser Orchestrierung legen Sie zwei Anforderungsnachrichten ab, eine, die jeder überladenen Prozedur entspricht, am definierten Empfangsspeicherort. Der Oracle Database-Adapter verarbeitet die Nachrichten und leitet 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 Parallelaktionen-Shape in die Orchestrierung einschließen. Für jede parallele Aktion müssen Sie Send- und Receive-Shapes einfügen, um Nachrichten an die Oracle-Datenbank zu senden und Antworten zu empfangen. Sie können jedoch dieselben Ports zum Senden und Empfangen von Nachrichten für beide Vorgänge verwenden. Eine typische Orchestrierung zum gleichzeitigen Aufrufen der überladenen Prozeduren würde Folgendes enthalten:
Shapes senden und empfangen, um Nachrichten an Oracle-Datenbank zu senden und Antworten zu empfangen.
Ein unidirektionaler Empfangsport, der Anforderungsnachrichten empfängt und an die Oracle-Datenbank sendet.
Ein bidirektionaler Sendeanschluss zum Senden von Anfrage-Nachrichten an die Oracle-Datenbank und Empfangen von Antworten.
Ein unidirektionaler Sendport zum Übermitteln der Antworten aus der Oracle-Datenbank an einen Ordner.
Eine Beispiel-Orchestrierung zum Aufrufen der ersten und zweiten Überladungen für die "GET_ACCOUNT"-Prozedur sieht wie folgt aus:
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. In der folgenden Tabelle sind die Formen aufgeführt, die für eine der parallelen Aktionen verwendet werden müssen.
Gestalt | Shape-Typ | Eigenschaften |
---|---|---|
NachrichtEmpfangen | Empfangen | - Name aufReceiveMessage festlegen - Setze Aktivieren auf True |
NachrichtSenden | Senden | - Name auf SendMessage setzen |
AntwortEmpfangen | Empfangen | - Name auf den Wert ReceiveResponse setzen - Setze Aktivieren auf Falsch |
SendResponse | Senden | - Name auf SendResponse setzen |
In der folgenden Tabelle sind die Formen aufgeführt, die Sie für die parallele andere Aktion einschließen müssen.
Gestalt | Shape-Typ | Eigenschaften |
---|---|---|
NachrichtEmpfangen2 | Empfangen | - Name auf ReceiveMessage2 setzen - Setze Aktivieren auf True |
SendMessage2 | Senden | - Name auf SendMessage2 setzen |
ReceiveResponse2 | Empfangen | - Legen Sie Name auf ReceiveResponse2 fest - Setze Aktivieren auf Falsch |
SendResponse2 | Senden | - Name auf SendResponse2 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.
Hafen | Eigenschaften |
---|---|
FileIn | - Bezeichner auf FileIn festlegen - 'Type' auf 'FileInType' festlegen - Kommunikationsmuster auf Einweg festlegen - Setze Kommunikationsrichtung auf Empfangen |
LOBPort | - Bezeichner auf LOBPort setzen - 'Type' auf 'LOBPortType' festlegen - Kommunikationsmuster auf Anfrage-Antwort festlegen - Kommunikationsrichtung auf "Senden-Empfangen" festlegen |
SaveResponse | - Bezeichner auf SaveResponse festlegen - Typ aufSaveResponseType festlegen - Kommunikationsmuster auf Einweg festlegen - 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. Um einen Vorgang zu erstellen, klicken Sie 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 Overload1 und den zweiten Vorgang für jeden Port als Overload2.
Verwenden der Korrelation
Die Korrelation ist der Prozess des Abgleichens einer eingehenden Nachricht mit der entsprechenden Instanz einer Orchestrierung. In der Orchestrierung lassen Sie zwei Anforderungsnachrichten fallen, eine für jede Überlastung. 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
Fördern einer Eigenschaft aus dem Schema, das für jede überladene Funktion generiert wird. Stufen Sie beispielsweise die AID-Eigenschaft aus dem Schema für die erste Überladung herauf, und stufen Sie die ANAME-Eigenschaft aus dem Schema der zweiten Überladung herauf. Um eine Eigenschaft zu fördern, klicken Sie in der Schemaansicht mit der rechten Maustaste auf die Eigenschaft, zeigen Sie auf Fördern, und wählen Sie dann Schnellförderung aus. Dadurch wird ihrem BizTalk-Projekt eine PropertySchema.xsd-Datei hinzugefügt.
Informationen zum Bewerben einer Immobilie finden Sie unter Immobilien bewerben.
Klicken Sie in der Orchestrierungsansicht mit der rechten Maustaste auf Korrelationstypen, und wählen Sie dann "Neuer Korrelationstyp" aus.
Im Dialogfeld "Korrelationseigenschaften " werden die Eigenschaften aufgelistet, die Sie in Schritt 1 höhergestuft haben. Wählen Sie eine Eigenschaft aus, und klicken Sie dann auf "Hinzufügen".
Klicke auf OK.
Wiederholen Sie diese Schritte, um Korrelationstypen für die andere höhergestufte Eigenschaft zu erstellen.
Benennen Sie die Korrelationstypen nach der Eigenschaft um, mit der sie verknüpft sind. Sie können die Korrelationstypen in CorrelationType_AID (für die AID-Eigenschaft) und CorrelationType_ANAME (für die ANAME-Eigenschaft) umbenennen.
Klicken Sie in der Orchestrierungsansicht mit der rechten Maustaste auf Korrelationssätze, und wählen Sie dann "Neuer Korrelationssatz" aus.
Klicken Sie mit der rechten Maustaste auf den neu hinzugefügten Korrelationssatz, und klicken Sie dann auf Eigenschaften. Führen Sie im Eigenschaftenbereich folgende Schritte aus:
Verwenden Sie diese Aktion Korrelationstyp InvokeOverloadedProc.CorrelationType_AID Kennung Correlation_AID Fügen Sie einen weiteren Korrelationssatz hinzu, und geben Sie die folgenden Eigenschaften aus dem Eigenschaftenbereich an.
Verwenden Sie diese Aktion Korrelationstyp InvokeOverloadedProc.CorrelationType_ANAME Kennung Correlation_ANAME
Nachrichten für Aktions-Shapes spezifizieren und mit Ports verbinden
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 |
---|---|
NachrichtEmpfangen | - Initialisierungskorrelationssätze auf Correlation_AID festlegen - Nachricht auf Anforderung festlegen - Vorgang auf FileIn.Overload1.Request festlegen |
NachrichtSenden | - Nachricht auf Anforderung festlegen - Vorgang auf LOBPort.Overload1.Request festlegen |
AntwortEmpfangen | - Nachricht auf Antwort festlegen - Vorgang auf LOBPort.Overload1.Response festlegen |
SendResponse | - Nachricht auf Antwort festlegen - Vorgang auf SaveResponse.Overload1.Request festlegen |
ReceiveMessage2 | - Initialisierung von Korrelationssätzen auf Correlation_ANAME festlegen - Nachricht auf Anforderung2 festlegen - Vorgang auf FileIn.Overload2.Request festlegen |
SendMessage2 | - Nachricht auf Anforderung2 festlegen - Vorgang auf LOBPort.Overload2.Request festlegen |
ReceiveResponse2 | - Nachricht auf Antwort2 festlegen - Vorgang auf LOBPort.Overload2.Response festlegen |
SendResponse2 | - Nachricht auf Antwort2 festlegen - Vorgang auf SaveResponse.Overload2.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 Speicherort auf der Festplatte und einen entsprechenden Dateiport, an dem Sie die Anforderungsnachrichten ablegen, eine für jede überladene Prozedur. Die BizTalk-Orchestrierung verwendet 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 ablegen wird, eine für jede überladene Prozedur, die die Antwort aus der Oracle-Datenbank enthält.
Definieren Sie einen physischen WCF-Custom oder WCF-OracleDB Port senden, um Nachrichten an die Oracle-Datenbank zu senden. Sie müssen auch die Aktion im Sende-Port angeben. Informationen zum Erstellen von 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 Sendeports Nachrichten sendet und empfängt, die mehreren Schemas entsprechen und zwei Vorgänge ausführen, 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> <Operation Name="Overload1" Action="http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Package/ACCOUNT_PKG/GET_ACCOUNT/overload1" /> <Operation Name="Overload2" Action="http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Package/ACCOUNT_PKG/GET_ACCOUNT/overload2" /> </BtsActionMapping>
Hinweis
Durch das Generieren des Schemas mithilfe des Add-Ins "Verbrauchsadapterdienst BizTalk Project" 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 zu Oracle Database.
Starten der Anwendung
Sie müssen die BizTalk-Anwendung zum Aufrufen einer Funktion in einer Oracle-Datenbanktabelle starten. Anweisungen zum Starten einer BizTalk-Anwendung finden Sie unter "So starten Sie eine Orchestrierung".
Stellen Sie in dieser Phase folgendes sicher:
Der FILE-Empfangsanschluss zum Erhalten von Anforderungsmeldungen für die Orchestrierung ist in Betrieb.
Der FILE-Sendeport zum Empfangen der Antwortnachrichten von der Orchestrierung wird ausgeführt.
Der WCF-Custom- oder WCF-OracleDB-Sendeport, um Nachrichten an die Oracle-Datenbank zu übermitteln, ist aktiv.
Die BizTalk-Orchestrierung für den Vorgang wird ausgeführt.
Ausführen des Vorgangs
Nachdem Sie die Anwendung ausgeführt haben, müssen Sie zwei Anforderungsmeldungen (eine für jede überladene Prozedur) an den FILE-Eingangsordner ablegen. Das Schema für die Anforderungsmeldungen muss dem Schema für die zuvor generierte Prozedur entsprechen. Weitere Informationen zum Anforderungsnachrichtenschema zum Aufrufen von Funktionen mithilfe des Oracle Database-Adapters finden Sie unter Nachrichtenschemas für Funktionen und Prozeduren .
Die Anforderungsnachricht zum Aufrufen der ersten Überladung der GET_ACCOUNT Prozedur lautet beispielsweise:
<GET_ACCOUNT xmlns="http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Package/ACCOUNT_PKG/GET_ACCOUNT/overload1">
<AID>100001</AID>
</GET_ACCOUNT>
Ebenso lautet die Anforderungsnachricht zum Aufrufen der zweiten Überladung der GET_ACCOUNT-Prozedur:
<GET_ACCOUNT xmlns="http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Package/ACCOUNT_PKG/GET_ACCOUNT/overload2">
<ANAME>Mindy Martin</ANAME>
</GET_ACCOUNT>
Die erste Anforderungsnachricht ruft die GET_ACCOUNT Prozedur auf, um einen Datensatz mit Konto-ID ab 100020 abzurufen. Die zweite Anforderungsnachricht ruft die GET_ACCOUNT-Prozedur auf, um Datensätze mit dem Kontonamen als "John Smith" abzurufen.
Die Orchestrierung nutzt die Anforderungsnachrichten und sendet sie an die Oracle-Datenbank. Die Antwort aus der Oracle-Datenbank wird an einem anderen DATEIspeicherort gespeichert, der als Teil der Orchestrierung definiert ist. Die Antwort zum Aufrufen der ersten überladenen Prozedur lautet beispielsweise:
<?xml version="1.0" encoding="utf-8"?>
<GET_ACCOUNTResponse mlns="http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Package/ACCOUNT_PKG/GET_ACCOUNT/overload1">
<ACCT>
<ACCTID>100001</ACCTID>
<NAME>Ty Carlson</NAME>
<BALANCE>9000</BALANCE>
</ACCT>
</GET_ACCOUNTResponse>
Mögliche Ausnahmen
Informationen zu den Ausnahmen, die beim Aufrufen von überladenen Paketen mit 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 keine Sendeports, Empfangsports usw. für dieselbe Orchestrierung erstellen müssen. Weitere Informationen zu Bindungsdateien finden Sie unter Wiederverwenden von Oracle Database Adapter-Bindungen.
Siehe auch
Bausteine zum Entwickeln von BizTalk-Anwendungen mit der Oracle-Datenbank