WindevExpert

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.

IMPACT : 250 KB / Requête

Méthode Expert (Delta)

Seulement les rubriques qui diffèrent de l'état initial.

IMPACT : 0.5 KB / Requête

Laboratoire : Full vs Delta Sync

CLIENT_ID: 7F4D
Nom
DUPONT Jean
Email
j.dupont@mail.com
Téléphone (Modifié)
Stats Réseau
Poids Transféré 0 KB
Latence API 0ms

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.

Moteur de Comparaison
TÉMOIN
"06..."
ACTUEL
"07..."

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