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 su 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 operazioni di polling2.

Configurazione di un'operazione di polling con le proprietà di associazione dell'adapter di 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.

Binding, proprietà 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 i dati sono disponibili 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'adattatore deve continuare a eseguire il polling indipendentemente dal fatto che la tabella sottoposta a 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 polling. 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, determinato dalla proprietà di associazione PolledDataAvailableStatement .
PollingAction Specifica l'azione per l'operazione di polling. You can determine the polling action for a specific operation from the metadata you generate for the operation using the Consume Adapter Service Add-in.
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 ed esegue continuamente l'istruzione di polling, se i dati sono disponibili nella tabella di cui viene eseguito il polling. Se nella tabella non sono disponibili dati, l'adattatore viene ripristinato per eseguire l'istruzione di polling all'intervallo di polling specificato. L'impostazione predefinita è 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, leggere altre informazioni.

Come illustra il polling in questo argomento

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.

Nota

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 dove la tabella sottoposta a polling (ACCOUNTACTIVITY) contiene dati. In questo esempio è possibile impostare questa proprietà di associazione come:

    SELECT COUNT (*) FROM ACCOUNTACTIVITY  
    

    Ciò garantisce che l'adapter esegua l'istruzione di polling solo quando la tabella ACCOUNTACTIVITY contiene alcuni 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. Una volta eseguita questa operazione, la volta successiva che verrà eseguita l'istruzione specificata per PollingStatement , non recupererà alcun dato.

  • 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 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 sul database Oracle tramite l'adapter Oracle Database con BizTalk Server comporta le attività procedurali seguenti descritte in Blocchi predefiniti per sviluppare applicazioni BizTalk con Oracle Database. Per configurare l'adattatore per eseguire 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 è sempre necessario configurare 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. Dal 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 dell'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 con il pulsante destro del mouse 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 Per
    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'adattatore non contiene un nodo di risposta e quindi è presente 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". Per creare un messaggio nell'orchestrazione mappato 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 file. In tal caso, l'unico modo per identificare lo schema è costituito 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'adattatore 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 è sempre necessario configurare 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 messaggio

Assicurarsi di specificare le proprietà seguenti per ognuna delle forme del messaggio. I nomi elencati nella colonna Shape sono i nomi delle forme di messaggio visualizzate nell'orchestrazione appena menzionata.

Forma Tipo di forma Proprietà
ReceiveMessage Ricevere - Impostare Il nome su ReceiveMessage

- Impostare Attiva su True
SaveMessage Send - Impostare il nome 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.

Porta Proprietà
OracleReceivePort - Impostare l'identificatore su OracleReceivePort

- Impostare il tipo su OracleReceivePortType

- Impostare il modello di comunicazionesu unidirezionale

- Impostare la direzione di comunicazione da ricevere
SaveMessagePort - Impostare l'identificatore su SaveMessagePort

- Impostare Tipo su SaveMessagePortType

- Impostare il modello di comunicazionesu unidirezionale

- Impostare la direzione di comunicazione su Invia

Specificare i messaggi per le forme azione e connettersi 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 il messaggio da ricevere

- Impostare l'operazione su OracleReceivePort.Polling.Request
SaveMessage - Impostare il messaggio da ricevere

- Impostare l'operazione su SaveMessagePort.Polling.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 l'orchestrazione BizTalk rilascia i messaggi 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 esegue il polling del 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.

      Binding, proprietà 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 alcuni 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.

      Nota

      È 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. È possibile farlo aggiungendo 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 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 unidirezionale, che esegue il polling di Oracle usando l'istruzione SELECT specificata per la proprietà di associazione PollingStatement , è in esecuzione.

  • La porta di invio 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, il set di azioni seguente viene eseguito nella stessa sequenza:

  • L'adapter esegue polledDataAvailableStatement che restituisce un valore positivo che indica l'adapter per 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 della 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 contiene record, PolledDataAvailableStatement non restituisce un valore positivo e quindi 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à più messaggi di polling finché alcuni record non vengono inseriti in modo esplicito nella tabella ACCOUNTACTIVITY. Per inserire altri record, è possibile eseguire lo script more_activity_data.sql fornito con gli esempi. Dopo aver eseguito questo script, la prossima volta che PolledDataAvailableStatement viene eseguito, restituisce 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.

Nota

L'adapter Oracle Database continuerà a eseguire il polling fino a disabilitare in modo esplicito 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 usando BizTalk Server, vedere Eccezioni e gestione degli errori con l'adapter Oracle Database.

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 e le porte di ricezione 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 del database Oracle usando BizTalk Server