30
Cette création est mise à disposition selon le Contrat Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ ou par courrier postal à Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA. Architecture ACube Lise 4.0 Journée Contributeur ACube Kube Hotel 22 octobre 2008 Atos Origin - CRIF

Cette création est mise à disposition selon le Contrat Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique disponible

Embed Size (px)

Citation preview

Page 1: Cette création est mise à disposition selon le Contrat Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique disponible

Cette création est mise à disposition selon le Contrat Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ ou par courrier postal à Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Architecture ACube Lise 4.0

Journée Contributeur ACube

Kube Hotel

22 octobre 2008

Atos Origin - CRIF

Page 2: Cette création est mise à disposition selon le Contrat Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique disponible

2

Plan

Enjeux majeurs Architecture Générale Couche MVC Couches Service et Persistance Génération de codes Gestion des logs Gestion de la configuration Documentation Démonstration

Page 3: Cette création est mise à disposition selon le Contrat Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique disponible

3

Plan

Enjeux majeurs Architecture Générale Couche MVC Couches Service et Persistance Génération de codes Gestion des logs Gestion de la configuration Documentation Démonstration

Page 4: Cette création est mise à disposition selon le Contrat Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique disponible

4

Enjeux Majeurs

Se munir d’une plateforme d’extension, pourquoi faire?

Renforcer l’apport de la communauté via la réalisation d’extensions

Séparer l’évolution du framework de l’ajout de fonctionnalités

Augmenter l’attractivité du framework

A chaque projet correspond un lot d’extensions

Page 5: Cette création est mise à disposition selon le Contrat Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique disponible

5

Plan

Enjeux majeurs

Architecture Générale Couche MVC Couches Service et Persistance Génération de codes Gestion des logs Gestion de la configuration Documentation Démonstration

Page 6: Cette création est mise à disposition selon le Contrat Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique disponible

6

Architecture de Lise 4.0

Page 7: Cette création est mise à disposition selon le Contrat Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique disponible

7

Plan

Enjeux majeurs Architecture Générale

Couche MVC Couches Service et Persistance Génération de codes Gestion des logs Gestion de la configuration Documentation Démonstration

Page 8: Cette création est mise à disposition selon le Contrat Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique disponible

8

Couche MVC

ControllerController

ViewResolverViewResolver

ModelAndViewModelAndView

HandlerMappingHandlerMapping

ViewView

5

1

2

3

4

DispatcherServletDispatcherServlet

acube.framework.mvc.view.*

acube.framework.mvc.controller.*

Page 9: Cette création est mise à disposition selon le Contrat Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique disponible

9

AbstractACubeController

ACubeFileController AbstractMultiFormatController

ACubeLoginController DefaultAcubeController

MultiFormat

AbstractController

MultiActionController

Spring MVC

ACube MVCAbstractACubeMultiActionController

BaseCommandController

AbstractCommandController

AbstractMultiActionMultiFormatController

ACubeUploadController ACubeDownloadController

Couche MVC

Page 10: Cette création est mise à disposition selon le Contrat Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique disponible

10

AbstractACubeXsltView

DefaultAcubeXsltView AbstractACubeXslFoView

Spring MVC

ACube MVC

AbstractACubeExcelViewAbstractACubePdfView

AbstractPdfViewAbstractXsltView AbstractExcelView JasperReportsMultiFormatView

JasperReportsView

AbstractView

FOP

iText POIMOXy Jasper

Couche MVC

pdfpngrtf

[…]

pdfxls

htmlcsv

Page 11: Cette création est mise à disposition selon le Contrat Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique disponible

11

Plan

Enjeux majeurs Architecture Générale Couche MVC

Couches Service et Persistance Génération de codes Gestion des logs Gestion de la configuration Documentation Démonstration

Page 12: Cette création est mise à disposition selon le Contrat Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique disponible

12

Couches Services et Persistance

GenericService<Entity,Id>AbstractService<Dao>

FileSystemFileService

DefaultService<Entity,Id,Dao>AbstractACubeFileService

Exists<Id> FindBy<Entity,Id>FindAll<Entity> Save<Entity> Remove<Id>

(Architecture semblable pour les DAO)

Page 13: Cette création est mise à disposition selon le Contrat Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique disponible

13

Lien entre les couches MVC, Service et Persistance fait via Spring IOC (Indépendance des couches)

Besoin classique: service à un DAO

Hypothèse supplémentaire: DAO JPA

Pas de code!

Couches Services et Persistance

Page 14: Cette création est mise à disposition selon le Contrat Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique disponible

14

public interface ProductService extends GenericService

