Présentation simple de l'algorithme de synchronisation Ce qui est pris en compte: Ajout de tache/Modification de tache/Suppression de tache Ajout de periodde/Modification de periode/Suppression de periode La synchro se fait de l'UI vers le serveur et du serveur vers l'UI. La synchro se fait aussi du local storage vers l'UI et de l'UI vers le local storage. Il existe un systeme de todoList qui va gerer la synchronisation des elements de l'UI vers le serveur. Elle sauvegarde les taches et temps editees et les taches et temps crees/supprimees si la synchronisation n'a pas ete executee. Cette todoList est sauvegardee au cours du temps dans le local Storage de façon a ne pas perdre les modification sur les donnees si une synchro n'a pas pu se produire. L'Ui sauvegarde aussi son état dans le local Storage avec les webtimerdata. Synchro Ui -> Serveur Lors de l'ajout d'une tache dans l'UI, une demande d'ajout asynchrone est envoyée au serveur. Si la synchronisation échoue alors le nouvel élément est ajouté à la todolist. Lors de la suppression d'une tache dans l'UI, une demande asynchrone de suppression est envoyée au serveur. Si la synchronisation échoue alors l'élément supprimé est ajouté à la todolist. La modification d'une tache ou d'un temps ainsi que l'ajout ou la modification d'un temps ou la suppression d'un temps, est poussé dans la todoList, puis est traité de manière asynchrone. Sinon selon un intervalle (à définir - disons 10 min) une méthode se lance pour pousser de façon asynchrone les changements non traités (présents dans la todolist) vers le serveur. Synchro UI <- Serveur Au démarrage de jTimer une demande est faite automatiquement pour récupérer les tâches existante dans la base sous condition que la date de modification soit supérieur à la date de dernière synchro au serveur (sauvegardée dans la todolist et égale à 0 au premier démarrage pour récupérer toutes les dates). Les éléments récupérées sont ensuite comparé aux éléments du webtimerdata pour l'ajout ou la maj. Les temps sont récupérées pour chacune des sous-tâches avec toujours cette date de modification qui permet d'écrémer un peu le nombre d'élément rapatrié. A intervalle régulier les nouvelles taches sont rapatriées ainsi que les taches mise à jour. Jusqu’à maintenant on supprimait simplement les éléments de la base donc à la mise à jour suivante ils n'étaient pas récupérés. Ce système peut être à changer pour les synchro de plusieurs UI car sinon il devient difficile de repérer pour l'ui les tâches et périodes qui ont été supprimées de la base par un tiers sans parcourir toute la liste des tâches. Peut être avec une variable dans la base qui spécifie si l'élément a été supprimé.
participants (1)
-
Olivia Bruce