Mer 20/03/2013 - Actualités

Xavier
Administrateur du site
Messages : 817
Enregistré le : mer. 22 juin 2011 18:25

Mer 20/03/2013 - Actualités

Message non lu par Xavier »

Alarmes


Contexte

Dans XT3, la seule fonction des alarmes était de déclencher l'affichage d'un message à un moment programmé.
La notion de répétition était assurée par le recalcul du prochain moment de déclenchement, il n'y avait ni date de début ni date de fin, mais un mécanisme permettait de ne pas déclencher les alarmes "en retard".
Le système était géré de façon simple, les données manipulées en mémoire et stockées sur disque étant exactement celles affichées dans l'outil.

Cette notion d'alarme en tant que donnée indépendante ne sera plus présente dans XT4.

Une alarme dans XT4 représentera désormais la même chose que dans les autres logiciels : un reminder facultativement attaché à un évènement.

Prenons par exemple le cas d'un RDV à 15h00 nécessitant 15 min de trajet :
  • Dans XT3 : programmation d'une alarme pour 14h45 avec comme texte "RDV à 15h00".
  • Dans XT4 : programmation d'un évènement pour 15h00 avec comme texte "RDV" et programmation d'une alarme 15 min avant. L'évènement reste dans l'agenda après déclenchement de l'alarme.

Modèle

Une fois ces alarmes créées ou importées, la première tâche de l'outil va être de les analyser afin de connaitre le moment où déclencher la prochaine alarme.
Dans XT3, il suffisait de lire les informations de la première alarme de la liste.

Dans XT4, il était envisagé de ne pas considérer les alarmes comme des objets séparés, mais uniquement comme un ensemble de propriétés de l'évènement, encadrées en rouge ci-dessous:
Event.png
Cela signifie que la recherche de la prochaine alarme devrait :
  • Boucler récursivement sur les tous dossiers de l'utilisateur.
  • Dans chaque dossier utilisateur :
    • Analyser les évènemenst récurrents avec alarme, ne pas considérer la date de l'évènement mais calculer celle de l'alarme, celle-ci pouvant se déclencher jusqu'à 5 jours avant l'évènement.
    • Boucler sur les dossiers techniques "Week" qui servent d'index au calendrier, et sous-boucler sur les évènements uniques. Afin de gérer les alarmes "en retard", il a d'abord été envisagé de gérer jusqu'à 8 semaines de retard, puis de stocker une date de dernière utilisation.
  • Il faudrait également analyser les évènements futurs, puisque qu'une alarme peut être programmée jusqu'à 5 jours avant son évènement.
On le voit, le code du service risquait d'être compliqué. Il serait appelé à l'ouverture de l'application, à l'import de données, mais également à chaque changement de date, avec donc le besoin de détecter les changements de date "naturels" (par opposition aux changements provoqués par le service de synchronisation de Windows).

On commençait à s'aventurer aux frontières du réalisable, jusqu'à la question fatidique : comment gérer une alarme qui a été déclenchée à l'heure programmée, repoussée par l'utilisateur et immédiatement suivie d'une fermeture de l'application ? Où stocker les informations de la nouvelle alarme, celle-ci ne pouvant pas se permettre d'écraser les données originales stockées sur l'évènement ? :? Stop.


Une nouvelle analyse va maintenant être lancée avec l'utilisation d'objets dédiés, qui seraient créés en plus des propriétés de l'évènement. Ça éliminerait au moins les problèmes de performances et de report d'alarme. On se rapprocherait donc du modèle XT3, mais avec le lien "Alarme -> Evènement" en plus (ce qui va créer des problèmes), et il faut maintenant analyser si les impacts de ce système ne seront pas pires que le précédent.
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Denis
Messages : 180
Enregistré le : jeu. 23 juin 2011 09:21

Re: Mer 20/03/2013 - Actualités

Message non lu par Denis »

En effet, il faut conserver (et stocker) la liste à plat des alarmes, qui doit être mise à jour via les changements sur les événements, ou via les reports des alarmes deja déclenchées.
Au préalable, bien analyser quel événement doit mettre à jour cette liste à plat et de quelle façon (cycle de vie des alarmes).
bon courage @+
Répondre