Pour recevoir des mises à jour, les clients HTTP doivent effectuer une requête manuelle. L'HTTP ne fournit pas de méthode automatique permettant aux serveurs de notifier les clients HTTP d'événements ou de changements. Pour réduire le trafic inutile lors de la requête, OData fournit un paramètre $deltatoken qui ne renvoie que les éléments qui ont changé ou ont été ajoutés.

Dans le cas des VariableValueGroups, $deltatoken fournit les valeurs des variables mises à jour tout en ignorant les variables qui n'ont pas changé depuis la dernière requête.

Ce processus fonctionne de la manière suivante :

Tout d'abord, le client HTTP lit la propriété VariableValues d'un groupe.

GET http://my_server:3580/nivariable/VariableValueGroups('1587dcd4a87d118ae3ddd0fce09246f6')/VariableValues?$format=json

Le client HTTP reçoit l'ensemble de données initial. Pour demander le changement delta, le client HTTP utilise l'URI suivant, comme indiqué par la propriété _delta, en utilisant l'horodatage de la lecture de VariableValue pour $deltatoken.

GET http://my_server:3580/nivariable/VariableValueGroups('1587dcd4a87d118ae3ddd0fce09246f6')/VariableValues?$format=json&$deltatoken=1305692428170

S'il n'y a pas de changement depuis le GET précédent, les résultats sont vides. Pour obtenir à nouveau les résultats, suivez l'URI delta comme spécifié dans la dernière réponse.

GET http://my_server:3580/nivariable/VariableValueGroups('1587dcd4a87d118ae3ddd0fce09246f6')/VariableValues?$format=json&$deltatoken=1305692428170

Remarque Demander une valeur delta qui n'a pas changé n'entraîne pas d'erreur pour le client HTTP.

Requête de variables liées à des E/S externes ou d'autres variables partagées à intervalles fixes

Si une variable partagée est liée à une E/S externe ou à une autre variable partagée, une mise à jour de la valeur peut être fournie avec un horodatage plus ancien que le deltatoken. Par exemple, vous faites une demande de changement delta à l'instant t, et un nouveau changement de valeur survient à t+1, mais avec un horodatage indiquant t-1. La prochaine fois que vous obtenez un autre changement delta, le serveur ne traitera plus l'horodatage t-1 comme nouvelle valeur. Pour éviter ce problème, effectuer les requêtes de valeurs des variables à intervalles fixes au lieu d'utiliser le lien $delta.