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

Plateformes réactives et architectures modulaires Java Discussion :

Conception d'un systeme de "plugin"


Sujet :

Plateformes réactives et architectures modulaires Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 172
    Points : 100
    Points
    100
    Par défaut Conception d'un systeme de "plugin"
    Bonjour,

    je suis en train de concevoir une application qui doit permettre d'administrer des utilisateurs et leurs droits sur des applications. Ces applications sont toutes accessibles à travers un portail. L'application de gestion des droits va donc afficher un arbre des rubriques du portail (certaines de ces rubriques sont en fait des liens vers les applications).

    • Rubrique root du portail
      • rubrique 1
        • rubrique documentaire 1
        • lien application 1
      • rubrique 2
        • rubrique documentaire 2
        • lien application 2


    Si les rubriques sont de type "documentaire" (c'est à dire que ce n'est pas un lien vers un application mais permet juste d'afficher des documents au sein du portail), l'abonnement est géré dans le portail donc là pas de problème, je maitrise la gestion des droits, et ça ne changera pas de sitot. Mais quand l'adminitrateur va vouloir abonner un utilisateur à une application, une nouvelle fenetre devra afficher pour gérer les droits de l'utilisateur au sein de l'application.
    Sachant que la gestion des droits varie pour chaque application (LDAP, BDD,...), j'aimerais avoir un système relativement générique qui ne m'oblige pas à redévelopper un bout de l'application d'administration à chaque fois qu'une nouvelle application est ajoutée.
    En gros, quand on crée une nouvelle rubrique de type "lien vers une application" dans le portail, on préciserait également un fichier de conf ou une classe implémentant une certaine interface (ça je sais pas trop, c'est l'objet de mon problème justement ), et il y aurait juste à rajouter un jar dans l'application d'administration des droits contenant un bout de code qui dirait comment gérer les droits pour cette nouvelle application, sans toucher au socle de base de l'application d'administration des droits.

    Voilà j'espère que j'ai été assez clair

    J'aimerais donc savoir si vous avez déjà rencontré de type de problématique.
    J'ai vu que OSGi permettait de plugger des services à un socle mais cela me semble lourd à mettre en place... et le principe est encore un peu flou dans mon esprit (je ne suis meme pas sur que ça repondrait à mon probleme).
    Peut-être qu'une simple interface suffirait... j'attends vos idées

    Merci !

  2. #2
    Rédacteur
    Avatar de benwit
    Profil pro
    dev
    Inscrit en
    Septembre 2004
    Messages
    1 676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 676
    Points : 4 265
    Points
    4 265
    Par défaut
    Si j'ai bien compris, tu vas faire un socle de base en java (application de gestion des droits) qui permet d'administrer des utilisateurs et leurs droits sur des applications.

    Si l'ajout d'une nouvelle application peut se faire uniquement par un fichier de paramétrage, c'est pas mal.

    Maintenant, si comme tu le dis, ces applications risquent d'être très hétéroclites, du code supplémentaire sera probalement nécessaire.
    Dans ce cas là, je pense que ce qui serait bien, c'est d'écrire ton socle de base et faire en sorte que celui intéragisse avec les applications uniquement via une ou plusieurs interfaces (Application, User, ... ?). Tu pourrais avoir ainsi une implémentation spécifique à chaque application ou type d'application (BDD, LDAP, ...).

    Pour faire le lien avec une implémentation, tu peux le faire via un fichier de configuration :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <applications>
         <application nom="ex1" type="org.gestiondesdroits.ex1.ApplicationImpl">
            ...
         </application>
         <application nom="ex2" type="org.gestiondesdroits.ex2.ApplicationImpl">
            ...
         </application>     
    </applications>
    C'est pas forcément évident de t'en dire plus ne sachant pas trop les objets dont tu pourrais avoir besoin. Je te conseillerai alors de te lancer à écrire ton code de l'outil de gestion pour d'abord une seule application en évitant autant que possible les couplages fort (utilise alors des interfaces et récupère la classe d'implémentation par un fichier de configuration externe). Ajoute alors la gestion d'une nouvelle application et regarde ce qui est factorisable, là encore en évitant les dépendances directes. Tu seras probablement amené à modifier ton code, ajouter de nouveaux objets, en modifier d'autres mais c'est normal, tu ajoutes alors de la flexibilité à ton application.
    Cette façon de procéder t'éviterait de tomber dans le travers inverse et de vouloir imaginer toutes les solutions possibles au préalable, ce qui est impossible.

    Tout le monde savait que c'était impossible. Il est venu un imbécile qui ne le savait pas et qui l'a fait. Marcel PAGNOL
    On ne savait pas que c'était impossible, alors on l'a fait. John Fitzgerald KENNEDY.
    L'inexpérience est ce qui permet à la jeunesse d'accomplir ce que la vieillesse sait impossible. Paul (Tristant) BERNARD
    La meilleure façon de prédire l'avenir, c'est de l'inventer.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 172
    Points : 100
    Points
    100
    Par défaut
    merci pour ta réponse.
    ça me conforte dans ce que je pensais.
    C'est vrai qu'il ne faut pas que j'essaie d'envisager toutes les possibilités dès maintenant sinon je vais me faire un noeud au cerveau

    A+

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