Condividi tramite


Richiamare funzioni e procedure di overload nel database Oracle usando BizTalk Server

Le stored procedure e le funzioni possono essere sovraccaricate in un database Oracle. L'adapter Oracle Database supporta funzioni e procedure di overload modificando lo spazio dei nomi di destinazione dell'operazione. Ad esempio, la struttura dei messaggi per due procedure di overload ha un aspetto simile al seguente:

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]>  

La struttura dei messaggi SOAP e l'azione SOAP necessaria per richiamare una funzione o una routine di overload è simile a quella di richiamare una funzione e una routine, come descritto in Schemi di messaggio per funzioni e procedure.

Richiamare una routine di overload è simile a quella di richiamare qualsiasi altra funzione come descritto in Chiamata di funzioni e procedure nel database Oracle usando BizTalk Server. Tuttavia, per distinguere le funzioni di overload, l'adapter Oracle Database aggiunge una stringa univoca all'ID nodo e allo spazio dei nomi che viene visualizzato per l'artefatto di overload. Questa stringa è "overload1" per il primo overload, "overload2" per l'overload successivo e così via.

Come richiamare funzioni e procedure di overload?

L'esecuzione di un'operazione in un database Oracle tramite l'adattatore Oracle Database con BizTalk Server comporta attività procedurali descritte in Blocchi predefiniti per sviluppare applicazioni BizTalk con Oracle Database. Per richiamare una funzione in un database Oracle, queste attività sono:

  1. Creare un progetto BizTalk e generare lo schema per la funzione di overload che si vuole richiamare in un database Oracle.

  2. Creare messaggi nel progetto BizTalk per l'invio e la ricezione di messaggi dal database Oracle. È necessario creare messaggi per ogni overload.

  3. Creare un'orchestrazione per richiamare la funzione di overload nel database Oracle.

  4. Compilare e distribuire il progetto BizTalk.

  5. Configurare l'applicazione BizTalk creando porte di invio e ricezione fisiche.

  6. Avviare l'applicazione BizTalk.

    In questo argomento vengono fornite istruzioni per eseguire queste attività.

Esempio basato su questo argomento

Un esempio, InvokeOverloadedProc, basato su questo argomento viene fornito anche con bizTalk Adapter Pack. Per altre informazioni, vedere Esempi di adapter.

Generazione dello schema

In questo argomento viene illustrato come richiamare una funzione o una routine di overload, verrà richiamata la procedura di GET_ACCOUNT nello schema SCOTT\Package\ACCOUNT_PKG. Questo pacchetto viene creato nello schema SCOTT eseguendo gli script SQL forniti con gli esempi. Si tratta di una procedura di overload in cui:

  • Un overload accetta l'ID dell'account come parametro IN e restituisce un ACCOUNT%ROWTYPE come parametro OUT.

  • Il secondo overload accetta il nome dell'account come parametro IN e restituisce un ACCOUNT%ROWTYPE come parametro OUT.

    Per altre informazioni sugli esempi e sugli script SQL, vedere Esempi di schemi.

    Per richiamare una funzione di overload, viene generato lo schema per le procedure di overload, GET_ACCOUNT.1 e GET_ACCOUNT.2. Per altre informazioni su come generare lo schema , vedere Recuperare i metadati per le operazioni di Database Oracle in Visual Studio .

Definizione di messaggi e tipi di messaggio

Lo schema generato in precedenza descrive i "tipi" necessari per i messaggi nell'orchestrazione. Un messaggio è in genere una variabile, il tipo per cui è definito dallo schema corrispondente. È necessario collegare lo schema generato nel primo passaggio ai messaggi dalla finestra Visualizzazione orchestrazione del progetto BizTalk.

Per questo argomento, è necessario creare due set di messaggi di risposta di richiesta, ovvero un set di risposte di richiesta per la prima procedura di overload e il secondo set di risposta di richiesta per la seconda procedura di overload.

Seguire questa procedura per creare messaggi e collegarli allo schema.

  1. Aprire la finestra Visualizzazione orchestrazione del progetto BizTalk, se non è già aperta. A tale scopo, fare clic su Visualizza, scegliere Altre finestre e quindi fare clic su Visualizzazione orchestrazione.

  2. In Visualizzazione orchestrazione fare clic con il pulsante destro del mouse su Messaggi e quindi scegliere Nuovo messaggio.

  3. Fare clic con il pulsante destro del mouse sul messaggio appena creato e quindi selezionare Finestra proprietà.

  4. Nel riquadro Proprietà per Message_1 eseguire le operazioni seguenti:

    Usare Per
    Identificatore Digitare Richiesta.
    Tipo di messaggio Nell'elenco a discesa espandere Schemi e selezionare InvokeOverloadedProc.OracleDBBindingSchema.GET_ACCOUNT, dove InvokeOverloadedProc è il nome del progetto BizTalk. OracleDBBindingSchema è lo schema generato per la procedura di GET_ACCOUNT.
  5. Ripetere il passaggio precedente per creare tre messaggi in più. Nel riquadro Proprietà per i nuovi messaggi eseguire le operazioni seguenti:

    Impostare identificatore su Impostare tipo di messaggio su
    Risposta InvokeOverloadedProc.OracleDBBindingSchema.GET_ACCOUNTResponse
    Richiesta2 InvokeOverloadedProc.OracleDBBindingSchema1.GET_ACCOUNT
    Risposta2 InvokeOverloadedProc.OracleDBBindingSchema1.GET_ACCOUNTResponse

