IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Maven Java Discussion :

Core, IHM, Rules, Batch : archi globale sur un multimodule Maven


Sujet :

Maven Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 24
    Par défaut Core, IHM, Rules, Batch : archi globale sur un multimodule Maven
    Soumission d’un petit problème d’archi : un projet Maven multi modules :
    - Parent (pom.xml, gestion des versions)
    - Core (Spring, Hibernate, etc…)
    - IHM (Spring MVC, Thymeleaf, Bootstrap, etc…)
    - Rules (Implémentation du pattern Specification)
    - Batch (Spring Batch)
    Jusque là, rien de neuf
    Le souci se situe au niveau des dépendances entre ces différents modules :
    - IHM doit voir Core : IHM a besoin des méthodes de services du Core et de ses DTO (paramètres d’entrées/sorties des services)
    - Core doit voir Rules : Core doit pouvoir appliquer des règles métiers sur tout ou partie de ses DTO/Entités
    - Rules doit voir Core : il est possible que pour exécuter certaines règles, le moteur de règle doive avoir accès à la base de données (ça commence à piquer… )
    - IHM doit voir Rules : les règles étant centralisées dans le moteur de règles et qu’on ne veut pas les dupliquer, certaines règles IHM métier seront présentent dans le moteur de règle
    - Batch doit voir Core : les batchs vont faire appel à la base de données
    - Core doit voir Batch : pour l’administration des batchs (là, çà repique… )
    Donc comme on peut le voir, on se retrouve avec des références circulaires, Maven n’aime pas
    Pour la partie Batch, l’utilisation de ItemReaderAdapter/ItemWriterAdapter serait une solution mais cela voudrait dire de copier, à la compile via Maven, tout le contexte Spring du Core (Config Spring, persitence.xml, les classes, etc…) Un peu lourd… mais faisable...
    On pourrait penser la même chose pour Core/Rules, mais cela risque de ne pas fonctionner car on change de contexte (genre IllegalArgumentException au runtime)
    Je lance la discussion. Si vous avez des idées

  2. #2
    Membre émérite
    Avatar de Cafeinoman
    Homme Profil pro
    Couteau suisse d'une PME
    Inscrit en
    Octobre 2012
    Messages
    628
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Couteau suisse d'une PME

    Informations forums :
    Inscription : Octobre 2012
    Messages : 628
    Par défaut
    Pourquoi ne pas "simplement" sortir la partie accès bdd de core? Un module supplémentaire vu par Rules, Batch et Core. Ca supprime toute référence circulaire, même si j'admet que ca peut faire un gros refactoring si le projet est avancé...

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 24
    Par défaut
    Merci de ta réponse Cafeinoman

    J'y ai déjà pensé. Le projet suit les principes MDA : les parties Core de IHM sont générées. Notamment, les services et les DAOs sont dans le même artefact : Core.
    Pour l'instant, il me parait compliqué de tordre l'outil pour splitter ces 2 parties. Mais c'est une de mes pistes

    D'autres pistes ?

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 24
    Par défaut
    Pour infos, pour le Core, l'outil produit 2 artefactes :
    • un (client) avec les interfaces de services, les DTOs, les entités, les exceptions, les énumérations
    • un autre avec les implementations de services et la partie DAO

  5. #5
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    je ne suis pas sur d'avoir tous saisi

    pour moi "core" n'a souvent pas beaucoup de sens.

    je serais aussi d'avis que la persistance (DAO) ne doit par faire partie de "core"
    je verrais bien un triptyque services rules persistance.
    persistance ne dépend de rien
    rules et services utilisent persistance.
    services utilise rules.

    ensuite batch et IHM utilisent services

    A+JYT

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 24
    Par défaut
    Ok, je vois. Si je résume :

    IHM----\+++++++++++/->Rules--\
    +++++++\+++++++++/+++++++++\
    ++++++++->Services --------------> Persistence
    +++++++/
    Batch---/

    Je suis en train de voir pour un split du core en services+dao... Souffrance en vue...

    Mais le lien direct entre Services et Persistence court-circuite Rules. Quelle est sa plus-value ? Les perfs? la facilité? On pourrait effectivement avoir des services n'ayant pas recourt à des règles métiers, on devrait alors avoir la possibilité d'accéder à la base directement... Je suppose.

    Dans le cas où le refactoring serait compliqué, une sorte d'IOC via Maven serait-il envisageable ? Je veux dire qu'injecter le Core (services + DAOs) dans Rules (donc à la construction du projet, dans un répertoire source generated par exemple), est-ce que cela ne règlerait pas le problème ? Alors j'entends la critique du "copier/coller" ! Mais finalement, la source est unique, et l'artefact est généré par la même unité de travail à la compilation !

    Cdt,

Discussions similaires

  1. Recherche globale sur une table
    Par webrider dans le forum Requêtes
    Réponses: 5
    Dernier message: 08/09/2006, 11h41
  2. [Directives] Hébergeur mutualisé avec register globals sur OFF
    Par max.onyx dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 25/04/2006, 17h22
  3. [VB.NET] Var globales sur plusieurs projets d'une même solut
    Par boulete dans le forum Windows Forms
    Réponses: 8
    Dernier message: 16/02/2006, 14h04
  4. Réponses: 6
    Dernier message: 28/09/2005, 10h24
  5. batch+recuperer fichier sur un server internet
    Par NoobX dans le forum Windows
    Réponses: 3
    Dernier message: 24/04/2005, 00h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo