Considerazioni sulla ricezione di notifiche di query tramite l'adapter SQL
In questo argomento vengono fornite alcune considerazioni e procedure consigliate da tenere presente durante l'uso dell'adapter SQL per ricevere notifiche di query da un database SQL Server.
Considerazioni durante l'uso dell'adapter per la ricezione delle notifiche
È necessario considerare quanto segue durante l'uso dell'adapter SQL per ricevere notifiche di query:
L'adapter SQL riceve la notifica di query da SQL Server e quindi passa semplicemente la notifica ai client della scheda. L'adapter non distingue tra le notifiche per operazioni diverse, ad esempio l'adapter non dispone di informazioni sul fatto che una notifica specifica sia per un'operazione di inserimento o per 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, aggiornati o eliminati in una tabella di database SQL Server, il client della scheda riceve un solo messaggio di notifica.
È consigliabile che l'applicazione client dell'adapter contenga la logica per interpretare il tipo di notifica ricevuta da SQL Server. Il tipo di notifica può essere determinato estrarre le informazioni da, l'elemento <Info> del messaggio di notifica ricevuto. Ecco un esempio di messaggio di notifica ricevuto per un'operazione di inserimento:
<Notification xmlns="http://schemas.microsoft.com/Sql/2008/05/Notification/"> <Info>Insert</Info> <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 Elabora messaggi di notifica per completare attività specifiche in SQL usando BizTalk Server contiene istruzioni su come estrarre il valore all'interno dell'elemento <Info>. Un'esercitazione dettagliata che esegue attività simili è disponibile anche all'esercitazione 2: Employee - Purchase Order Process usando l'adapter SQL.
Idealmente, dopo che l'applicazione client riceve una notifica per un record specifico, tale record deve essere aggiornato in modo che non vengano ricevute notifiche aggiuntive. Si consideri ad esempio una tabella Employee con una colonna Status . Per tutti i nuovi record inseriti nella tabella Employee , il valore nella colonna Status è sempre "0" in modo che la tabella sia simile alla seguente:
Nome dipendente Stato John 0 Per ricevere notifiche per il record appena inserito, il client dell'adapter imposta la proprietà di associazione NotificationStatement come:
SELECT Employee_ID, Name FROM dbo.Employee WHERE Status=0
Nota
È necessario specificare i nomi di colonna nell'istruzione, come illustrato in questa istruzione SELECT. È inoltre necessario specificare sempre il nome della tabella insieme al nome dello schema. Ad esempio, dbo. Dipendente.
Dopo aver ricevuto la notifica, l'applicazione client deve reimpostare il valore della colonna Stato su "1" in modo che l'istruzione di notifica non funzioni di nuovo sul record. A questo scopo, l'applicazione client deve eseguire un'operazione di aggiornamento nella tabella Employee . Dopo l'operazione Di aggiornamento, lo stesso record nella tabella Employee sarà simile al seguente:
Nome dipendente Stato John 1 Interessante, l'operazione di aggiornamento invierà nuovamente una notifica al client dell'adattatore e l'intero processo verrà ripetuto di nuovo, pertanto, l'applicazione client deve avere la logica necessaria per eliminare tali notifiche indesiderate.
Se la proprietà di associazione NotifyOnListenerStart è true, il client dell'adapter riceverà un messaggio di notifica 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 Ricevere notifiche di query dopo un'interruzione della posizione di ricezione in SQL usando BizTalk Server.
Orchestrazione tipica per la ricezione di notifiche
Questa sezione descrive il flusso di orchestrazione tipico per la ricezione di notifiche tramite l'adapter SQL.
La prima cosa che deve fare l'orchestrazione consiste nel determinare il tipo di notifica ricevuta, tra cui:
Se la notifica è stata ricevuta dopo 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 questa, una query xpath per decidere quale tipo di messaggio viene ricevuto.
Dopo aver determinato il tipo di notifica, l'orchestrazione deve includere un blocco decisionale per eseguire azioni specifiche in base al tipo di notifica ricevuto. A questo scopo, l'orchestrazione deve includere una forma Decide , che include un blocco Rule e 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.
I dettagli dei requisiti precedenti sono descritti in Messaggi di notifica del processo per completare attività specifiche in SQL usando BizTalk Server. Un'esercitazione dettagliata è disponibile anche in Esercitazione 2: Employee - Purchase Order Process usando l'adapter SQL.