Configurazione dell'orchestrazione

È necessario creare un'orchestrazione BizTalk per usare BizTalk Server per richiamare una routine di overload in un database Oracle. In questa orchestrazione vengono eliminati due messaggi di richiesta, uno corrispondente a ogni routine di overload, nella posizione di ricezione definita. L'adapter Oracle Database usa i messaggi e li passa al database Oracle tramite ODP. La risposta dal database Oracle viene salvata in un'altra posizione.

Poiché l'orchestrazione seleziona due richieste contemporaneamente, è necessario includere una forma Azioni parallele nell'orchestrazione. Per ogni azione parallela, è necessario includere invia e ricevere forme per inviare messaggi al database Oracle e ricevere risposte. Tuttavia, è possibile usare le stesse porte per l'invio e la ricezione di messaggi per entrambe le operazioni. Una tipica orchestrazione per richiamare le procedure di overload contemporaneamente conterrà:

  • Inviare e ricevere forme per inviare messaggi al database Oracle e ricevere risposte.

  • Porta di ricezione unidirezionale per ricevere messaggi di richiesta da inviare al database Oracle.

  • Porta di invio bidirezionale per inviare messaggi di richiesta al database Oracle e ricevere risposte.

  • Porta di invio unidirezionale per inviare le risposte dal database Oracle a una cartella.

    Un'orchestrazione di esempio per richiamare i primi e i secondi overload per GET_ACCOUNT procedura è simile al seguente:

    Orchestrazione per richiamare pacchetti di overload

Aggiunta di forme di messaggio

Assicurarsi di specificare le proprietà seguenti per ognuna delle forme del messaggio. I nomi elencati nella colonna Shape sono i nomi delle forme del messaggio visualizzate nell'orchestrazione appena menzionata. Nella tabella seguente sono elencate le forme da includere per una delle azioni parallele.

Forma Tipo di forma Proprietà
ReceiveMessage Ricevere - Impostare nome su ReceiveMessage
- Impostare Attiva su True
SendMessage Send - Impostare nome su SendMessage
ReceiveResponse Ricevere - Impostare nome su ReceiveResponse
- Impostare Attiva su False
SendResponse Send - Impostare nome su SendResponse

Nella tabella seguente sono elencate le forme che è necessario includere per l'altra azione parallela.

Forma Tipo di forma Proprietà
ReceiveMessage2 Ricevere - Impostare Il nome su ReceiveMessage2
- Impostare Attiva su True
SendMessage2 Send - Impostare il nome su SendMessage2
ReceiveResponse2 Ricevere - Impostare Il nome su ReceiveResponse2
- Impostare Attiva su False
SendResponse2 Send - Impostare il nome su SendResponse2

Aggiunta di porte

Assicurarsi di specificare le proprietà seguenti per ognuna delle porte logiche. I nomi elencati nella colonna Porta sono i nomi delle porte visualizzate nell'orchestrazione.

Porta Proprietà
FileIn - Impostare l'identificatore su FileIn
- Impostare il tipo su FileInType
- Impostare il modello di comunicazionesu unidirezionale
- Impostare la direzione di comunicazione da ricevere
LOBPort - Impostare l'identificatore su LOBPort
- Impostare il tipo su LOBPortType
- Impostare il modello di comunicazione su Request-Response
- Impostare la direzione di comunicazione su Send-Receive
SaveResponse - Impostare l'identificatore su SaveResponse
- Impostare il tipo su SaveResponseType
- Impostare il modello di comunicazionesu unidirezionale
- Impostare la direzione di comunicazione su Invia

Poiché si elaborano due messaggi di richiesta e risposta usando queste porte, è necessario creare due operazioni per ogni porta, in cui ogni operazione corrisponde a un tipo di messaggio. Per creare un'operazione, fare clic con il pulsante destro del mouse sulla forma della porta e quindi scegliere Nuova operazione. Denominare la prima operazione per ogni porta come Overload1 e la seconda operazione per ogni porta come Overload2.

Uso della correlazione

