Eseguire operazioni su tabelle con tipi di dati di oggetti di grandi dimensioni nel database Oracle
L'adapter Microsoft BizTalk per Oracle Database offre supporto per i tipi di dati oracle large object (LOB):
Oggetto binario di grandi dimensioni (BLOB)
Oggetto large carattere (CLOB)
Oggetto di carattere nazionale di grandi dimensioni (NCLOB)
File binario (BFILE). Per altre informazioni, vedere Esecuzione di operazioni su tabelle con tipi di dati BFILE nel database Oracle usando BizTalk Server.
L'adapter Microsoft BizTalk per Oracle Database esegue questa operazione eseguendo la navigazione delle operazioni ReadLOB e UpdateLOB per le tabelle che contengono colonne LOB. Per altre informazioni su queste operazioni, vedere Operazioni su tabelle e viste contenenti dati LOB nel database Oracle. Per altre informazioni sulla struttura del messaggio SOAP per richiamare queste operazioni, vedere Schemi di messaggi per operazioni LOB speciali.
Nota
Quando si usa l'adapter Oracle Database con BizTalk Server, l'operazione ReadLOB non supporta lo streaming di dati di tipo LOB da un database Oracle. Per trasmettere i dati LOB da un database Oracle usando BizTalk Server è consigliabile usare l'operazione Select. Per altre informazioni sullo streaming, vedere Supporto streaming per i tipi di dati LOB nel database Oracle. Inoltre, la risposta dal database Oracle per l'operazione ReadLOB avrà esito negativo rispetto al WSDL. Per istruzioni su come risolvere l'errore, vedere Risoluzione dei problemi operativi.
Come eseguire operazioni sui dati LOB?
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 sia operazioni ReadLOB che UpdateLOB in una tabella in un database Oracle, queste attività sono:
Creare un progetto BizTalk e generare uno schema per operazioni ReadLOB e UpdateLOB.
Creare messaggi nel progetto BizTalk per l'invio e la ricezione di messaggi dal database Oracle. È necessario creare messaggi per la richiesta di invio e la ricezione di risposte per entrambe le operazioni.
Creare un'orchestrazione per richiamare operazioni ReadLOB e UpdateLOB.
Compilare e distribuire il progetto BizTalk.
Configurare l'applicazione BizTalk creando porte di invio e ricezione fisiche.
Avviare l'applicazione BizTalk.
In questo argomento vengono fornite istruzioni per eseguire queste attività.
Esempio basato su questo argomento
Un esempio, Operate_LOB, basato su questo argomento viene fornito anche con bizTalk Adapter Pack. Per altre informazioni, vedere Esempi di adapter.
Generazione dello schema
In questo argomento, per illustrare come eseguire operazioni ReadLOB e UpdateLOB, verranno generati metadati per queste operazioni visualizzate per la tabella CUSTOMER nello schema SCOTT nel database Oracle. Questa tabella viene creata nello schema SCOTT eseguendo gli script SQL forniti con gli esempi. Per altre informazioni sugli esempi, vedere Esempi di schemi.
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 risposta di richiesta per l'operazione ReadLOB e il secondo set di richieste di risposta per l'operazione UpdateLOB.
Seguire questa procedura per creare messaggi e collegarli allo schema.
Per creare messaggi e collegare allo schema
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.
In Visualizzazione orchestrazione fare clic con il pulsante destro del mouse su Messaggi e quindi scegliere Nuovo messaggio.
Fare clic con il pulsante destro del mouse sul messaggio appena creato e quindi selezionare Finestra proprietà.
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 Operate_LOB. OracleDBBindingSchema.ReadLOB, dove Operate_LOB è il nome del progetto BizTalk. OracleDBBindingSchema è lo schema generato per le operazioni ReadLOB e UpdateLOB nella tabella CUSTOMER. 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 Operate_LOB. OracleDBBindingSchema.ReadLOBResponse Richiesta2 Operate_LOB. OracleDBBindingSchema.UpdateLOB Risposta2 Operate_LOB. OracleDBBindingSchema.UpdateLOBResponse
Configurazione dell'orchestrazione
È necessario creare un'orchestrazione BizTalk per usare BizTalk Server per richiamare operazioni ReadLOB e UpdateLOB in una tabella. In questa orchestrazione vengono eliminati due messaggi di richiesta, uno per l'operazione ReadLOB e l'altro per l'operazione UpdateLOB. Questi messaggi vengono eliminati in una posizione di ricezione. 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. Un'orchestrazione tipica per eseguire le operazioni ReadLOB e UpdateLOB 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 è simile alla seguente:
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 il 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 ReadLOB e la seconda operazione per ogni porta come UpdateLOB.
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
Alzare di livello una proprietà dallo schema generato per ogni operazione. Ad esempio, alzare di livello la proprietà LOB_COLUMN dallo schema dell'operazione ReadLOB; alzare di livello la proprietà FILTER dallo schema dell'operazione UpdateLOB. 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à.
Nella visualizzazione orchestrazione fare clic con il pulsante destro del mouse su Tipi di correlazione e quindi scegliere Nuovo tipo di correlazione.
Nella finestra di dialogo Proprietà correlazione sono elencate le proprietà alzate di livello nel passaggio 1. Selezionare una proprietà e quindi fare clic su Aggiungi.
Fare clic su OK.
Per creare tipi di correlazione per l'altra proprietà alzata di livello, ripetere questi passaggi.
Rinominare i tipi di correlazione in base all'operazione a cui sono associati. È possibile rinominare i tipi di correlazione in CorrelationType_ReadLOB (per l'operazione ReadLOB) e CorrelationType_UpdateLOB (per l'operazione UpdateLOB).
In Visualizzazione orchestrazione fare clic con il pulsante destro del mouse su Set di correlazioni e quindi scegliere Nuovo set di correlazioni.
Fare clic con il pulsante destro del mouse sul set di correlazione appena aggiunto e quindi scegliere Proprietà. Nel riquadro Proprietà eseguire le operazioni seguenti:
Usare Per Tipo correlazione Operate_LOB. CorrelationType_ReadLOB Identificatore Correlation_ReadLOB Aggiungere un altro set di correlazione e specificare le proprietà seguenti dal riquadro Proprietà.
Usare Per Tipo correlazione Operate_LOB. CorrelationType_UpdateLOB Identificatore Correlation_UpdateLOB
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 di azione e per collegarli 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_ReadLOB - Impostare il messaggio su Richiesta - Impostare l'operazione su FileIn.ReadLOB.Request |
SendMessage | - Impostare il messaggio su Richiesta - Impostare l'operazione su LOBPort.ReadLOB.Request |
ReceiveResponse | - Impostare il messaggio su Risposta - Impostare l'operazione su LOBPort.ReadLOB.Response |
SendResponse | - Impostare il messaggio su Risposta - Impostare l'operazione su SaveResponse.ReadLOB.Request |
ReceiveMessage2 | - Impostare l'inizializzazione dei set di correlazioni su Correlation_UpdateLOB - Impostare il messaggio su Request2 - Impostare l'operazione su FileIn.UpdateLOB.Request |
SendMessage2 | - Impostare messaggio su Request2 - Impostare l'operazione su LOBPort.UpdateLOB.Request |
ReceiveResponse2 | - Impostare il messaggio su Response2 - Impostare l'operazione su LOBPort.UpdateLOB.Response |
SendResponse2 | - Impostare messaggio su risposta - Impostare l'operazione su SaveResponse.UpdateLOB.Request |
Dopo aver specificato queste proprietà, le forme e le porte del messaggio sono connesse e la orchestrazione è stata completata.
È ora necessario compilare la soluzione BizTalk e distribuirla in un BizTalk Server. Per altre informazioni, vedere Creazione e 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. È necessario usare la console di amministrazione BizTalk Server per configurare l'applicazione. Per una procedura dettagliata, vedere Procedura dettagliata: Distribuzione di un'applicazione BizTalk di base.
La configurazione di un'applicazione comporta:
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 le operazioni ReadLOB e UpdateLOB. 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 operazione, contenente la risposta dal database Oracle.
Definire un WCF-Custom fisico o WCF-OracleDB porta di invio per inviare messaggi al database Oracle. È anche necessario specificare l'azione nella porta di invio. 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 invio invia e riceve messaggi conformi a più schemi ed esegue due operazioni, è necessario impostare un'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 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>
Nota
La generazione dello schema usando il componente aggiuntivo Del progetto BizTalk del servizio adapter crea anche un file di associazione contenente informazioni sulle porte e sulle azioni da impostare per tali porte. È possibile importare questo file di associazione dalla console di amministrazione di BizTalk Server per creare porte di invio (per le chiamate in uscita) o le 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 eseguire un'operazione nel 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 invio FILE per ricevere i messaggi di risposta dall'orchestrazione è in esecuzione.
Il WCF-Custom porta di invio o WCF-OracleDB 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 i messaggi di richiesta nel percorso di ricezione FILE. Lo schema per i messaggi di richiesta deve essere conforme allo schema per le operazioni generate in precedenza. Per altre informazioni sullo schema dei messaggi per richiamare operazioni sui tipi di dati LOB usando l'adapter Oracle Database, vedere Schemi di messaggi per operazioni di chiamata ai tipi di dati LOB .
L'orchestrazione usa 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.
Per questa orchestrazione, viene prima di tutto inviato un messaggio di richiesta per l'operazione UpdateLOB per aggiornare la colonna PHOTO (di tipo di dati BLOB) della tabella CUSTOMER. Il messaggio di richiesta per richiamare l'aggiornamento della colonna PHOTO per un cliente specifico è:
<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>
Nota
La stringa di filtro deve sempre recuperare una riga corrispondente in caso contrario, l'adapter di database Oracle genera un xmlReaderParsingException. Anche il valore per l'elemento <Stream> deve essere di tipo base64Binary.
La risposta per l'operazione UpdateLOB è:
<?xml version="1.0" encoding="utf-8"?>
<UpdateLOBResponse xmlns="http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Table/CUSTOMER"></UpdateLOBResponse>
Viene ora visualizzato un messaggio di richiesta per l'operazione ReadLOB per leggere i dati aggiornati dall'operazione UpdateLOB. Il messaggio di richiesta per richiamare l'operazione ReadLOB nella colonna PHOTO per un cliente specifico è:
<ReadLOB xmlns="http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Table/CUSTOMER">
<LOB_COLUMN>PHOTO</LOB_COLUMN>
<FILTER>NAME='Mindy Martin'</FILTER>
</ReadLOB>
Nota
La stringa del filtro deve sempre recuperare una riga corrispondente. Se sono presenti più righe corrispondenti, l'adapter Oracle Database restituisce solo la colonna LOB per la prima riga (corrispondente).
La risposta per l'operazione ReadLOB è:
<?xml version="1.0" encoding="utf-8"?>
<ReadLOBResponse mlns="http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Table/CUSTOMER">
<ReadLOBResult>YWJjZA==</ReadLOBResult>
</ReadLOBResponse>
Nota
La risposta per l'operazione ReadLOB potrebbe non riuscire a convalidare con WSDL. È necessario eseguire determinate attività per convalidare ReadLOB con WSDL. Per altre informazioni, vedere Risoluzione dei problemi operativi.
Possibili eccezioni
Per informazioni sulle eccezioni che potrebbero verificarsi durante l'esecuzione di operazioni sulla tabella contenente dati LOB usando 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 invio, 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