Condividi tramite


Eseguire il polling di Oracle Database usando l'istruzione SELECT

È possibile configurare l'adapter Oracle Database per ricevere messaggi periodici di modifica dei dati usando un'istruzione SELECT per eseguire continuamente il polling delle tabelle e delle viste nel database Oracle. È possibile specificare un'istruzione SELECT come istruzione di polling eseguita periodicamente dall'adapter per eseguire il polling del database Oracle. Facoltativamente, è anche possibile specificare un blocco di codice PL/SQL post-poll eseguito dall'adattatore in caso di modifica dei dati. Questo blocco viene spesso usato per aggiornare un campo sui record sottoposti a query nella destinazione o per spostare i record sottoposti a query in un'altra tabella o vista.

Per abilitare questa operazione, è necessario specificare determinate proprietà di associazione nell'adapter Oracle Database. È anche possibile modificare lo spazio dei nomi di destinazione per l'operazione POLLINGSTMT impostando la proprietà PollingId nell'URI di connessione. Per altre informazioni, vedere Supporto per la ricezione di messaggi modificati dei dati basati sul polling in Oracle Database e Ricezione di messaggi modificati dei dati basati sul polling nell'adapter Oracle Database. Per informazioni sulla struttura del messaggio SOAP per le operazioni di polling, vedere Schemi messaggio per le operazioni di polling2.

Configurazione di un'operazione di polling con le proprietà di associazione dell'adattatore per database Oracle

Nella tabella seguente vengono riepilogate le proprietà di associazione dell'adapter Oracle Database usate per configurare l'adapter per ricevere messaggi di modifica dei dati. È necessario specificare queste proprietà di associazione durante la configurazione della porta di ricezione nella console di amministrazione di BizTalk Server.

Proprietà di associazione Descrizione
InboundOperationType Specifica se si desidera eseguire l'operazione di polling o notifica in ingresso. Il valore predefinito è Polling.
PolledDataAvailableStatement Specifica l'istruzione SQL eseguita dall'adapter per determinare se sono disponibili dati per il polling. Solo se è disponibile un record, verrà eseguita l'istruzione SELECT specificata per la proprietà di associazione PollingStatement . Il valore predefinito è SELECT 1 FROM DUAL, che implica che l'adapter deve continuare a eseguire il polling indipendentemente dal fatto che la tabella di cui viene eseguito il polling disponga o meno di dati.
PollingInterval Specifica l'intervallo, espresso in secondi, in cui l'adapter Oracle Database esegue l'istruzione specificata per la proprietà di associazione PolledDataAvailableStatement . Il valore predefinito è 500 secondi. L'intervallo di polling determina l'intervallo di tempo tra i sondaggi successivi. Se l'istruzione viene eseguita entro l'intervallo specificato, l'adattatore rimane in sospensione per il tempo rimanente nell'intervallo.
PollingStatement Specifica l'istruzione di sondaggio. Per eseguire il polling usando un'istruzione SELECT, è necessario specificare un'istruzione SELECT per questa proprietà di associazione. Il valore predefinito è Null.

Per abilitare il polling, è necessario specificare un valore per la proprietà di associazione PollingStatement . L'istruzione di polling viene eseguita solo se sono disponibili dati per il polling, il che è determinato dalla proprietà di associazione PolledDataAvailableStatement.
PollingAction Specifica l'azione per l'operazione di polling. È possibile determinare l'azione di polling per un'operazione specifica dai metadati generati per l'operazione usando il componente aggiuntivo Consume Adapter Service.
PostPollStatement Specifica un blocco di istruzioni eseguito dopo l'esecuzione dell'istruzione specificata dalla proprietà di associazione PollingStatement .
PollWhileDataFound Specifica se l'adapter Oracle Database ignora l'intervallo di polling impostato ed esegue continuamente il comando di polling, se sono presenti dati nella tabella in cui si effettua il polling. Se nella tabella non sono disponibili dati, l'adapter ritorna a eseguire l'istruzione di interrogazione all'intervallo di polling specificato. Il valore predefinito è false.

Per una descrizione più completa di queste proprietà, vedere Informazioni sulle proprietà di associazione dell'adapter Oracle Database. Per una descrizione completa di come usare l'adapter Oracle Database per eseguire il polling del database Oracle, leggi oltre per ulteriori informazioni.

Come questo argomento dimostra il polling

In questo argomento, per illustrare come l'adapter Oracle Database supporta la ricezione di messaggi di modifica dei dati tramite istruzioni SELECT, creare un progetto BizTalk e generare lo schema per l'operazione POLLINGSTMT impostando la proprietà di associazione PollingStatement su quanto segue:

SELECT * FROM ACCOUNTACTIVITY FOR UPDATE  