Per correlazione si intende il processo che ottiene la corrispondenza tra un messaggio in ingresso e l'istanza appropriata di un'orchestrazione. Nell'orchestrazione verranno eliminati due messaggi di richiesta, uno per ogni overload. Usando la correlazione, si associa un messaggio di richiesta all'orchestrazione corretta. Per altre informazioni sulla correlazione, vedere Uso delle correlazioni nelle orchestrazioni.

Per usare le correlazioni
  1. Alzare di livello una proprietà dallo schema generato per ogni funzione di overload. Ad esempio, alzare di livello la proprietà AID dallo schema per il primo overload; promuovere la proprietà ANAME dallo schema del secondo overload. Per alzare di livello una proprietà, fare clic con il pulsante destro del mouse sulla proprietà nella visualizzazione schema, scegliere Alza di livello e quindi selezionare Promozione rapida. Verrà aggiunto un file PropertySchema.xsd al progetto BizTalk.

    Per informazioni sulla promozione di una proprietà, vedere Promozione delle proprietà.

  2. In Visualizzazione orchestrazione fare clic con il pulsante destro del mouse su Tipi di correlazione e quindi scegliere Nuovo tipo di correlazione.

  3. Nella finestra di dialogo Proprietà correlazione sono elencate le proprietà promosse nel passaggio 1. Selezionare una proprietà e quindi fare clic su Aggiungi.

  4. Fare clic su OK.

  5. Per creare tipi di correlazione per l'altra proprietà alzata di livello, ripetere questi passaggi.

  6. Rinominare i tipi di correlazione in base alla proprietà in cui sono associati. È possibile rinominare i tipi di correlazione in CorrelationType_AID (per la proprietà AID) e CorrelationType_ANAME (per la proprietà ANAME).

  7. In Visualizzazione orchestrazione fare clic con il pulsante destro del mouse su Set di correlazioni e quindi scegliere Nuovo set di correlazioni.

  8. Fare clic con il pulsante destro del mouse sul set di correlazione appena aggiunto e quindi scegliere Proprietà. Nel riquadro Proprietà effettuare le operazioni seguenti:

    Usare Per
    Tipo correlazione InvokeOverloadedProc.CorrelationType_AID
    Identificatore Correlation_AID
  9. Aggiungere un altro set di correlazione e specificare le proprietà seguenti dal riquadro Proprietà.

    Usare Per
    Tipo correlazione InvokeOverloadedProc.CorrelationType_ANAME
    Identificatore Correlation_ANAME

Specificare i messaggi per le forme azione e connetterli alle porte

Nella tabella seguente vengono specificate le proprietà e i relativi valori che è necessario impostare per specificare i messaggi per le forme azione e collegare i messaggi alle porte. I nomi elencati nella colonna Shape sono i nomi delle forme del messaggio visualizzate nell'orchestrazione menzionata in precedenza.

Forma Proprietà
ReceiveMessage - Impostare l'inizializzazione dei set di correlazioni su Correlation_AID
- Impostare il messaggio su Richiesta
- Impostare l'operazione su FileIn.Overload1.Request
SendMessage - Impostare il messaggio su Richiesta
- Impostare l'operazione su LOBPort.Overload1.Request
ReceiveResponse - Impostare il messaggio su Risposta
- Impostare l'operazione su LOBPort.Overload1.Response
SendResponse - Impostare il messaggio su Risposta
- Impostare l'operazione su SaveResponse.Overload1.Request
ReceiveMessage2 - Impostare l'inizializzazione dei set di correlazione su Correlation_ANAME
- Impostare il messaggio su Request2
- Impostare l'operazione su FileIn.Overload2.Request
SendMessage2 - Impostare il messaggio su Request2
- Impostare l'operazione su LOBPort.Overload2.Request
ReceiveResponse2 - Impostare Il messaggio su Response2
- Impostare l'operazione su LOBPort.Overload2.Response
SendResponse2 - Impostare Il messaggio su Response2
- Impostare l'operazione su SaveResponse.Overload2.Request

Dopo aver specificato queste proprietà, le forme e le porte del messaggio sono connesse e l'orchestrazione è completata.

È ora necessario compilare la soluzione BizTalk e distribuirla in un BizTalk Server. Per altre informazioni, vedere Compilazione ed esecuzione di orchestrazioni.

Configurazione dell'applicazione BizTalk

Dopo aver distribuito il progetto BizTalk, l'orchestrazione creata in precedenza è elencata nel riquadro Orchestrazioni nella console di amministrazione di BizTalk Server. Per configurare l'applicazione, è necessario usare la console di amministrazione di BizTalk Server. Per una procedura dettagliata, vedere Procedura dettagliata: Distribuzione di un'applicazione BizTalk di base.

