This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision | |||
|
wiki:epims4_1m1:developer:epcorearchitecture [2009/09/03 15:22] 132.168.73.9 |
wiki:epims4_1m1:developer:epcorearchitecture [2010/07/16 11:42] (current) 132.168.73.247 |
||
|---|---|---|---|
| Line 23: | Line 23: | ||
| **REMARQUE** : ServiceLocator recherche dans l’ApplicationContext qui lui est spécifié les beans correspondants à l’implémentation de IXXXService (définit dans spring-*.xml). | **REMARQUE** : ServiceLocator recherche dans l’ApplicationContext qui lui est spécifié les beans correspondants à l’implémentation de IXXXService (définit dans spring-*.xml). | ||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| ==== La pratique ==== | ==== La pratique ==== | ||
| L'objectif est d'obtenir la même architecture que celle décrite ci-dessus mais en utilisant les outils de génération automatique et en évitant au maximum de devoir définir des "template" maison. | L'objectif est d'obtenir la même architecture que celle décrite ci-dessus mais en utilisant les outils de génération automatique et en évitant au maximum de devoir définir des "template" maison. | ||
| Line 252: | Line 234: | ||
| == Règles de développement == | == Règles de développement == | ||
| - | Les méthodes pour l'écriture des données sont de la forme : | + | Les méthodes pour __l'écriture des données__ sont de la forme : |
| * public Sample saveSample(Sample sample)throws EPimsServiceException; Sauvegarde d'un élément (ici Sample) déjà existant. L'objet sauvegardé est retourné. | * public Sample saveSample(Sample sample)throws EPimsServiceException; Sauvegarde d'un élément (ici Sample) déjà existant. L'objet sauvegardé est retourné. | ||
| Line 258: | Line 240: | ||
| * public void deleteSample(Sample sample) throws EPimsServiceException; Suppression d'un élément | * public void deleteSample(Sample sample) throws EPimsServiceException; Suppression d'un élément | ||
| - | Pour les accès en lecture, les services sont écrits selon le principe suivant : | + | Pour les__ accès en lecture__, les services sont écrits selon le principe suivant : |
| - | * on définit un objet enum contenant un ensemble de requêtes retournant des objets (du type de l'entité que représente le service) en appliquant des filtres specifics. | + | |
| - | * on définit une méthode générique (getSamples(enum.query, args)) permettant d'exécuter ces requêtes. Cette méthode reçoit une des requêtes prédéfinies en paramètre ainsi que le/les argument(s) dont peut avoir besoin cette requête, et retourne une liste des valeurs resultantes. | + | L'accès en écriture est pour l'essentiel géré par des requêtes. Ces requêtes retournent des objets du domaines suivant des filtres / caractéristiques bien définis. Par conséquent, on appellera la requête X qui retourne les études "blabla" par la méthode List getStudy(X) |
| + | Dans l'interface Service (XXXService), on définit un ensemble d'enum. Chacun des enum étant des requêtes qui retourne un même type de donnée. Ainsi, on aura: | ||
| + | * Les méthodes : List getObjA(ObjAQueries), List getObjB(ObjBQueries) et mêmes méthodes avec des paramètres pour les paramètres des queries. | ||
| + | * enum ObjAQueries qui définit un ensemble de requetes pouvant être passé en paramètre à getObjA et retournant des objets de type ObjA | ||
| + | * enum ObjBQueries qui définit un ensemble de requêtes pouvant être passé en paramètre à getObjB et retournant des objets de type ObjB | ||
| + | |||
| + | Pour les données annexes de type autre que des objets du domaine (nombre d'acquisitions, liste des modèle de spectro disponible, ...) on définit : | ||
| + | * une méthode List getAssociatedXXXObjects(AssociatedXXXQueries) | ||
| + | * enum AssociatedXXXQueries qui définit un ensemble de requêtes pouvant être passé en paramètre à getAssociatedXXXObjects | ||
| Il est certain que certaines actions ne peuvent être appliquées par une simple requête (aussi compliquée qu'elle puisse être !!), à ce moment là, les services peuvent aussi avoir des méthodes exécutant des tâches partiulières. | Il est certain que certaines actions ne peuvent être appliquées par une simple requête (aussi compliquée qu'elle puisse être !!), à ce moment là, les services peuvent aussi avoir des méthodes exécutant des tâches partiulières. | ||