La tabella ACCOUNTACTIVITY viene creata quando si eseguono gli script SQL forniti con gli esempi per creare questi oggetti nel database.

Annotazioni

L'orchestrazione in questo argomento esegue il polling della tabella ACCOUNTACTIVITY, ovvero una tabella di database di base creata eseguendo gli script forniti con gli esempi. Per eseguire il polling di qualsiasi altra tabella, è necessario eseguire procedure simili come descritto in questo argomento.

Per illustrare un'operazione di polling, eseguire le operazioni seguenti:

  • Specificare un'istruzione SELECT per la proprietà di associazione PolledDataAvailableStatement per determinare se la tabella di cui viene eseguito il polling (ACCOUNTACTIVITY) contiene dati. In questo esempio è possibile impostare questa proprietà di associazione come segue:

    SELECT COUNT (*) FROM ACCOUNTACTIVITY  
    

    Ciò garantisce che l'adapter esegua l'istruzione di polling solo quando la tabella ACCOUNTACTIVITY contiene dei record.

  • Specificare l'istruzione SELECT come indicato in precedenza per la proprietà di associazione PollingStatement . Questa istruzione recupera tutte le righe nella tabella ACCOUNTACTIVITY.

  • ESEGUIRE un blocco PL/SQL come parte della proprietà di associazione PostPollStatement . Questa istruzione sposta tutti i dati dalla tabella ACCOUNTACTIVITY a un'altra tabella del database. In questo caso, alla successiva esecuzione dell'istruzione specificata per PollingStatement non verranno recuperati dati.

  • Finché non vengono aggiunti altri dati alla tabella ACCOUNTACTIVITY, non verranno visualizzati messaggi di polling. È quindi necessario ripopolare la tabella ACCOUNTACTIVITY con nuovi record. A tale scopo, eseguire lo script di more_activity_data.sql fornito con gli esempi. Dopo aver eseguito questo script, l'operazione di polling successiva recupererà i nuovi record inseriti nella tabella.

Come ricevere messaggi di modifica dei dati da Oracle

L'esecuzione di un'operazione nel database Oracle tramite l'adapter Oracle Database con BizTalk Server prevede le attività procedurali seguenti descritte in Blocchi predefiniti per sviluppare applicazioni BizTalk con Oracle Database. Per configurare l'adapter in modo che esegua il polling del database Oracle usando un'istruzione SELECT, queste attività sono le seguenti:

  1. Creare un progetto BizTalk e generare lo schema per l'operazione POLLINGSTMT per la tabella di cui si vuole eseguire il polling.

  2. Creare un messaggio nel progetto BizTalk per la ricezione di messaggi dal database Oracle.

  3. Creare un'orchestrazione per ricevere messaggi da Oracle e salvarli in una cartella.

  4. Compilare e distribuire il progetto BizTalk.

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

    Importante

    Per gli scenari di polling in ingresso è necessario configurare sempre una porta di ricezione unidirezionale. Le porte di ricezione bidirezionali non sono supportate per le operazioni in ingresso.

  6. Avviare l'applicazione BizTalk.

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

Generazione dello schema

È necessario generare lo schema per l'operazione POLLINGSTMT . Eseguire le attività seguenti durante la generazione dello schema usando il componente aggiuntivo Consume Adapter Service.

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 il quale è definito dallo schema corrispondente. Dopo aver generato lo schema, è necessario collegarlo ai messaggi dalla visualizzazione Orchestrazione del progetto BizTalk.

Per questo argomento, è necessario creare un messaggio per ricevere messaggi da Oracle.

Seguire questa procedura per creare messaggi e collegarli allo schema.

  1. Aggiungere un'orchestrazione al progetto BizTalk. In Esplora soluzioni fare clic con il pulsante destro del mouse sul nome del progetto BizTalk, scegliere Aggiungi e quindi fare clic su Nuovo elemento. Digitare un nome per l'orchestrazione BizTalk e quindi fare clic su Aggiungi.

  2. Aprire la finestra di visualizzazione orchestrazione del progetto BizTalk, se non è già aperta. Fare clic su Visualizza, scegliere Altre finestre e quindi fare clic su Visualizzazione orchestrazione.

  3. Nella visualizzazione orchestrazione fare clic destro su Messaggi e quindi scegliere Nuovo Messaggio.

  4. Fare clic con il pulsante destro del mouse sul messaggio appena creato e quindi scegliere Finestra Proprietà.

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

    Usare questo Per farlo
    Identificatore Digitare Receive.
    Tipo di messaggio Nell'elenco a discesa espandere Schemi e selezionare TablePolling.OracleDBBinding, dove TablePolling è il nome del progetto BizTalk. OracleDBBindingSchema è lo schema di risposta generato per l'operazione POLLINGSTMT nella tabella ACCOUNTACTIVITY.

    Importante Poiché il polling è un'operazione unidirezionale, lo schema generato dall'adapter non contiene un nodo di risposta e pertanto esiste un solo nodo radice nello schema. Se si usano tali schemi per un tipo di messaggio, è necessario identificare lo schema in base al nome file dello schema generato.

    Ad esempio, se si crea lo schema per un'operazione bidirezionale, i nodi nel file di schema con un nome OracleDBBindingSchema possono essere simili a "Richiesta" e "Risposta". Se si vuole creare un messaggio nell'orchestrazione che esegue il mapping allo schema della richiesta, è possibile identificare lo schema nell'elenco cercando OracleDBBindingSchema.Request. Tuttavia, nel caso dell'operazione di polling, poiché l'unico nodo è "POLLINGSTMT", non è facile identificare lo schema a cui si vuole eseguire il mapping perché gli schemi con nodi singoli non sono elencati come <schemafilename>.<rootnodename>. Tali schemi vengono invece elencati solo dal nome del file. In questo caso, l'unico modo per identificare lo schema è dal nome file dello schema, ad esempio OracleDBBindingSchema.

Configurazione dell'orchestrazione

È necessario creare un'orchestrazione BizTalk per usare BizTalk Server per ricevere messaggi di modifica dei dati basati sul polling da Oracle. In questa orchestrazione, l'adapter riceve la risposta eseguendo l'istruzione SELECT specificata per la proprietà di associazione PollingStatement . Il messaggio di risposta per l'istruzione SELECT viene salvato in un percorso FILE. Un'orchestrazione tipica per il polling del database Oracle conterrà:

  • Ricevere e inviare forme per ricevere messaggi da Oracle e inviare rispettivamente a una porta FILE.

  • Porta di ricezione unidirezionale per ricevere messaggi dal database Oracle.

    Importante

    Per gli scenari di polling in ingresso è necessario configurare sempre una porta di ricezione unidirezionale. Le porte di ricezione bidirezionali non sono supportate per le operazioni in ingresso.

  • Porta di trasmissione unidirezionale per inviare risposte di polling dal database Oracle.

    Un'orchestrazione di esempio è simile alla seguente.

    Orchestrazione per una query di polling per Oracle

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.

Forma Tipo di forma Proprietà
RiceviMessaggio Ricevere - Impostare Nome su ReceiveMessage

- Impostare Attiva su Vero
SalvaMessaggio Invia - Impostare Name su SaveMessage

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.

Porto Proprietà
OracleReceivePort - Impostare l'identificatore su OracleReceivePort

- Impostare Tipo su OracleReceivePortType

- Impostare il modello di comunicazione su unidirezionale

- Impostare la direzione di comunicazione su Ricevi
SaveMessagePort - Impostare l'identificatore su SaveMessagePort

- Impostare Tipo su SaveMessagePortType

- Impostare il modello di comunicazione su unidirezionale

- Impostare la direzione di comunicazione su Send

Specificare i messaggi per le forme di azione e connettersi alle porte

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

Forma Proprietà
RiceviMessaggio - Impostare Messaggio su Ricevi

- Impostare Operazione su OracleReceivePort.Polling.Request
SalvaMessaggio - Impostare Messaggio su Ricevi

- Impostare Operazione su SaveMessagePort.Polling.Request

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

È ora necessario compilare la soluzione BizTalk e distribuirla in 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 comporta:

  • Selezione di un host per l'applicazione.

  • Mappatura 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 l'orchestrazione BizTalk depositerà i messaggi provenienti da Oracle. Questi messaggi saranno in risposta all'istruzione di polling specificata per la porta di ricezione.

    • Definire un WCF-Custom fisico o WCF-OracleDB porta di ricezione unidirezionale. Questa porta interroga il database Oracle. Per informazioni su come creare porte di ricezione, vedere Configurare manualmente un'associazione di porte fisiche all'adapter di database Oracle. Assicurarsi di specificare le proprietà di associazione seguenti per la porta di ricezione.

      Proprietà di associazione Valore
      InboundOperationType Impostare questa opzione su Polling.
      PolledDataAvailableStatement Per questo esempio, impostare questa proprietà di associazione su:

      SELECT COUNT (*) FROM ACCOUNTACTIVITY

      Ciò garantisce che l'adapter esegua l'istruzione di polling solo quando la tabella ACCOUNTACTIVITY contiene dei record.
      PollingStatement Per questa proprietà di associazione, specificare un'istruzione SELECT per recuperare tutti i record dalla tabella ACCOUNTACTIVITY. Per questo esempio, impostare questa proprietà di associazione su:

      SELECT * FROM ACCOUNTACTIVITY FOR UPDATE
      PostPollStatement Specificare l'istruzione post-poll per spostare tutti i dati dalla tabella ACCOUNTACTIVITY a un'altra tabella. Per questo esempio, impostare questa proprietà di associazione su:

      BEGIN ACCOUNT_PKG.PROCESS_ACTIVITY(); END;

      Per altre informazioni sulle diverse proprietà di associazione, vedere Informazioni sulle proprietà di associazione dell'adapter Oracle Database.

      Annotazioni

      È consigliabile configurare il livello di isolamento delle transazioni e il timeout delle transazioni durante l'esecuzione di operazioni in ingresso tramite l'adapter Oracle Database. A tale scopo, è possibile aggiungere il comportamento del servizio durante la configurazione della porta di ricezione. Per istruzioni su come aggiungere il comportamento del servizio, vedere Configurare il livello di isolamento delle transazioni e il timeout delle transazioni.