La configurazione di un'applicazione prevede:

  • Selezione di un host per l'applicazione.

  • Mapping delle porte create nell'orchestrazione alle porte fisiche nella console di amministrazione di BizTalk Server. Per questa orchestrazione è necessario:

    • Definire un percorso sul disco rigido e una porta file corrispondente in cui verranno eliminati i messaggi di richiesta, uno per ogni routine di overload. L'orchestrazione BizTalk utilizzerà i messaggi di richiesta e lo invierà al database Oracle.

    • Definire un percorso sul disco rigido e una porta file corrispondente in cui l'orchestrazione BizTalk rilascia i messaggi di risposta, uno per ogni routine di overload, contenente la risposta dal database Oracle.

    • Definire un WCF-Custom fisico o WCF-OracleDB porta di trasmissione per inviare messaggi al database Oracle. È inoltre necessario specificare l'azione nella porta di trasmissione. Per informazioni su come creare WCF-Custom o WCF-OracleDB porte, vedere Configurare manualmente un'associazione di porte fisiche all'adapter di database Oracle. Poiché il WCF-Custom o WCF-OracleDB porta di trasmissione invia e riceve messaggi conformi a più schemi ed esegue due operazioni, è necessario impostare l'azione dinamica per entrambe le operazioni. Per altre informazioni sulle azioni, vedere Configurare l'azione SOAP per Oracle Database. Per questa orchestrazione, l'azione deve essere impostata come segue:

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

      Nota

      La generazione dello schema tramite il componente aggiuntivo Del progetto BizTalk del servizio adapter di utilizzo crea anche un file di associazione contenente informazioni sulle porte e le azioni da impostare per tali porte. È possibile importare questo file di associazione dalla console di amministrazione di BizTalk Server per creare porte di trasmissione (per chiamate in uscita) o porte di ricezione (per le chiamate in ingresso). Per altre informazioni, vedere Configurare un'associazione di porte fisiche usando un file di associazione di porte a Oracle Database.

Avvio dell'applicazione

È necessario avviare l'applicazione BizTalk per richiamare una funzione in una tabella di database Oracle. Per istruzioni sull'avvio di un'applicazione BizTalk, vedere Come avviare un'orchestrazione.

In questa fase, assicurarsi di:

  • La porta di ricezione FILE per ricevere messaggi di richiesta per l'orchestrazione è in esecuzione.

  • La porta di trasmissione FILE per ricevere i messaggi di risposta dall'orchestrazione è in esecuzione.

  • Il WCF-Custom o WCF-OracleDB porta di trasmissione per inviare messaggi al database Oracle è in esecuzione.

  • L'orchestrazione BizTalk per l'operazione è in esecuzione.

Esecuzione dell'operazione

Dopo aver eseguito l'applicazione, è necessario eliminare due messaggi di richiesta (uno per ogni routine di overload) nel percorso di ricezione FILE. Lo schema per i messaggi di richiesta deve essere conforme allo schema per la procedura generata in precedenza. Per altre informazioni sullo schema dei messaggi per richiamare le funzioni tramite l'adapter Oracle Database, vedere Schemi messaggio per funzioni e procedure .

Ad esempio, il messaggio di richiesta per richiamare il primo overload della procedura di GET_ACCOUNT è:

<GET_ACCOUNT xmlns="http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Package/ACCOUNT_PKG/GET_ACCOUNT/overload1">  
  <AID>100001</AID>  
</GET_ACCOUNT>  

Analogamente, il messaggio di richiesta per richiamare il secondo overload della procedura di GET_ACCOUNT è:

<GET_ACCOUNT xmlns="http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Package/ACCOUNT_PKG/GET_ACCOUNT/overload2">  
  <ANAME>Mindy Martin</ANAME>  
</GET_ACCOUNT>  

Il primo messaggio di richiesta richiama la routine GET_ACCOUNT per recuperare il record con ID account uguale a 100020. Il secondo messaggio di richiesta richiama la routine GET_ACCOUNT per recuperare i record con il nome dell'account come "John Smith".

L'orchestrazione utilizza i messaggi di richiesta e li invia al database Oracle. La risposta dal database Oracle viene salvata in un altro percorso FILE definito come parte dell'orchestrazione. Ad esempio, la risposta per richiamare la prima procedura di overload è:

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

Possibili eccezioni

Per informazioni sulle eccezioni che potrebbero verificarsi durante la chiamata di pacchetti di overload tramite BizTalk Server, vedere Eccezioni e gestione degli errori.

Procedure consigliate

Dopo aver distribuito e configurato il progetto BizTalk, è possibile esportare le impostazioni di configurazione in un file XML denominato file binding. Dopo aver generato un file di associazioni, è possibile importare le impostazioni di configurazione dal file in modo che non sia necessario creare le porte di trasmissione, le porte di ricezione e così via per la stessa orchestrazione. Per altre informazioni sui file di associazione, vedere Riutilizzare le associazioni dell'adapter di database Oracle.

Vedere anche

Blocchi predefiniti per sviluppare applicazioni BizTalk con Oracle Database