Accueil.png Accueil Back.png Site officiel Down.png Télécharger Forum.png Forums

Nous employons ATL pour écrire nos 2 transformations. La première transformation permet d'obtenir un fichier XMI conforme au métamodèle UML1.x afin d'être intégré dans d'autres modeleurs. La deuxième transformation est très semblable et est utilisée pour intégrer nos modèles dans AndroMDA3. Nous étudions la possibilité d'utiliser AndroMDA4.

Vous pouvez télécharger nos transformations avec la configuration : ici !

Pour lancer la transformation, vous devez :

  • Ajoutez le modèle d'entrée IN avec le méta-modèle MMUseCase
  • Ajoutez le modèle de sortie OUT avec le méta-modèle UML
  • Liez le méta-modèle MMUseCase avec le fichier eCore et indiquez que nous avons employé EMF
  • Liez le méta-modèle UML avec le fichier XMI et indiquez que nous avons employé MDR.
  • Indiquez le fichier d'entrée et le fichier de sortie.

ATL (Atlas Transformation Language) a été défini pour exécuter des transformations générales dans le cadre de MDA (architecture conduite par modèle) récemment proposé par l'OMG.

OMF ATL Configuration1.jpg OMF ATL Configuration2.jpg

Exemple de méthode :

-- This helper permits to know if a package is the model. To
-- know if it's, we select the only package not contained by
-- other packages.
-- CONTEXT: MMUseCas!Package
helper def: firstPackage : MMUseCase!Package =
     MMUseCase!Package.allInstances()->reject(pa |
         MMUseCase!Package.allInstances()->collect(p | p.packageSet)->flatten()->
        exists(ptmp | ptmp = pa))->asSequence()->first();

Exemple de règle :

-- Rule 'Model'
-- This rule permit to create the model. We initialize all data types.
rule Model {
    from
        po : MMUseCase!Package  (
            po = thisModule.firstPackage
        )
    to
        pu : UML!Model (
            name <- po.name,
            ownedElement <- Set{po.packageSet, po.classSet, po.stereotypeSet,
                po.associationSet, po.comments,datatype}
        ),
        datatype : UML!Package (
            name <- 'datatype',
            ownedElement <- Set{int,double,float,boolean,byte,
                char,short,void,date,long,string}
        ),
        int : UML!DataType(           
            name <- 'int'
        ),
        double : UML!DataType(
            name <- 'double'
        ),
        float : UML!DataType(
            name <- 'float'
        ),
        boolean : UML!DataType(
            name <- 'boolean'
        ),
        byte : UML!DataType(
            name <- 'byte'
        ),
        char : UML!DataType(
            name <- 'char'
        ),
        short : UML!DataType(
            name <- 'short'
        ),
        void : UML!DataType(
            name <- 'void'
        ),
        date : UML!DataType (
            name <- 'Date'
        ),
        long : UML!DataType (
            name <- 'Long'
        ),
        string : UML!DataType (
            name <- 'String'
        )
}

Besoin d'aide ?