Considerazioni sulla ricezione di notifiche di modifica del database tramite l'adattatore Oracle Database
In questo argomento vengono fornite alcune considerazioni e procedure consigliate che è necessario tenere presente durante l'uso dell'adattatore Oracle Database per ricevere notifiche di database da un database Oracle.
Considerazioni durante l'uso dell'adapter per la ricezione delle notifiche
È necessario considerare quanto segue durante l'uso dell'adapter Oracle Database per ricevere notifiche di query.
L'adapter Oracle Database passa semplicemente la notifica, che riceve dal database Oracle, ai client dell'adapter. L'adattatore non distingue tra le notifiche per operazioni diverse, ad esempio, l'adapter non dispone di informazioni se una notifica specifica è per un'operazione di inserimento o un'operazione di aggiornamento.
Il messaggio di notifica per un'operazione non è interessato dal numero di record interessati da tale operazione. Ad esempio, indipendentemente dal numero di record inseriti in una tabella di database Oracle, i client della scheda ricevono un solo messaggio di notifica.
È consigliabile che l'applicazione client dell'adapter contenga la logica per interpretare il tipo di notifica ricevuta dal database Oracle. Le applicazioni client della scheda possono eseguire questa operazione estraendo le informazioni nell'elemento <Info> del messaggio di notifica ricevuto. Ecco un esempio di messaggio di notifica ricevuto per un'operazione di inserimento.
<?xml version="1.0" encoding="utf-8" ?> <Notification xmlns="http://Microsoft.LobServices.OracleDB/2007/03/Notification/"> <Details> <NotificationDetails> <ResourceName>SCOTT.ACCOUNTACTIVITY</ResourceName> <Info>1</Info> <QueryId>0</QueryId> </NotificationDetails> </Details> <Info>Insert</Info> <ResourceNames> <string xmlns="http://schemas.microsoft.com/2003/10/Serialization/Arrays">SCOTT.ACCOUNTACTIVITY</string> </ResourceNames> <Source>Data</Source> <Type>Change</Type> </Notification>
Si noti il valore all'interno dell'elemento <Info> . Questo valore fornisce informazioni sull'operazione per cui è stato ricevuto il messaggio di notifica. L'applicazione deve avere la funzionalità per estrarre il valore all'interno dell'elemento <Info> e quindi in base al valore, eseguire attività successive. L'argomento Elaborazione dei messaggi di notifica per completare attività specifiche nel database Oracle contiene istruzioni su come estrarre il valore all'interno dell'elemento <Info> .
Idealmente, dopo che l'applicazione client riceve una notifica, deve aggiornare il record per il quale la notifica è già ricevuta in modo che le notifiche successive non siano per lo stesso record. Si consideri ad esempio una tabella ACCOUNTACTIVITY con una colonna Elaborata . Per tutti i nuovi record inseriti nella tabella ACCOUNTACTIVITY , il valore nella colonna Elaborato è sempre 'n'. Ad esempio, dopo un'operazione di inserimento, i record nella tabella ACCOUNTACTIVITY avranno un aspetto simile al seguente:
ID transazione account Elaborato 10001 n Per ottenere notifiche per il record appena inserito, il client dell'adapter imposta la proprietà di associazione NotificationStatement come:
SELECT * FROM SCOTT.ACCOUNTACTIVITY WHERE PROCESSED = ‘n’
Dopo aver ricevuto la notifica, l'applicazione client deve impostare il valore della colonna elaborata su 'y' in modo che l'istruzione di notifica non funzioni sul record che è già stato notificato . A questo scopo, l'applicazione client deve quindi eseguire un'operazione di aggiornamento nella tabella ACCOUNTACTIVITY . Dopo l'operazione Di aggiornamento, lo stesso record nella tabella ACCOUNTACTIVITY sarà simile al seguente:
ID transazione account Elaborato 10001 y Interessante, l'operazione di aggiornamento invierà nuovamente una notifica al client dell'adattatore e l'intero processo verrà ripetuto di nuovo. Quindi, l'applicazione client deve avere la logica necessaria per eliminare tali notifiche indesiderate.
Se la proprietà di associazione NotifyOnListenerStart è true, l'adapter invierà una notifica al client dell'adapter ogni volta che viene avviata la posizione di ricezione. Per altre informazioni su come usare la proprietà di associazione e interpretare il messaggio di notifica, vedere Ricezione delle notifiche di modifica del database Oracle dopo un'interruzione della posizione di ricezione.
Orchestrazione tipica per la ricezione di notifiche
Questa sezione descrive il flusso di orchestrazione tipico per la ricezione di notifiche tramite l'adapter Oracle Database.
La prima cosa che deve fare l'orchestrazione consiste nel controllare il tipo di notifica ricevuta. Le operazioni da verificare sono:
Se la notifica è stata ricevuta per il riavvio della posizione di ricezione.
Se la notifica è stata ricevuta per un'operazione in una tabella di database, ad esempio Inserisci, Aggiorna o Elimina.
L'orchestrazione deve includere una forma espressione e all'interno di una query xpath per decidere quale tipo di messaggio viene ricevuto.
Dopo aver disponibile il tipo di notifica, l'orchestrazione deve includere un blocco decisionale per eseguire azioni specifiche in base al tipo di notifica ricevuta. A questo scopo, l'orchestrazione deve includere una forma Decide . La forma Decide è costituita da un blocco Rule e da un blocco Else . All'interno del blocco Rule è necessario specificare la condizione e quindi includere forme di orchestrazione per eseguire determinate operazioni se la condizione viene soddisfatta. All'interno del blocco Else è necessario includere forme di orchestrazione per eseguire determinate operazioni se la condizione non viene soddisfatta.
Le raccomandazioni precedenti sono descritte in dettaglio nell'elaborazione dei messaggi di notifica per completare attività specifiche nel database Oracle usando BizTalk Server.
Vedere anche
Ricezione di notifiche di modifica del database Oracle tramite BizTalk Server