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

Eclipse Java Discussion :

Article sur GEF & WST, est ce intéressant?


Sujet :

Eclipse Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de azerr
    Homme Profil pro
    Ingénieur Etude JEE/Eclipse RCP
    Inscrit en
    Avril 2006
    Messages
    942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Etude JEE/Eclipse RCP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 942
    Par défaut Article sur GEF & WST, est ce intéressant?
    Bonjour a tous,

    Je souhaiterais realiser un plugin qui gere un fichier XML de workflow comme ce qui a ete fait avec spring webflow http://springide.org/project/attachm...de-by-side.PNG.

    Je sais que c'est super complique, mais je vais tenter de me lancer dans cette affaire. Le projet utilise GEF pour la partie diagramme et WST pour la partie XML. Ne connaissant ni l'un ni l'autre je me retrousse les manches et je mets les mains dans le camboui.

    Pour GEF il y a plein de doc et d'examples donc ca c'est cool, mais pour WST, la c'est le neant total. J'ai reussi a trouver des docs utilisateur sur WTP, mais au niveau developeur il n'y a rien de chez rien. Quand je googelise sur StructuredModelManager, IDOMDocument je retrouve que des sources Java de projets qui les utilisent mais aucune doc?

    Quelqu'un a deja utilisé l'API WST? Je sais que djo l'utilise. En decortiquant ses sources et celle de spring webflow je commence a arriver a faire des choses, notemment afficher un editeur qui affiche une page qui propose le XML source
    et une autre qui affiche une widget Text qui permet de mettre a jour l'attribut title du XML.

    L'etape suivante est de XML(iser) l'exemple GEF Shape http://www.eclipse.org/articles/Arti...tor/shape.html, autrement dit pouvoir stocker le diagramme en XML (au lieu que ca soit en binaire) et de synchroniser le XML Shape (DOM WST) avec le diagramme GEF.

    Tout ca pour dire est ce que vous pensez que ca soit ineteressant de faire un article sur le projet XML Shape que je souhaiterais faire pour me former a GEF et WST?

    L'idee serait de decrire pas a pas comment construire ce projet pour bien comprendre WST et expliquer comment synchroniser GEF et WST.
    Je n'ai pas beaucoup de temps a consacrer a cetet article, mais si jamais des personnes sont interesses par le sujet, n'hesitez pas a me contacter.
    Je ne promets pas non plus d'y arriver, mais je lance ce sujet ou on pourrait au moins debattre sur WST.

    Djo si tu lis ce message, j'ai plein de questions sur WST, notemment les methodes IStructuredModel#aboutToChangeModel();
    et IStructuredModel#modelChanged(); que je n'utilise pas (alors que toi tu les utilises) et dans mon cas le DOM se synchronise correctement?

    Merci de votre attention.

    Angelo

  2. #2
    Membre chevronné

    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Juin 2004
    Messages
    332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en technologies

    Informations forums :
    Inscription : Juin 2004
    Messages : 332
    Par défaut
    Le formalisme de ton fichier de workflow est-il déjà défini?
    Il me semble que tu risques de te lancer dans le recodage (au moins en partie) de GMF, ce qui ne me paraît pas forcément judicieux :-)

  3. #3
    Membre Expert
    Avatar de azerr
    Homme Profil pro
    Ingénieur Etude JEE/Eclipse RCP
    Inscrit en
    Avril 2006
    Messages
    942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Etude JEE/Eclipse RCP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 942
    Par défaut
    Bonsoir kartben,

    Le formalisme de ton fichier de workflow est-il déjà défini?
    Oui le format est deja defini car il est utilise dans une application existante.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Il me semble que tu risques de te lancer dans le recodage (au moins en partie) de GMF, ce qui ne me paraît pas forcément judicieux :-)
    En effet on m'a aussi conseille de regarder GMF. Mais moi je souhaiterais deja bien maitriser GEF avant de regarder GMF. De plus j'ai peur d'etre limite par la suite avec GMF, car je souhaiterais gerer de la completion dans le XML.

    Angelo

  4. #4
    Expert confirmé
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Par défaut
    Salut
    Citation Envoyé par azerr Voir le message
    Djo si tu lis ce message, j'ai plein de questions sur WST, notemment les methodes IStructuredModel#aboutToChangeModel();
    et IStructuredModel#modelChanged(); que je n'utilise pas (alors que toi tu les utilises) et dans mon cas le DOM se synchronise correctement?
    Oui, même sans appeler ses méthodes le DOM serait synchronisé correctement, il servent juste à faire une sorte d'optimisation :
    Dans le cas normal, chaque manipulation d'un node du dom va causer une notification de plusieurs listeners (l'état dirty de l'editeur entre autres, màj de l'outline, etc.).

    Or si tu as l'intention de faire plusieurs opérations sur le DOM, t'as intérêt à les mettre dans aboutToChangeModel et modelChanged, ce qui aura comme effet que les listeners ne seront notifiés qu'une seule fois à la fin.

  5. #5
    Membre Expert
    Avatar de azerr
    Homme Profil pro
    Ingénieur Etude JEE/Eclipse RCP
    Inscrit en
    Avril 2006
    Messages
    942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Etude JEE/Eclipse RCP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 942
    Par défaut
    Bonjour djo,

    Merci beaucoup pour ton explication, j'ai tout compris.

    Vu que WST n'interesse personne, je ne vais pas me mettre a faire un article.
    Je vais m'autoformer et transformer le projet Shape de GEF en utilisant WST pour avoir une page Source XML et synchroniser le XML avec le diagramme GEF.

    Si un jour plusieurs personnes sont interesses par le sujet, n'hesitez pas a me contacter.

    Angelo

  6. #6
    Membre éclairé
    Homme Profil pro
    Enseignant
    Inscrit en
    Octobre 2005
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mali

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2005
    Messages : 246
    Par défaut
    Bonjour,
    Je suis interessé par le sujet, car je travaille sur un projet dans lequel j'ai utilisé GEF Shape. Mon objectif est de pouvoir générer du code XML et même personalisé derière.

    Je ne suis pas très calé, mais avec ton aide peut être ça marchera.

    En attendant, est il possible d'avoir le tuto qui t'a permis de générer le code XML ?
    merci.

  7. #7
    Membre Expert
    Avatar de azerr
    Homme Profil pro
    Ingénieur Etude JEE/Eclipse RCP
    Inscrit en
    Avril 2006
    Messages
    942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Etude JEE/Eclipse RCP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 942
    Par défaut
    Bonjour demcoul,

    Je suis interessé par le sujet, car je travaille sur un projet dans lequel j'ai utilisé GEF Shape. Mon objectif est de pouvoir générer du code XML et même personalisé derière.
    Ahhhhhhh ca fait plaisir de ne pas se sentir seul au monde

    L'exemple GEF avec Shape c'est exactement cet exemple que je tente de personnaliser et de le serializer en XML!

    Je suis en train de mettre les mains dans les sources ed spring webflow et JSF webttols de WTP pour me former et je commenca a comprendre des choses mais c'est encore flou dans ma tete donc je ne prefere pas te donner d'explication tout de suite.

    Pour gerer Shape en XML il y a plusieurs solutions qui dependent de ce que l'on souhaite faire. Moi j'aimerais developper des projets pour tous les cas.

    GEF permet de rendre un modele defini. Donc pour definir son modele on peut le faire de 2 manières différentes :

    1. Son Modele : creer a la mano son propre modele comme ce qui est explique dans l'exemple Shape de GEF. Cette solution impose de gerer les listener sur les changements de propriétés du modèles.
    2. EMF model : utilisé EMF en tant que modèle. L'interêt d'utiliser EMF est qu'il génère ton code et tu n'as pas a te soucier de gerer les listeners. De plus tu peux serialiser en XMI ton diagramme. Dans tous les projets pro (JSF..) que j'ai vu, ils utilisent EMF en tant que modèle. Je pense que je vais partir sur cette idée. Tu peux trouver l'exemple de Shape avec EMF ici.


    Voici les solutions que je voies et que j'ai pu decouvrir :

    Solution 1.1 : GEF + WST
    Cette solution est utilisé dans spring webflow. Il ont cree leur modèle à la mano et synchronise le WST DOM avec leur modèle. Les coordonnées des figures ne sont pas stockés dans le XML du webflow. Du coup le layout utilisé de GEF reparti tous seul les figures. Tu n'as pas possibilités de placer les figures ou tu le souhaites.

    Moi j'aimerais creer un projet avec cette solution ou on aurrait un XML comme ceci (j'ai pas encore bien reflechi non plus au XML) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <diagram>
        <rectangle id="r1" target="e1" >
        </rectangle>
     
        <ellipse id="e1" target="r1">
        </ellipse>
    <diagram>
    Dans ce cas ci il n'y a pas possibilité de placer les figures ou l'on souhaite.

    Solution 1.2 : GEF + WST + XY
    Cette solution est la meme que la Solution 1.1, excepte que dans le XML on stocke les coordonnes X et Y. On aurrait le XML :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <diagram>
        <rectangle id="r1" target="e1" x="100" y="100" >
        </rectangle>
     
        <ellipse id="e1" target="r1" x="200" y="200">
        </ellipse>
    <diagram>
    Solution 2.1 : GEF + WST + EMF

    Cette solution utilise EMF en tant que modèle. EMF permet de serializer en XMI le modele, mais en fait ca ne me servira pas car moi je veux gerer ma propre grammaire XML. EMF fournit la possibilite d'implementer son resource set qui permet de serializer comme tu le souhaites.

    Le probleme, c'est que souvent tu as un fichier XML (ex : faces-config.xml de JSF) qui contient les liens entres les figures (liens entre page pour JSF) mais pas les coordonnees des figures.

    Comment faire? C'est ce que je vais tenter d'expliquer dans la solution 2.2.

    Solution 2.2 : GEF + WST + EMF + XY

    Ca c'est la solution que j'utiliserais au final de mon projet et que JSF webtools utilise ainsi qu ebeacoup d'autres plugin (Maven...)

    EN JSF en fait il y a 2 fichiers :

    * le faces-config.xml qui est le fichier XML que l'on souhaite utiliser dans l'appli JSF et qui contient les liens entre les pages (navigation-rules).

    * un fichier XMI (EMF serialize) (pageflow) qui decrit en XMI les liens entre les pages (comme le faces-config.xml) et les coordonnes de chaque figure.

    Donc pour ca il faut gerer un mapping entre les objets EMF et le DOM XML. Il faut utiliser les Translator fourni par WST qui permet de faire le mapping entre EMF et le WST DOM. Cet article explique cette solution.

    Dans cette solution les coordonnes ne sont pas stockes dans le XML mais dans le XMI.

    Voila ce que j'ai compris pour l'instant et la je vais tenter de personnaliser les projets Shape (avec et sans EMF) pour gerer les 4 solutions et si jamais ca interesse du monde, rediger un article (je vais voir avec Eclipse si il serait interesse et si c'est le cas, ca sera en anglais).

    Mais bon avant de penser a l'article il faut que j'arrive a faire marcher ce qu eje viens de t'expliquer. J'espere que je ne raconte pas trop de betise, car la pour l'instant c'est de la theorie (j'ai mis le debug et je tente de comprendre).


    Je ne suis pas très calé, mais avec ton aide peut être ça marchera.
    Moi non plus (j'ai demarre EMF et GEF, il y a 2 mois).
    Et toi tu as demarre il y a longtemps?

    En attendant, est il possible d'avoir le tuto qui t'a permis de générer le code XML ?
    En fait y a pas de tuto. J'ai mis les mains dans les sources et j'ai tente de comprendre. Mon code est tout pourri donc je ne pense pas que ca soit tres benefique.

    Je vais tenter de rediger un ODT avec mes idees quand j'arriverai a faire marcher les solutions (je vais demarrer par la 2.2).

    Bonen journée

    Angelo

  8. #8
    Membre émérite Avatar de yann2
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 897
    Par défaut
    Salut

    Azerr, tu devrais réellement t'orienter vers GMF

    Il est possible de générer un .ecore et .genmodel à partir d'un XSD. Après génération, EMF te crée ton MyModelResource qui va sérialiser ton modèle en XML tel qu'il est défini dans ton XSD ! (et la plupart des projets Open Source JEE fournissent un xsd de leur fichier de config)

    J'ai vu qu'on te l'avait déjà conseillé et que tu préfères d'abord apprendre GEF ! Ce qui est une très bonne idée, ça t'évitera bien des soucis lorsque tu voudras apprendre GMF ! (EMF est aussi un pré requis Pour info, je pense que d'avoir le réflexe de commencer un plugin eclipse par un modèle EMF est une très bonne pratique. Toutefois, il faut vérifier que ce MétaModèle n'existe pas déjà ! Il ne faut pas réinventer la roue, ça serait diluer les efforts)

    En tout cas (quelque soit la solution adoptée (même si elle vaut mieux que ce soit pérenne et ça a l'air bien parti pour)) j'espère que tu arriveras à tes fins ! Ca à l'air chouette ce que tu veux faire !! Et, personnellement, je préfère largement utiliser un modeleur graphique qu'éditer un XML à la mano ou à travers un TreeViewer ! Je te souhaite de réussir !!

    Yann

  9. #9
    Membre éclairé
    Homme Profil pro
    Enseignant
    Inscrit en
    Octobre 2005
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mali

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2005
    Messages : 246
    Par défaut
    Bonjour Azerr,

    J'ai débuté il y 1 mois (plus précisement le 15 decembre).

    Merci pour les explications.

Discussions similaires

  1. Réponses: 9
    Dernier message: 01/12/2010, 10h17
  2. Article sur les tableaux dynamiques
    Par Eric Sigoillot dans le forum Langage
    Réponses: 2
    Dernier message: 16/04/2004, 22h00

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