<Product, Integer>{}

public class ProductController […] {ProductService productService;

[…] }

Lien Contrôleur -> Service « classique » (un DAO)

public class ProductServiceImpl extends DefaultService<Product, Integer, ProductDao>

implements ProductService {}

<bean name="productController"class="my.package.ProductController">

<property name="productService"ref="productServiceImpl" />

</bean>

ApplicationContext(Spring IOC)

Couches Services et Persistance

Page 15: Cette création est mise à disposition selon le Contrat Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique disponible

15

Plan

Enjeux majeurs Architecture Générale Couche MVC Couches Service et Persistance

Génération de codes Gestion des logs Gestion de la configuration Documentation Démonstration

Page 16: Cette création est mise à disposition selon le Contrat Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique disponible

16

Génération de codes

Modélisation et de génération du

code

EclipseLink WorkBench

1

*.java *.java

*.java *.xml

VO et BOFichiers de

mapping

2

3

4

5

Squelette du programme Bases de Données

Page 17: Cette création est mise à disposition selon le Contrat Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique disponible

17

Plan

Enjeux majeurs Architecture Générale Couche MVC Couches Service et Persistance Génération de codes

Gestion des logs Gestion de la configuration Documentation Démonstration

Page 18: Cette création est mise à disposition selon le Contrat Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique disponible

18

Gestion des logs

httpd.conf

errorLog

accesLog

A3 Framework

SpringSEC | Core | MVC | Mail | IO

Quartz

Eclipse Link

FaçadeSLF4J

LOGGERlog4j

A3 log environnement

A3 application

ApacheTomcat | FOP | POI

project code

Tomcat container

SLF

4J

logger_JDK

sortie fichier

sortie fichier

sortie console

IText

com

mon

s-lo

ggin

g

JasperReports

Page 19: Cette création est mise à disposition selon le Contrat Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique disponible

19

Plan

Enjeux majeurs Architecture Générale Couche MVC Couches Service et Persistance Génération de codes Gestion des logs

Gestion de la configuration Documentation Démonstration

Page 20: Cette création est mise à disposition selon le Contrat Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique disponible

20

Trois niveaux de gestion de la configuration:

Intégration applicative : Propagation de la configuration centralisée dans tout le projet lors de l’intégration.

Intégration Infrastructure : Différents ensembles de fichiers de configuration pour différents types de déploiement. (coming soon)

Paramétrage : Accès à des fichiers de configuration depuis l’application pendant le développement ou l’exploitation en production.

Gestion de la configuration

Page 21: Cette création est mise à disposition selon le Contrat Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique disponible

21

SourcesSources

Maven

Compilation

filterslog.properties

[…]

[…]

[…].properties

resources

[…]%{log.acube.filename}

[…]

TargetTarget

resources

[…]acube.log

[…]%{log.acube.filename} ACube.log

log.acube.filename=ACube.log

Gestion de la configuration

Page 22: Cette création est mise à disposition selon le Contrat Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique disponible

22

i18n

libelles_erreurs_fr.properties

[…]

[…]

Framework.propertiesFramework.properties

[…].properties

[…].properties

MyClass

[…]

[…]

ACubeConfig. getValue( “ERR-FCT-16”,“id”)

ACubeConfig ERR-FCT-16= Champ ''{0}'' obligatoire

"Champ id obligatoire"

[…]i18n. libelles_erreurs

[…]

Gestion de la configuration

Page 23: Cette création est mise à disposition selon le Contrat Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique disponible

23

Plan

Enjeux majeurs Architecture Générale Couche MVC Couches Service et Persistance Génération de codes Gestion des logs Gestion de la configuration

Documentation Démonstration

Page 24: Cette création est mise à disposition selon le Contrat Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique disponible

24

Documentation

(coming soon)

(coming soon)

Page 25: Cette création est mise à disposition selon le Contrat Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique disponible

25

Documentation

(coming soon)

(coming soon)

(coming soon)

Page 26: Cette création est mise à disposition selon le Contrat Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique disponible

26

Documentation

Page 27: Cette création est mise à disposition selon le Contrat Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique disponible

27

Documentation

(coming soon)

Page 28: Cette création est mise à disposition selon le Contrat Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique disponible

28

Documentation

(coming soon)

Page 29: Cette création est mise à disposition selon le Contrat Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique disponible

29

Plan

Enjeux majeurs Architecture Générale Couche MVC Couches Service et Persistance Génération de codes Gestion des logs Gestion de la configuration Documentation

Démonstration

Page 30: Cette création est mise à disposition selon le Contrat Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique disponible

30

Démonstration