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 Discussion :

[ATL] Les règles


Sujet :

Eclipse

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2011
    Messages : 17
    Points : 13
    Points
    13
    Par défaut [ATL] Les règles
    Bonjour à tous,
    Novice en Atl et autodidacte...
    J'aimerais savoir si il est possible d'utiliser l'instruction "if" de cette façon (en pseudo-code):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    rule test{
    	from in: MMin!Class
    	to 	out1 :MMout!classA(
                         ),
    	        out2:MMout!ClassB(
                         ),
        Si j ai "Class" qui comporte "C" alors je fait aussi:
    	    out3: MMout!ClassC(
    		   )
    ou si je dois forcement créer 2 règles différentes ? (Ce qui peut vite devenir très lourd):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    rule test{
    	from in: MMin!Class (j ai pas "C")
    	to 	out1 :MMout!classA(
                         ),
    	        out2:MMout!ClassB(
                         )		   
    		   )
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    rule test{
    	from in: MMin!Class (j ai"C")
            to    out1 :MMout!classA(
                         ),
    	        out2:MMout!ClassB(
                         ),
    	    out3: MMout!ClassC(
    		   )

    J'espère avoir été clair et vous remercie de votre aide.

  2. #2
    Membre habitué Avatar de NeraOne
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2007
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 218
    Points : 128
    Points
    128
    Par défaut
    Bonjour !

    Oui ta solution doit fonctionner, c'est pas très élégant car tu as de la recopie de code mais à ce jour j'ai pas trouver le moyens de faire autrement non plus...

    Puis après un peu d'expérience ATL et l'élégance sont incompatible pour le moment, mais ça devrait vite changer !!!
    "Je ne suis pas d'accord avec ce que vous dites, mais je me battrai jusqu'à la mort pour que vous ayez le droit de le dire." Voltaire

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2011
    Messages : 17
    Points : 13
    Points
    13
    Par défaut
    Citation Envoyé par NeraOne Voir le message
    Bonjour !

    Oui ta solution doit fonctionner, c'est pas très élégant car tu as de la recopie de code mais à ce jour j'ai pas trouver le moyens de faire autrement non plus...

    Puis après un peu d'expérience ATL et l'élégance sont incompatible pour le moment, mais ça devrait vite changer !!!
    J'ai trouvé quelque chose qui permet de ne pas recopier mais qui n'est pas un IF , si quelqu'un à la méthode pour écrire un if pour une règle "from to" !!!. En attendant j'utilise:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    outgo:Sequence(Integer)= if a.outgoing.notEmpty() then Sequence{1} else Sequence{} endif;
    et pour le "TO" voulu j'écrit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    k:distinct MMH!ArcClassic foreach (inc in outgo)(
    ca marche mais le gros souci c'est si j'ai besoin d'utiliser réellement le "distinct foreach"...
    A ce moment là je revient à la méthode de la recopie de code... pas très gracieuse...pas dutout même. Mais cela me parait bizarre qu'il n'y ai pas la possibilité de faire ce "if".

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2011
    Messages : 17
    Points : 13
    Points
    13
    Par défaut
    J'ai trouvé autre chose de plus simple: Les "abstract" et "extends rules" c'est pas mal du tout avec un "helper" pour faire les "if".
    Ce qui me permet d'aller ou non dans l' "extend rule" mais c'est quand même plus lourd qu'un simple "IF" ...

    Je modifie mon post:
    Aucune possibilité d'appeler deux "extends" d'une même règle... ca commence à me...

Discussions similaires

  1. [ATL] Les règles ATL
    Par java_j2ee dans le forum Eclipse Modeling
    Réponses: 0
    Dernier message: 09/05/2012, 01h55
  2. [À lire] Les règles de ce forum
    Par hiko-seijuro dans le forum C++Builder
    Réponses: 4
    Dernier message: 07/09/2009, 17h55
  3. Important : Les règles incontournables d'utilisation de ce forum
    Par Community Management dans le forum Général Conception Web
    Réponses: 0
    Dernier message: 20/05/2009, 11h36
  4. Obligatoire : lisez les règles du forum : MAJ 06/08/2010
    Par Anomaly dans le forum Mode d'emploi & aide aux nouveaux
    Réponses: 0
    Dernier message: 03/07/2008, 14h46

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