Vidéo 33 • Algorithmique Avancée
Delta-Sync :
L'Indirection de Génie
Apprenez à utiliser HListeRubrique et l'indirection pour ne synchroniser que les rubriques réellement modifiées.
Pourquoi envoyer tout le fichier ?
Méthode Novice (Full)
Renvoi de l'intégralité du buffer HFSQL à chaque modification.
Méthode Expert (Delta)
Seulement les rubriques qui diffèrent de l'état initial.
Laboratoire : Full vs Delta Sync
L'Algorithme de l'Expert
Le rôle de l'Indirection
Puisque WinDev n'a pas de fonction native "Diff", nous construisons la nôtre :
1. Charger l'enregistrement dans un Tableau Associatif témoin.
2. Après saisie, parcourir HListeRubrique.
3. Utiliser {NomFichier + "." + NomRubrique} pour lire la valeur actuelle et la comparer au témoin.
Le Code de l'Extraction
// 1. Capture de l'image initiale (Avant modification) taTémoin est un Tableau Associatif de variantes POUR TOUTE sRubrique DE HListeRubrique(F_CLIENT, hListeRubriqueClé) taTémoin[sRubrique] = {F_CLIENT + "." + sRubrique, indRubrique} FIN // ... L'utilisateur valide sa saisie ... // 2. Parcours des rubriques pour isoler le DELTA POUR TOUTE sRubrique DE HListeRubrique(F_CLIENT, hListeRubriqueClé) vActuel est une variante = {F_CLIENT + "." + sRubrique, indRubrique} SI vActuel <> taTémoin[sRubrique] ALORS // On n'ajoute que cette différence au JSON de synchro stPayload.ChampsModifiés[sRubrique] = vActuel FIN FIN