WindevExpert

Vidéo 36 • Expérience Utilisateur SaaS

Résolution de Conflits :
L'Arbitrage UI

Découvrez comment transformer un échec technique de synchronisation en une interface de décision élégante pour vos clients.

L'État Civil de la Donnée

Cycle de Vie Classique

Modification Locale
Collision Détectée
ACTION : Le Worker marque la ligne locale comme "IN_CONFLICT".

La Méthode de l'Expert

L'application ne bloque pas, elle demande :
"Voici ce que vous avez tapé, voici ce que le serveur possède. Lequel est le bon ?"

RÉSULTAT : 0 frustration, 100% de fiabilité.
Conflit sur Article #PROD-77

Laboratoire : Interface de Fusion

Version Locale (La vôtre)
Prix de vente
1.50 €
Stock total
42
Version Cloud (Serveur)
Prix de vente
1.20 €
Stock total
42

"Le prix a été modifié sur le Cloud pendant que vous prépariez votre saisie."

L'Arbitrage Technique

Si l'utilisateur choisit LOCAL :

L'application renvoie la donnée au Cloud avec un flag bForceOverride = Vrai. Le serveur accepte d'écraser sa version même si elle est plus récente.

Si l'utilisateur choisit CLOUD :

L'application écrase simplement sa base locale avec les données reçues du serveur. Le conflit est résolu.

Décision Finale
OVERWRITE_CLOUD_OK

Code de Finalisation

// 1. On ouvre la fenêtre de résolution (Slide 2)
sChoix est une chaîne = Ouvre(FEN_Résolution_Conflit, stLocal, stCloud)

SELON sChoix
    CAS "KEEP_LOCAL"
        // On demande au SyncEngine de forcer le passage
        clMonSync.ForceSync(F_PRODUIT.ID, Vrai)
        
    CAS "KEEP_CLOUD"
        // On écrase notre local avec le Cloud
        HBufferVersEnreg(F_PRODUIT, stCloud)
        HModifie(F_PRODUIT)
FIN

// On enlève le flag de conflit pour que le Worker puisse repartir
F_PRODUIT.bEnConflit = Faux
HModifie(F_PRODUIT)