User Tools

Site Tools


wiki:epims4_0:developer:epbackcache

Cache pour les objets Analysis

Spécifications

L'objectif est de maintenir la liste des Analysis non seulement lors de l'exécution d'eP-Back mais également d'une exécution sur l'autre. Ceci permet de faire un refresh light afin de ne lire que les nouvelles acquisitions ….. D'un point de vue techno, le choix d'XStream a été fait.

Plutot que de gérer le cache d'une liste, nous avons choisi de maintenir un cache sur les Analysis elles-mêmes. ( En effet, le cache de la liste oblige à faire automatiquement et/ou manuellement des refresh de la liste relativement souvent : dès qu'une nouvelle acquisition a été réalisée sur l'instrument par exemple …. )

Une configuration est une association instrument, donc type de format, et répertoire source (entre autres… voir chapitre epbackconfig).
Lors de l'accès à une configuration donnée, le DataFormat associé doit permettre d'obtenir la liste des Analysis pour le répertoire source spécifié. Ce sont donc aux implémentations de DataFormat (ou aux factory qu'ils utilisent ) de s'assurer que les Analysis qu'ils référencent ne sont pas dans le cache avant de les créer effectivement. Pour cela, ils font appel à un gestionnaire de cache qui permet de récupérer les Analysis qui ont déjà été créées. Par conséquent, seules les Analysis n'ayant jamais été accédées sont créées.

Le gestionnaire de cache enregistre les caractéristiques des Analysis de chaque configuration dans un fichier séparé. Si l'on souhaite un rafraîchissement complet, il suffit de supprimer le fichier cache associé à la configuration avant l'ouverture d'eP-Back.

Le gestionnaire de cache (CacheManager) gère une liste d'Analysis pour chaque configuration. Lors du premier accès à une configurations, le CacheManager crée son cache à partir du fichier correspondant à la configuration. Par la suite, il doit permettre une mise à jour et la sauvegarde dans le fichier cache de cette liste. La mise à jour comprend l'ajout de nouvelles acquisitions mais également la suppression des acquisitions qui ont été supprimées physiquement …. Il a été choisi de sauvegarder les changements dans le fichier “cache” lors d'un changement de configuration et à la fin de l'application.

Implem

Architecture globale de eP-Back

Modification de l'interface Analysis pour que toutes les informations soient présentes (la sérialisation/désérialisation d'un objet Analysis permet donc de conserver l'ensemble des infos nécessaire). Deux propriétés sont exclus lors de la sauvegarde des objets Analysis dans le fichier cache : le DataFormat (présent dans les implémentations de Analysis) et les fichiers associés. Néanmoins, les fichiers attachés sont recalculés une seule fois lors du premier accès à cette propriété.

L'interface DataFormat n'est pas modifié, par contre les implémentations utilisent un IFactory. FIXME: A mettre au niveau de l'interface ?! Une implémentation abstraite de IFactory utilise, dans un premier temps, le cache pour récupérer les Analysis et fait ensuite appel si nécessaire à la méthode abstraite createAnalysis (spécifique au format des données). Le gestionnaire de cache gère une Map par configuration, cette Map étant référencée par le nom de la configuration. Chaque Map, contient une liste d'Analysis par nom de fichier résultat d'acquisition. Le nom de fichier résultat d'acquisition est absolue. Dans le cas où le répertoire source associé à la configuration change de path, le fichier cache devra être recréé.

epb_cachemgmt.jpg Changement de configuration et mise a jour du cache

FIXME: Pour le noter quelque part pour le moment : Lors de la création des objets Analysis depuis le fichier cache, on utilise XStream. La propriété DataFormat n'a pas été sauvegardé (positionnée comme transiant) et est par conséquent nulle ! Ce qui pose problème lors de l'exécution de certaine méthode ! Pour le moment, mais à revoir !!; les implémentations d'Analysis (nécessitant que cette propriété soit positionnée) doivent implémenter la méthode setDataFormat. Lorsque les objets Analysis sont retournés par le CacheManager, la classe AbstractCacheFactory vérifie (en utilisant l'introspection) que la méthode existe et positionne la valeur dans l'affirmative. Le problème est que cette méthode est appelé à chaque fois que l'on accède à l'analyse dans le cache et non pas QUE la première fois que l'objet est créé à partir du fichier !!!





(Continuez vers la suite de la documentation ⇒ epbackanalysis)

wiki/epims4_0/developer/epbackcache.txt · Last modified: 2008/10/02 10:21 (external edit)