Considérations relatives à la réception de notifications de modification de base de données à l’aide de l’adaptateur Oracle Database
Cette rubrique présente certaines considérations et meilleures pratiques que vous devez garder à l’esprit lors de l’utilisation de l’adaptateur Oracle Database pour recevoir des notifications de base de données à partir d’une base de données Oracle.
Considérations relatives à l’utilisation de l’adaptateur pour recevoir des notifications
Vous devez tenir compte des éléments suivants lors de l’utilisation de l’adaptateur Oracle Database pour recevoir des notifications de requête.
L’adaptateur Oracle Database transmet simplement la notification, qu’il reçoit de la base de données Oracle, aux clients de l’adaptateur. L’adaptateur ne fait pas de distinction entre les notifications pour différentes opérations, c’est-à-dire que l’adaptateur ne dispose d’aucune information indiquant si une notification particulière concerne une opération d’insertion ou une opération de mise à jour.
Le message de notification d’une opération n’est pas affecté par le nombre d’enregistrements affectés par cette opération. Par exemple, quel que soit le nombre d’enregistrements insérés dans une table de base de données Oracle, les clients de l’adaptateur ne reçoivent qu’un seul message de notification.
Nous recommandons que l’application cliente de l’adaptateur contienne la logique permettant d’interpréter le type de notification reçue de la base de données Oracle. Les applications clientes de l’adaptateur peuvent le faire en extrayant les informations dans l’élément <Info> du message de notification reçu. Voici un exemple de message de notification reçu pour une opération Insert.
<?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>
Notez la valeur dans l’élément <Info> . Cette valeur fournit des informations sur l’opération pour laquelle le message de notification a été reçu. Votre application doit avoir la fonctionnalité permettant d’extraire la valeur dans l’élément <Info> , puis, en fonction de la valeur, d’effectuer les tâches suivantes. La rubrique Traitement des messages de notification pour effectuer des tâches spécifiques dans Oracle Database contient des instructions sur la façon d’extraire la valeur dans l’élément <Info> .
Dans l’idéal, une fois que l’application cliente a reçu une notification, elle doit mettre à jour l’enregistrement pour lequel la notification est déjà reçue afin que les notifications suivantes ne concernent pas le même enregistrement. Par exemple, considérez une table ACCOUNTACTIVITY qui a une colonne Traitée . Pour tous les nouveaux enregistrements insérés dans la table ACCOUNTACTIVITY , la valeur dans la colonne Traité est toujours « n ». Par exemple, après une opération d’insertion, les enregistrements de la table ACCOUNTACTIVITY se présentent comme suit :
ID de transaction de compte Processed (Traitée) 10001 n Pour obtenir des notifications pour l’enregistrement nouvellement inséré, le client de l’adaptateur définit la propriété de liaison NotificationStatement comme suit :
SELECT * FROM SCOTT.ACCOUNTACTIVITY WHERE PROCESSED = ‘n’
Après avoir reçu la notification, l’application cliente doit définir la valeur de la colonne Traitée sur « y » afin que l’instruction de notification ne fonctionne pas sur l’enregistrement déjà notifié. Pour ce faire, l’application cliente doit donc effectuer une opération de mise à jour sur la table ACCOUNTACTIVITY . Après l’opération De mise à jour, le même enregistrement dans la table ACCOUNTACTIVITY se présente comme suit :
ID de transaction de compte Processed (Traitée) 10001 y Fait intéressant, l’opération de mise à jour envoie à nouveau une notification au client de l’adaptateur et l’ensemble du processus est répété à nouveau. Par conséquent, l’application cliente doit avoir la logique requise pour ignorer ces notifications indésirables.
Si la propriété de liaison NotifyOnListenerStart a la valeur true, l’adaptateur envoie une notification au client de l’adaptateur chaque fois que l’emplacement de réception démarre. Pour plus d’informations sur l’utilisation de la propriété de liaison et l’interprétation du message de notification, consultez Réception de notifications de modification de base de données Oracle après une répartition de l’emplacement de réception.
Orchestration classique pour la réception de notifications
Cette section décrit le flux d’orchestration classique pour la réception de notifications à l’aide de l’adaptateur Oracle Database.
La première chose que l’orchestration doit faire consiste à case activée le type de notification reçue. Les éléments à case activée sont les suivants :
Indique si la notification a été reçue pour le redémarrage de l’emplacement de réception.
Indique si la notification a été reçue pour une opération sur une table de base de données, telle que Insert, Update ou Delete.
L’orchestration doit inclure une forme Expression , et dans cette requête xpath, pour déterminer le type de message reçu.
Une fois le type de notification disponible, l’orchestration doit inclure un bloc de décision pour effectuer des actions spécifiques en fonction du type de notification reçu. Pour ce faire, l’orchestration doit inclure une forme Décider . La forme Décider se compose d’un bloc Rule et d’un bloc Else . Dans le bloc Règle , vous devez spécifier la condition, puis inclure des formes d’orchestration pour effectuer certaines opérations si la condition est remplie. Dans le bloc Else , vous devez inclure des formes d’orchestration pour effectuer certaines opérations si la condition n’est pas remplie.
Les recommandations précédentes sont décrites en détail dans Traitement des messages de notification pour effectuer des tâches spécifiques dans Oracle Database à l’aide de BizTalk Server.
Voir aussi
Réception de notifications de modification de base de données Oracle à l’aide de BizTalk Server