Avvio dell'applicazione

È necessario avviare l'applicazione BizTalk per eseguire il polling del database Oracle. Per istruzioni sull'avvio di un'applicazione BizTalk, vedere Come avviare un'orchestrazione.

In questa fase assicurarsi di:

  • Il WCF-Custom o WCF-OracleDB porta di ricezione monodirezionale, che esegue il polling di Oracle usando l'istruzione SELECT specificata per la proprietà di associazione PollingStatement, è in esecuzione.

  • La porta di trasmissione FILE, che riceve messaggi dal database Oracle, è in esecuzione.

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

Esecuzione dell'operazione

Dopo aver eseguito l'applicazione, viene eseguito il set di azioni seguente, nella stessa sequenza:

  • L'adattatore esegue PolledDataAvailableStatement che restituisce un valore positivo, indicando all'adattatore di eseguire l'istruzione specificata per la proprietà di associazione PollingStatement.

  • L'adapter esegue l'istruzione SELECT per la proprietà di associazione PollingStatement e restituisce tutte le righe nella tabella ACCOUNTACTIVITY. La risposta dal database Oracle è simile alla seguente:

    <?xml version="1.0" encoding="utf-8" ?>   
    <POLLINGSTMT xmlns="http://Microsoft.LobServices.OracleDB/2007/03/POLLINGSTMT">  
      <POLLINGSTMTRECORD>  
        <POLLINGSTMTRECORD>  
          <TID>1</TID>   
          <ACCOUNT>100001</ACCOUNT>   
          <AMOUNT>500</AMOUNT>   
          <DESCRIPTION />   
          <TRANSDATE>2008-08-03T20:10:28</TRANSDATE>   
          <PROCESSED>n</PROCESSED>   
        <POLLINGSTMTRECORD>  
      <POLLINGSTMTRECORD>  
          ......  
          ......  
      </POLLINGSTMTRECORD>  
        ......  
        ......  
      </POLLINGSTMTRECORD>  
    </POLLINGSTMT>  
    
  • L'adapter esegue l'istruzione post-poll, che sposta tutti i dati dalla tabella ACCOUNTACTIVITY a un'altra tabella.

  • Dopo l'intervallo di polling, l'adapter esegue di nuovo PolledDataAvailableStatement. Poiché la tabella ACCOUNTACTIVITY non dispone ora di record, PolledDataAvailableStatement non restituisce un valore positivo e pertanto l'adapter non esegue l'istruzione specificata per la proprietà di associazione PollingStatement . Di conseguenza, il client dell'adapter non riceve alcun messaggio di polling.

  • Il client dell'adapter non riceverà altri messaggi di polling finché alcuni record non vengono inseriti in modo esplicito nella tabella ACCOUNTACTIVITY. Per inserire più record, è possibile eseguire lo script more_activity_data.sql fornito con gli esempi. Dopo aver eseguito questo script, alla successiva esecuzione di PolledDataAvailableStatement viene restituito un valore positivo. Di conseguenza, l'adapter esegue di nuovo l'istruzione di polling e i client dell'adapter ricevono di nuovo un messaggio di polling.

Annotazioni

L'adapter Oracle Database continuerà a eseguire il polling fino a quando non si disabilita esplicitamente la porta di ricezione dalla console di amministrazione di BizTalk Server.

Possibili eccezioni

Per informazioni sulle eccezioni che potrebbero verificarsi durante l'esecuzione di una query di polling nel database Oracle tramite BizTalk Server, vedere Eccezioni e gestione degli errori con l'adapter Oracle Database.

Migliori pratiche

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 e ricevere le porte per la stessa orchestrazione. Per altre informazioni sui file di associazione, vedere Riutilizzare le associazioni dell'adapter di database Oracle.

Vedere anche

Eseguire il polling di Oracle Database con BizTalk Server