présentation - transformation d'un fichier xmi vers svg (java et atl)
TRANSCRIPT
![Page 1: Présentation - Transformation d'un fichier XMI vers SVG (JAVA et ATL)](https://reader031.vdocuments.net/reader031/viewer/2022031815/55aac8071a28ab6e558b4842/html5/thumbnails/1.jpg)
Présenté Par : ABOUNASR MERYEM
BOUJADI SOUKAINA
Transformation des fichiers XMI en fichiers SVG avec JAVA et ATL
![Page 2: Présentation - Transformation d'un fichier XMI vers SVG (JAVA et ATL)](https://reader031.vdocuments.net/reader031/viewer/2022031815/55aac8071a28ab6e558b4842/html5/thumbnails/2.jpg)
TRANSFORMATION XMI EN SVG EN JAVA
SVG : Scalable Vector
Graphics
Exemple transformation
XML en SVG avec JAVA
FORMALISMES XML ET XMI
XML
XMI
parsing fichier XML
L’API JDOM
1 2
PLANTRANSFORMATION XMI
EN SVG AVEC ATL
Langage ATL
Transformation du diagramme avec ATL
3
![Page 3: Présentation - Transformation d'un fichier XMI vers SVG (JAVA et ATL)](https://reader031.vdocuments.net/reader031/viewer/2022031815/55aac8071a28ab6e558b4842/html5/thumbnails/3.jpg)
Chapitre 1: FORMALISMES XML ET XMI
![Page 4: Présentation - Transformation d'un fichier XMI vers SVG (JAVA et ATL)](https://reader031.vdocuments.net/reader031/viewer/2022031815/55aac8071a28ab6e558b4842/html5/thumbnails/4.jpg)
Le formalisme XML (Extended Markup Language) permet la représentation structurée d'informations dans un format texte.
Il peut par conséquent être utilisé comme format syntaxique de transport de modèles et de méta-modèles.
La structure de l'information est alors définie dans un fichier annexe au format DTD (Document Type Description).
L'avantage d'un tel formalisme est de permettre l'échange d'informations dès lors que l'on base celle-ci sur une DTD normalisée.
Extensible Markup Language : XML
![Page 5: Présentation - Transformation d'un fichier XMI vers SVG (JAVA et ATL)](https://reader031.vdocuments.net/reader031/viewer/2022031815/55aac8071a28ab6e558b4842/html5/thumbnails/5.jpg)
Extensible Markup Language : XML
<?xml version="1.0" ?>
<!DOCTYPE Livre "Livre.dtd">
<Livre Auteur="Michel Nakhlé et Charles Modiguy">
<Titre>Rapport</ Titre >
<Chapitre id="1">
Premier Chapitre. Introduction.
</Chapitre >
<Chapitre id="2">
Second Chapitre. Glossaire.
</Chapitre >
</Livre>
Exemple de document XMLreprésentant un livre et satable des matières .
![Page 6: Présentation - Transformation d'un fichier XMI vers SVG (JAVA et ATL)](https://reader031.vdocuments.net/reader031/viewer/2022031815/55aac8071a28ab6e558b4842/html5/thumbnails/6.jpg)
XMI est le langage d’échange entre le monde des modèles et le monde XML (eXtensible Markup Language).
C’est le format d’échange standard entre les outils compatibles MDA.
XMI décrit comment utiliser les balises XML pour représenter un modèle UML en XML.
Cette représentation facilite les échanges de données (ou métadonnées) entre les différents outils ou plates-formes de modélisation
XML Metadata Interchange : XMI
![Page 7: Présentation - Transformation d'un fichier XMI vers SVG (JAVA et ATL)](https://reader031.vdocuments.net/reader031/viewer/2022031815/55aac8071a28ab6e558b4842/html5/thumbnails/7.jpg)
Dans un document XML, mais aussi, à partir de document XML il est possible de reconstruire des méta modèles.
Les méta-modèles MOF et UML sont décrits par des DTD et les modèles traduits dans des documents XML conformes à leur DTD correspondante.
XML Metadata Interchange : XMI
XMI a l’avantage de regrouper les métadonnées et les instances dans un
même document ce qui permet à une application de comprendre les
instances grâce à leurs méta-données. Ceci facilite les échanges entre
applications
![Page 8: Présentation - Transformation d'un fichier XMI vers SVG (JAVA et ATL)](https://reader031.vdocuments.net/reader031/viewer/2022031815/55aac8071a28ab6e558b4842/html5/thumbnails/8.jpg)
Objectif: permettre l'échange de méta données entre outils de modélisation basés sur UML et la communication des répertoires de méta données basés sur le MOF deux standards de l'OMG.
XMI se fonde sur les trois standards XML, UML et MOF :
UML est un formalisme orienté objet de conception et de documentation d'applications.
MOF est une technologie de définition et de représentation de méta données en tant qu'objets CORBA.
XML Metadata Interchange : XMI
![Page 9: Présentation - Transformation d'un fichier XMI vers SVG (JAVA et ATL)](https://reader031.vdocuments.net/reader031/viewer/2022031815/55aac8071a28ab6e558b4842/html5/thumbnails/9.jpg)
XML Metadata Interchange : XMI
![Page 10: Présentation - Transformation d'un fichier XMI vers SVG (JAVA et ATL)](https://reader031.vdocuments.net/reader031/viewer/2022031815/55aac8071a28ab6e558b4842/html5/thumbnails/10.jpg)
Ile est essentiel pour le receveur d’un document XML de pouvoir extraire les données du document. Cette opération est possible à l’aide d’un outil appelé parseur.
Le parseur permet de créer une structure hiérarchique contenant les données contenues dans le document XML.
On en distingue deux types selon l’approche qu’ils utilisent pour traiter le document
Les parseurs utilisant une approche hiérarchique
Les parseurs basés sur un mode événementiel
Parsing fichier XML
![Page 11: Présentation - Transformation d'un fichier XMI vers SVG (JAVA et ATL)](https://reader031.vdocuments.net/reader031/viewer/2022031815/55aac8071a28ab6e558b4842/html5/thumbnails/11.jpg)
Parsing fichier XML
ceux-ci construisent une structure
hiérarchique contenant des objets
représentant les éléments du document,
et dont les méthodes permettent
d’accéder aux propriétés. La principale
API utilisant cette approche est DOM
(Document Object Model).
Les parseurs utilisant une approche hiérarchique
permettent de réagir à des événements
(comme le début d’un élément, la fin
d’un élément) et de renvoyer le résultat
à l’application interface utilisant l’aspect
événementiel.
Les parseurs basés sur un mode événementiel
![Page 12: Présentation - Transformation d'un fichier XMI vers SVG (JAVA et ATL)](https://reader031.vdocuments.net/reader031/viewer/2022031815/55aac8071a28ab6e558b4842/html5/thumbnails/12.jpg)
JDOM est une API open source Java dont le but est de représenter et manipuler un document XML de manière intuitive pour un développeur Java sans requérir une connaissance pointue de XML.
JDOM est donc un modèle de documents objets open source dédié à Java pour encapsuler un document XML. JDOM propose aussi une intégration de SAX, DOM, XSLT et XPath.
API Jdom
![Page 13: Présentation - Transformation d'un fichier XMI vers SVG (JAVA et ATL)](https://reader031.vdocuments.net/reader031/viewer/2022031815/55aac8071a28ab6e558b4842/html5/thumbnails/13.jpg)
API Jdom
JDOM n'est pas un parseur : il a d'ailleurs besoin d'un parseur externe de type SAX ou DOM pour analyser un document et créer la hiérarchie d'objets relative à un document XML.
Un document XML est encapsulé dans un objet de type Document qui peut contenir des objets de type Comment, Processing Instruction
l'élément racine du document encapsulé dans un objet de type Element.
![Page 14: Présentation - Transformation d'un fichier XMI vers SVG (JAVA et ATL)](https://reader031.vdocuments.net/reader031/viewer/2022031815/55aac8071a28ab6e558b4842/html5/thumbnails/14.jpg)
API Jdom
![Page 15: Présentation - Transformation d'un fichier XMI vers SVG (JAVA et ATL)](https://reader031.vdocuments.net/reader031/viewer/2022031815/55aac8071a28ab6e558b4842/html5/thumbnails/15.jpg)
Chapitre 2: Transformation XMI en SVG avec java
![Page 16: Présentation - Transformation d'un fichier XMI vers SVG (JAVA et ATL)](https://reader031.vdocuments.net/reader031/viewer/2022031815/55aac8071a28ab6e558b4842/html5/thumbnails/16.jpg)
Le graphisme sur le web :
Images souvent conséquentes en taille,
Résolution fixe,
Impossible de rajouter des informations,
Difficile d'adapter un environnement de visualisation,
Les données sont statiques et il n'y a pas d'interactions possibles (gifs animés),
Solutions propriétaires.
SVG : Scalable Vector Graphics
![Page 17: Présentation - Transformation d'un fichier XMI vers SVG (JAVA et ATL)](https://reader031.vdocuments.net/reader031/viewer/2022031815/55aac8071a28ab6e558b4842/html5/thumbnails/17.jpg)
Qu'apporte le graphique vectoriel ?
Indépendant de la résolution,
Le client interprète le contenu du document,
Le contenu est « recherchable »,
Facile à éditer,
Langage XML qui s'intègre facilement à XHTML.
SVG : Scalable Vector Graphics
![Page 18: Présentation - Transformation d'un fichier XMI vers SVG (JAVA et ATL)](https://reader031.vdocuments.net/reader031/viewer/2022031815/55aac8071a28ab6e558b4842/html5/thumbnails/18.jpg)
SVG : Scalable Vector Graphics
SVG est l'acronyme de Scalable Vector
Graphics, un langage de description des
graphiques bidimensionnels en XML.
Puisque les images sont générées “en
code” à base de formes géométriques et
non de pixels, elles sont “zoomables” à
l’infini et on peut les redimensionner
sans perte de qualité
SVG inclut un rendement de qualité,
des possibilités de zoom et de
panoramique, les filtres sur les objets,
le remplissage des formes avec des
textures et des gradients, les masques,
les animations et l'interactivité et bien
d'autres choses encore!
![Page 19: Présentation - Transformation d'un fichier XMI vers SVG (JAVA et ATL)](https://reader031.vdocuments.net/reader031/viewer/2022031815/55aac8071a28ab6e558b4842/html5/thumbnails/19.jpg)
Structure d’une simple page SVG
Une déclaration XML standarde, par exemple
Pour un document non "standalone", il faut indiquer le DTD:
SVG : Scalable Vector Graphics
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN""http://www.w3.org/TR/2001/PR-SVG-20010719/DTD/svg10.dtd">
![Page 20: Présentation - Transformation d'un fichier XMI vers SVG (JAVA et ATL)](https://reader031.vdocuments.net/reader031/viewer/2022031815/55aac8071a28ab6e558b4842/html5/thumbnails/20.jpg)
Structure d’une simple page SVG
La racine d’un contenu SVG est "svg":
Il faut déclarer un namespace dans la racine (si ce n’était pas fait dans un parent):
SVG : Scalable Vector Graphics
<svg>....</svg>
<svg xmlns="http://www.w3.org/2000/svg"> . . . </svg>
![Page 21: Présentation - Transformation d'un fichier XMI vers SVG (JAVA et ATL)](https://reader031.vdocuments.net/reader031/viewer/2022031815/55aac8071a28ab6e558b4842/html5/thumbnails/21.jpg)
SVG : Scalable Vector Graphics
<?xml version="1.0" =encoding"UTF-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="460" height="552">
<!-- un petit rectangle avec des coins arroundis --><rect x="50" y="50" rx="5" ry="5" width="200" height="100"style="fill:#CCCCFF;stroke:#000099"/><!-- un texte au meme endroit --><text x="55" y="90" style="stroke:#000099;fill:#000099;fontsize:24;">Bonjour Soukaina</text></svg>
![Page 22: Présentation - Transformation d'un fichier XMI vers SVG (JAVA et ATL)](https://reader031.vdocuments.net/reader031/viewer/2022031815/55aac8071a28ab6e558b4842/html5/thumbnails/22.jpg)
SVG : Scalable Vector GraphicsEléments graphiques de base
SVG définit un certain nombre d’éléments graphiques de base. Voici la liste des éléments les plus importants:
“Rectangles <rect>”
“Le cercle <circle> et l’ellipse <ellipse>”
“Lignes <line> et poli-lignes <polyline>”
“Polygones”
“Formes arbitraires avec <path>”
![Page 23: Présentation - Transformation d'un fichier XMI vers SVG (JAVA et ATL)](https://reader031.vdocuments.net/reader031/viewer/2022031815/55aac8071a28ab6e558b4842/html5/thumbnails/23.jpg)
SVG : Scalable Vector GraphicsEléments graphiques de base
Chaque élément graphique est représenté par un élément XML qui est paramétrable avec des attributs XML et qui hérite d’attributs de ses parents.
Comme dans d’autres langages vectoriels (par ex. VRML), il existe des formes géométriques de base (rectangle, ellipse, cercle, lignes, poly-lignes et polygone). Ensuite il existe une construction pour produire des formes complexes.
![Page 24: Présentation - Transformation d'un fichier XMI vers SVG (JAVA et ATL)](https://reader031.vdocuments.net/reader031/viewer/2022031815/55aac8071a28ab6e558b4842/html5/thumbnails/24.jpg)
Dans cette partie onmontrer comment parser un ficher XMI avec le langage JAVA utilisant L’API jdom2 .
Pour cela on va :
Créer un diagramme de cas d’utilisation avec Visual Paradigm
Exporter le diagramme sous format XMI
Parser avec Java pour extraire les données nécessaires
Redessiner le diagramme avec SVG
Exemple transformation XML en SVG avec JAVA
![Page 25: Présentation - Transformation d'un fichier XMI vers SVG (JAVA et ATL)](https://reader031.vdocuments.net/reader031/viewer/2022031815/55aac8071a28ab6e558b4842/html5/thumbnails/25.jpg)
Création du diagramme de cas d’utilisation avec Visual Paradigm
![Page 26: Présentation - Transformation d'un fichier XMI vers SVG (JAVA et ATL)](https://reader031.vdocuments.net/reader031/viewer/2022031815/55aac8071a28ab6e558b4842/html5/thumbnails/26.jpg)
Partie du fichier XMI Exporté
Exemple transformation XML en SVG avec JAVA
![Page 27: Présentation - Transformation d'un fichier XMI vers SVG (JAVA et ATL)](https://reader031.vdocuments.net/reader031/viewer/2022031815/55aac8071a28ab6e558b4842/html5/thumbnails/27.jpg)
Fonction pour parser le fichier XMI avec SaxBuilder :
Exemple transformation XML en SVG avec JAVA Parsing avec Java pour extraire les données nécessaires
public Document GetDocument(File file)
{
Document doc=null;
try {
doc= saxBuilder.build(file);
}
catch (JDOMException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return doc;
}
![Page 28: Présentation - Transformation d'un fichier XMI vers SVG (JAVA et ATL)](https://reader031.vdocuments.net/reader031/viewer/2022031815/55aac8071a28ab6e558b4842/html5/thumbnails/28.jpg)
Fonction pour charger la liste des éléments :
Exemple transformation XML en SVG avec JAVA Parsing avec Java pour extraire les données nécessaires
public void parser(Document doc)
{
try {
// Obtenir la racine de l’élément
racine = doc.getRootElement();
model = racine.getChild("Model", umlNS);
// Obtenir les Acteurs ,cas d’utilisation et Association
Lelements=model.getChildren("ownedMember");
// Les propriétés pour dessiner les éléments
diagram=racine.getChild("Diagram", umlNS);
diagram=diagram.getChild("Diagram.element", umlNS);
Lpropriete=diagram.getChildren("DiagramElement", umlNS);
}
catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
![Page 29: Présentation - Transformation d'un fichier XMI vers SVG (JAVA et ATL)](https://reader031.vdocuments.net/reader031/viewer/2022031815/55aac8071a28ab6e558b4842/html5/thumbnails/29.jpg)
Maintenant on va parcourir la liste des éléments pour récupérer la liste des Acteurs, cas d’utilisations et associations
Exemple transformation XML en SVG avec JAVA Parsing avec Java pour extraire les données nécessaires
![Page 30: Présentation - Transformation d'un fichier XMI vers SVG (JAVA et ATL)](https://reader031.vdocuments.net/reader031/viewer/2022031815/55aac8071a28ab6e558b4842/html5/thumbnails/30.jpg)
Dans cette étape on va dessiner notre diagramme de cas d’utilisation avec SVG .
Exemple transformation XML en SVG avec JAVA Transformation du diagramme en SVG
![Page 31: Présentation - Transformation d'un fichier XMI vers SVG (JAVA et ATL)](https://reader031.vdocuments.net/reader031/viewer/2022031815/55aac8071a28ab6e558b4842/html5/thumbnails/31.jpg)
Exemple transformation XML en SVG avec JAVA Transformation du diagramme en SVG
/*
cette fonction écrit du code XML dans le document qui va être générer
*/
public static void writeFile(String fname, Document doc){
try{
FileOutputStream out = new FileOutputStream(fname);
XMLOutputter xmlOut =new
XMLOutputter(Format.getCompactFormat());
xmlOut.output(doc,out);
out.flush();
out.close();
}
catch (IOException e){
System.err.println(e);
}
}
![Page 32: Présentation - Transformation d'un fichier XMI vers SVG (JAVA et ATL)](https://reader031.vdocuments.net/reader031/viewer/2022031815/55aac8071a28ab6e558b4842/html5/thumbnails/32.jpg)
Exemple transformation XML en SVG avec JAVA Transformation du diagramme en SVG
/*
Fonction pour créer la balise SVG dans le document
*/
public static Element makeSvg(
String ns,//namespace URI
int svgWidth,// largeur de la fenêtre
int svgHeight,// Hauteur de la fenêtre
){
Element svg = new Element("svg",ns);
//Les valeurs par défaut des attributs
svg.setAttribute("version","1.1");
svg.setAttribute("preserveAspectRatio","none");
svg.setAttribute("width",""+svgWidth);
svg.setAttribute("height",""+svgHeight);
svg.setAttribute("viewBox",
vbMinX + vbMinY + ""+vbWidth + " "+vbHeight);
return svg;
}
![Page 33: Présentation - Transformation d'un fichier XMI vers SVG (JAVA et ATL)](https://reader031.vdocuments.net/reader031/viewer/2022031815/55aac8071a28ab6e558b4842/html5/thumbnails/33.jpg)
Exemple transformation XML en SVG avec JAVA Transformation du diagramme en SVG
// Fonction pour dessiner un ellipse
public static Element DessinerEllipse(
Element parent,
String namespace,
int cx,//Abscisse Centre
int cy,//Ordonnée Centre
int rx,//Rayon Horizontal
int ry //Rayon Vertical
){
Element ellipse = new Element("ellipse",namespace);
parent.addContent(ellipse);
//valeurs par défauts
ellipse.setAttribute("fill","rgb(122,207,245)");
ellipse.setAttribute("stroke","black");
ellipse.setAttribute("stroke-width","1");
//les coordonnées de l’ellipse.
ellipse.setAttribute("cx",""+cx);
ellipse.setAttribute("cy",""+cy);
ellipse.setAttribute("rx",""+rx);
ellipse.setAttribute("ry",""+ry) ;
return ellipse;}
![Page 34: Présentation - Transformation d'un fichier XMI vers SVG (JAVA et ATL)](https://reader031.vdocuments.net/reader031/viewer/2022031815/55aac8071a28ab6e558b4842/html5/thumbnails/34.jpg)
Exemple pour dessiner un acteur
Exemple transformation XML en SVG avec JAVA
String[] data=new String[4];
data[0]="font-size";
data[1]="14";
data[2]="transform";
int trans=y;
data[3]="translate(42,"+trans+")";
Element g = JdomSvg.AjouterNode(svg,//parent
ns,//namespace
"g",
data
);
JdomSvg.dessinerCircle(g, ns,14.5,7.5,7.5);
JdomSvg.dessinerLine(g, ns,15,15,15,40);
JdomSvg.dessinerLine(g, ns,0,24,30,24);
JdomSvg.dessinerLine(g, ns,15,40,0,60);
JdomSvg.dessinerLine(g, ns,15,40,30,60);
JdomSvg.EcrireText(g, ns,-10,70,Journaliste);
}
![Page 35: Présentation - Transformation d'un fichier XMI vers SVG (JAVA et ATL)](https://reader031.vdocuments.net/reader031/viewer/2022031815/55aac8071a28ab6e558b4842/html5/thumbnails/35.jpg)
Exemple transformation XML en SVG avec JAVA Exemple pour dessiner un cas d’utilisation
String[] data=new String[4];
data[0]="font-size";
data[1]="14";
data[2]="transform";
data[3]="translate("+transX+","+transY+")";
Element g = JdomSvg.ajouterNode(svg,//parent
ns,//namespace
"g",
data
);
Element ellipse=JdomSvg.dessinerEllipse(g,ns,Rx1,Ry1,Rx2,Ry2);
JdomSvg.ecrireText(g, ns, x ,y ,”Rediger Article”);
![Page 36: Présentation - Transformation d'un fichier XMI vers SVG (JAVA et ATL)](https://reader031.vdocuments.net/reader031/viewer/2022031815/55aac8071a28ab6e558b4842/html5/thumbnails/36.jpg)
Exemple transformation XML en SVG avec JAVA Exemple pour dessiner une association
String[] data={ "stroke-linejoin","round"};
Element g= JdomSvg.ajouterNode(svg, ns , "g",data );
JdomSvg.dessinerLine(g, ns,
as.getX1(),
as.getY1()+10,
as.getX2(),
as.getY2()
);
int[] points={x1,y1,x2,y2,x3,y3};
JdomSvg.dessinerPolygon(g, ns, points);
![Page 37: Présentation - Transformation d'un fichier XMI vers SVG (JAVA et ATL)](https://reader031.vdocuments.net/reader031/viewer/2022031815/55aac8071a28ab6e558b4842/html5/thumbnails/37.jpg)
Le document SVGgénéré a partir denotre programme
![Page 38: Présentation - Transformation d'un fichier XMI vers SVG (JAVA et ATL)](https://reader031.vdocuments.net/reader031/viewer/2022031815/55aac8071a28ab6e558b4842/html5/thumbnails/38.jpg)
Chapitre 3: TRANSFORMATION XMI EN SVG AVEC ATL
Langage ATL Transformation du diagramme avec ATL
![Page 39: Présentation - Transformation d'un fichier XMI vers SVG (JAVA et ATL)](https://reader031.vdocuments.net/reader031/viewer/2022031815/55aac8071a28ab6e558b4842/html5/thumbnails/39.jpg)
ATL (ATLAS Transformation Language) est le langage de transformationdéveloppé dans le cadre du projet ATLAS.
ATL est basé sur le standard OCL (Object Constraint Language (OCL)).
Le langage ATL
![Page 40: Présentation - Transformation d'un fichier XMI vers SVG (JAVA et ATL)](https://reader031.vdocuments.net/reader031/viewer/2022031815/55aac8071a28ab6e558b4842/html5/thumbnails/40.jpg)
Le langage ATL
Une transformation de modèles définit la façon de générer un modèle Mb, conforme au méta-modèle MMb, à partir du modèle Ma conforme au méta-modèle MMa.
![Page 41: Présentation - Transformation d'un fichier XMI vers SVG (JAVA et ATL)](https://reader031.vdocuments.net/reader031/viewer/2022031815/55aac8071a28ab6e558b4842/html5/thumbnails/41.jpg)
Transformation Modèle vers Modèle : module
Transformation Modèle vers Texte : requete
Exemples de transformations
![Page 42: Présentation - Transformation d'un fichier XMI vers SVG (JAVA et ATL)](https://reader031.vdocuments.net/reader031/viewer/2022031815/55aac8071a28ab6e558b4842/html5/thumbnails/42.jpg)
La structure d’un module ATL est composée par :
Exemples de transformationsTransformation Modèle vers Modèle : module
Section d’En-tête
Section d’Importation facultative
Ensemble de helpers
Ensemble de règles
![Page 43: Présentation - Transformation d'un fichier XMI vers SVG (JAVA et ATL)](https://reader031.vdocuments.net/reader031/viewer/2022031815/55aac8071a28ab6e558b4842/html5/thumbnails/43.jpg)
La section d’en-tête définit le nom du module de transformation ainsi que le nom des variables correspondantes aux modèles sources et cibles.
Sa syntaxe:
Exemple :
La section d’en-tête
module MMa2MMb;
Create Mb : MMb [from|refining] Ma : MMa;
![Page 44: Présentation - Transformation d'un fichier XMI vers SVG (JAVA et ATL)](https://reader031.vdocuments.net/reader031/viewer/2022031815/55aac8071a28ab6e558b4842/html5/thumbnails/44.jpg)
Cette section est optionnelle, elle permet de déclarer les bibliothèques ATL qui doivent être importées.
Sa syntaxe:
La section d’importation
uses nom_bibliothèque;
![Page 45: Présentation - Transformation d'un fichier XMI vers SVG (JAVA et ATL)](https://reader031.vdocuments.net/reader031/viewer/2022031815/55aac8071a28ab6e558b4842/html5/thumbnails/45.jpg)
Les helpers sont les fonctions de ATL d’après le standard OCL.
OCL définit deux sortes de helpers : opération et attribut.
Exemple
Les Helpers
helper [context type_du_contexte]? def : nom_du_helper(nom_parhelper [context type_du_contexte]? def : nom_du_helperamètre1 :type_paramètre1 , nom_paramètre2 : type_paramètre2): type_de_retour = expression;
La syntaxe d’un helper opération est définie comme suit :
![Page 46: Présentation - Transformation d'un fichier XMI vers SVG (JAVA et ATL)](https://reader031.vdocuments.net/reader031/viewer/2022031815/55aac8071a28ab6e558b4842/html5/thumbnails/46.jpg)
Exemple
Les Helpers
helper [context type_du_contexte]? def : nom_du_helper : type_de_retour = expression;
La syntaxe d’un helper attribut est définie comme suit :
![Page 47: Présentation - Transformation d'un fichier XMI vers SVG (JAVA et ATL)](https://reader031.vdocuments.net/reader031/viewer/2022031815/55aac8071a28ab6e558b4842/html5/thumbnails/47.jpg)
Les règles standards (Matched rules) : Ils constituent le noyau de la transformation déclarative.
Elles permettent de spécifier, pour quels éléments sources, les éléments cibles sont générés, ainsi que, la façon dont ces éléments cibles sont initialisés. Ces règles ont le format suivant
Exemple:
Les Règles
rule rule_name {fromin_var : in_type [( condition )]?[using { var1 : var_type1 = init_exp1;
varn : var_typen = init_expn;}]?toout_var1 : out_type1 (bindings1),...out_varn : out_typen (bindingsn)[do { action_block }]?}
rule Book2Publication {
from b : Book!Book
to out : Publication!Publication (
title <- b.title,
nbPages <-
b.getSumPages()
)}
![Page 48: Présentation - Transformation d'un fichier XMI vers SVG (JAVA et ATL)](https://reader031.vdocuments.net/reader031/viewer/2022031815/55aac8071a28ab6e558b4842/html5/thumbnails/48.jpg)
une requête (query) est une transformation d’un modèle vers un type primitif .
Ces règles ont le format suivant :
query query_name = exp;
Exemple classique : construire une chaîne de caractères.
Comme un module, une requête peut définir des helpers et des attributs
Exemples de transformationsTransformation Transformation Modèle vers Texte : requête
![Page 49: Présentation - Transformation d'un fichier XMI vers SVG (JAVA et ATL)](https://reader031.vdocuments.net/reader031/viewer/2022031815/55aac8071a28ab6e558b4842/html5/thumbnails/49.jpg)
Vous trouvez dans ce site des bons exemples concernant les transformations ATL (le code source et la documentation).
http://www.eclipse.org/atl/atlTransformations/
Des exemples de Transformations ATL
![Page 50: Présentation - Transformation d'un fichier XMI vers SVG (JAVA et ATL)](https://reader031.vdocuments.net/reader031/viewer/2022031815/55aac8071a28ab6e558b4842/html5/thumbnails/50.jpg)
Installer Eclipse Modeling
Ajouter Plugin ATL
Installation d’environnement de travail
![Page 51: Présentation - Transformation d'un fichier XMI vers SVG (JAVA et ATL)](https://reader031.vdocuments.net/reader031/viewer/2022031815/55aac8071a28ab6e558b4842/html5/thumbnails/51.jpg)
Téléchargez l’IDE environnement de développement intégré Eclipse depuis l’adresse suivante : http://www.eclipse.org/downloads/
Installer Eclipse
![Page 52: Présentation - Transformation d'un fichier XMI vers SVG (JAVA et ATL)](https://reader031.vdocuments.net/reader031/viewer/2022031815/55aac8071a28ab6e558b4842/html5/thumbnails/52.jpg)
Ajouter Plugin ATL et GMF
![Page 53: Présentation - Transformation d'un fichier XMI vers SVG (JAVA et ATL)](https://reader031.vdocuments.net/reader031/viewer/2022031815/55aac8071a28ab6e558b4842/html5/thumbnails/53.jpg)
allez sur : « File » -> « new » -> « Other » : Et vérifiez si les dossiers « ATL » et « Graphical Modeling Framework » existent .
Assurer l’ajout de Plugins
![Page 54: Présentation - Transformation d'un fichier XMI vers SVG (JAVA et ATL)](https://reader031.vdocuments.net/reader031/viewer/2022031815/55aac8071a28ab6e558b4842/html5/thumbnails/54.jpg)
Objectifs :
Créer un projet ATL
Structurer votre projet ATL
créer un Meta-Model ecore (ajouter une classe , un attribut à une classe, marquer une classe abstraite, faire une association de type composition)
Créer un fichier ATL (Model 2 Model )
Créer un fichier ATL (Model 2 Text)
Exécuter un fichier ATL)
Votre Premier Projet ATL
![Page 55: Présentation - Transformation d'un fichier XMI vers SVG (JAVA et ATL)](https://reader031.vdocuments.net/reader031/viewer/2022031815/55aac8071a28ab6e558b4842/html5/thumbnails/55.jpg)
Votre Premier Projet ATL1)Créer un projet ATL
• New -> Other
• Donner un nom à votre Projet ATL
![Page 56: Présentation - Transformation d'un fichier XMI vers SVG (JAVA et ATL)](https://reader031.vdocuments.net/reader031/viewer/2022031815/55aac8071a28ab6e558b4842/html5/thumbnails/56.jpg)
Créer trois dossiers
Transformations : les fichiers ATL.
Metamodels : les fichiers Metamodels que vous avez besoin dans ce projet.
Models : les fichiers Models.
Votre Premier Projet ATL2)Structurer votre Projet ATL
![Page 57: Présentation - Transformation d'un fichier XMI vers SVG (JAVA et ATL)](https://reader031.vdocuments.net/reader031/viewer/2022031815/55aac8071a28ab6e558b4842/html5/thumbnails/57.jpg)
Un Méta-Modèle : est un fichier ecore
Exemple : Création de MetaModel SVG
Votre Premier Projet ATL3) Créer un Méta-Modèle
![Page 58: Présentation - Transformation d'un fichier XMI vers SVG (JAVA et ATL)](https://reader031.vdocuments.net/reader031/viewer/2022031815/55aac8071a28ab6e558b4842/html5/thumbnails/58.jpg)
Vous avez deux méthodes pour manipuler votre méta-modèle :
Méthode 1 : avec Sample Ecore Model Editor
Méthode 2 :Ecore Diagram Editing
Votre Premier Projet ATL3) Créer un Méta-Modèle
![Page 59: Présentation - Transformation d'un fichier XMI vers SVG (JAVA et ATL)](https://reader031.vdocuments.net/reader031/viewer/2022031815/55aac8071a28ab6e558b4842/html5/thumbnails/59.jpg)
Méthode 1 : avec Sample Ecore Model Editor
• Ajouter une classe à un Méta-Modèle
• Si Properties ne s’affiche pas ; aller à windows -> show View -> other ->
tapez properties -> cliquer sur Ok.
![Page 60: Présentation - Transformation d'un fichier XMI vers SVG (JAVA et ATL)](https://reader031.vdocuments.net/reader031/viewer/2022031815/55aac8071a28ab6e558b4842/html5/thumbnails/60.jpg)
Ajouter un attribut une classe
Il a besoin d’un nom, un type et la multiplicité
Méthode 1 : avec Sample Ecore Model Editor
![Page 61: Présentation - Transformation d'un fichier XMI vers SVG (JAVA et ATL)](https://reader031.vdocuments.net/reader031/viewer/2022031815/55aac8071a28ab6e558b4842/html5/thumbnails/61.jpg)
Passer au Mode graphique
Marquer une classe abstraite :
Méthode 2 :Ecore Diagram Editing
![Page 62: Présentation - Transformation d'un fichier XMI vers SVG (JAVA et ATL)](https://reader031.vdocuments.net/reader031/viewer/2022031815/55aac8071a28ab6e558b4842/html5/thumbnails/62.jpg)
Créer une association de type composition (one to many)
Créer par exemple d’autre classe qui s’appelle shape
Cliquer sur EReference
Méthode 2 :Ecore Diagram Editing
![Page 63: Présentation - Transformation d'un fichier XMI vers SVG (JAVA et ATL)](https://reader031.vdocuments.net/reader031/viewer/2022031815/55aac8071a28ab6e558b4842/html5/thumbnails/63.jpg)
Votre Premier Projet ATL4) Créer un fichier ATL (Model 2 Model)
![Page 64: Présentation - Transformation d'un fichier XMI vers SVG (JAVA et ATL)](https://reader031.vdocuments.net/reader031/viewer/2022031815/55aac8071a28ab6e558b4842/html5/thumbnails/64.jpg)
4) Votre Premier Projet ATLCréer un fichier ATL (Model 2 Model)
![Page 65: Présentation - Transformation d'un fichier XMI vers SVG (JAVA et ATL)](https://reader031.vdocuments.net/reader031/viewer/2022031815/55aac8071a28ab6e558b4842/html5/thumbnails/65.jpg)
Votre Premier Projet ATL5) Créer un fichier ATL (Model 2 Text)
![Page 66: Présentation - Transformation d'un fichier XMI vers SVG (JAVA et ATL)](https://reader031.vdocuments.net/reader031/viewer/2022031815/55aac8071a28ab6e558b4842/html5/thumbnails/66.jpg)
Votre Premier Projet ATL6) Exécuter un fichier ATL
![Page 67: Présentation - Transformation d'un fichier XMI vers SVG (JAVA et ATL)](https://reader031.vdocuments.net/reader031/viewer/2022031815/55aac8071a28ab6e558b4842/html5/thumbnails/67.jpg)
Objectif : la transformation De XML vers SVG avec ATL.
Les étapes à suivre pour réaliser ce projet :
Créer les Méta Modèles (SVG , Diagramme Use Case).
Créer un exemple de Modèle de diagramme de use case au format xml
Définir Les transformations ATL.
Exécution les fichiers ATL
Transformation du diagramme avec ATL
![Page 68: Présentation - Transformation d'un fichier XMI vers SVG (JAVA et ATL)](https://reader031.vdocuments.net/reader031/viewer/2022031815/55aac8071a28ab6e558b4842/html5/thumbnails/68.jpg)
Voici un schéma explicatif, qui montre les trois étapes pour transformer un Model UML de diagramme de use case à un fichier Text d’extension .svg ).
Transformation du diagramme avec ATL
![Page 69: Présentation - Transformation d'un fichier XMI vers SVG (JAVA et ATL)](https://reader031.vdocuments.net/reader031/viewer/2022031815/55aac8071a28ab6e558b4842/html5/thumbnails/69.jpg)
1) Méta-Modèle de Diagramme de Use case
![Page 70: Présentation - Transformation d'un fichier XMI vers SVG (JAVA et ATL)](https://reader031.vdocuments.net/reader031/viewer/2022031815/55aac8071a28ab6e558b4842/html5/thumbnails/70.jpg)
2) Méta-Modèle de SVG
![Page 71: Présentation - Transformation d'un fichier XMI vers SVG (JAVA et ATL)](https://reader031.vdocuments.net/reader031/viewer/2022031815/55aac8071a28ab6e558b4842/html5/thumbnails/71.jpg)
3) Méta-Modèle de XML
![Page 72: Présentation - Transformation d'un fichier XMI vers SVG (JAVA et ATL)](https://reader031.vdocuments.net/reader031/viewer/2022031815/55aac8071a28ab6e558b4842/html5/thumbnails/72.jpg)
Pour bien savoir l’entête que vous devez mettre dans le fichier xmlgénéré par le logiciel Visual Paradigm vous devez suivre ces étapes :
4) Un exemple de Modèle de diagramme de use case au format xml
Un fichier project.xmisera créé.
![Page 73: Présentation - Transformation d'un fichier XMI vers SVG (JAVA et ATL)](https://reader031.vdocuments.net/reader031/viewer/2022031815/55aac8071a28ab6e558b4842/html5/thumbnails/73.jpg)
Dans notre cas, voici ce qui est généré
Ajouter ces attribus au fichier XML généré par Visual Paradigm
4) Un exemple de Modèle de diagramme de use case au format xml
![Page 74: Présentation - Transformation d'un fichier XMI vers SVG (JAVA et ATL)](https://reader031.vdocuments.net/reader031/viewer/2022031815/55aac8071a28ab6e558b4842/html5/thumbnails/74.jpg)
Transformation UML vers SVG
Transformation SVG vers XML
Transformation XML vers Text
5) Définir les transformations ATL
![Page 75: Présentation - Transformation d'un fichier XMI vers SVG (JAVA et ATL)](https://reader031.vdocuments.net/reader031/viewer/2022031815/55aac8071a28ab6e558b4842/html5/thumbnails/75.jpg)
Transformation UML vers SVG
![Page 76: Présentation - Transformation d'un fichier XMI vers SVG (JAVA et ATL)](https://reader031.vdocuments.net/reader031/viewer/2022031815/55aac8071a28ab6e558b4842/html5/thumbnails/76.jpg)
Transformation SVG vers XML
![Page 77: Présentation - Transformation d'un fichier XMI vers SVG (JAVA et ATL)](https://reader031.vdocuments.net/reader031/viewer/2022031815/55aac8071a28ab6e558b4842/html5/thumbnails/77.jpg)
Transformation XML vers Text
![Page 78: Présentation - Transformation d'un fichier XMI vers SVG (JAVA et ATL)](https://reader031.vdocuments.net/reader031/viewer/2022031815/55aac8071a28ab6e558b4842/html5/thumbnails/78.jpg)
Il faut exécuter dans l’ordre :
Le fichier ATL UML2SVG
Le fichier ATL SVG2XML
Le fichier ATL XML2TEXT
6) Exécution des fichiers ATL
![Page 79: Présentation - Transformation d'un fichier XMI vers SVG (JAVA et ATL)](https://reader031.vdocuments.net/reader031/viewer/2022031815/55aac8071a28ab6e558b4842/html5/thumbnails/79.jpg)
Exécuter le fichier UML2SVG
Génération du fichier svgModel.xml
![Page 80: Présentation - Transformation d'un fichier XMI vers SVG (JAVA et ATL)](https://reader031.vdocuments.net/reader031/viewer/2022031815/55aac8071a28ab6e558b4842/html5/thumbnails/80.jpg)
Exécuter le fichier SVG2XML
Génération du fichier svgModel_XML.xml
![Page 81: Présentation - Transformation d'un fichier XMI vers SVG (JAVA et ATL)](https://reader031.vdocuments.net/reader031/viewer/2022031815/55aac8071a28ab6e558b4842/html5/thumbnails/81.jpg)
Exécuter le fichier XML2TEXT
Génération du fichier DiagramUseCase.svg
![Page 82: Présentation - Transformation d'un fichier XMI vers SVG (JAVA et ATL)](https://reader031.vdocuments.net/reader031/viewer/2022031815/55aac8071a28ab6e558b4842/html5/thumbnails/82.jpg)
Fichier DiagramUseCase.svg généré
![Page 83: Présentation - Transformation d'un fichier XMI vers SVG (JAVA et ATL)](https://reader031.vdocuments.net/reader031/viewer/2022031815/55aac8071a28ab6e558b4842/html5/thumbnails/83.jpg)
Merci pour votre attention