Est-ce que quelqu'un sait s'il est possible de transformer le XMI généré en Ecore XMI?!
Oui, c'est possible - au moins dans les grandes lignes. Vous pouvez penser au problème en deux parties:
- Qu'est-ce que la cartographie sémantique? En d'autres termes, comment mappez-vous les concepts de l'interface XMI source aux concepts du modèle eCore cible?
- Comment allez-vous mettre en œuvre ces mappages dans la pratique?
Cartographie sémantique
Je suppose ici votre métamodèle se concentre sur la structure statique. ECore ne supporte pas les concepts dynamiques en dehors de la déclaration des EOperations. Plus sur la dynamique ci-dessous si c'est pertinent.
Je ne connais pas EA spécifiquement, ni quelle (s) version (s) de XMI il supporte. Cependant, il sera une variante des concepts UML de base: classe, attribut, opération, Association, AssociationEnd, etc. eCore a similar (if smaller) set of concepts: EClass
, EAttribute
, EDataType
, EReference
, EOperation
, etc. Il y a une corrélation assez forte entre les concepts 'type'; par exemple:
- UML Class -> EClass
- Attribut -> EAttribute
- Opération -> EOperation
Ainsi, la cartographie devrait être straighforward. Fondamentalement créer une instance de l'équivalent ECore pour chaque concept UML.
Les relations sont un peu moins évidentes mais toujours réalisables. ECore ne supporte pas les relations directement; EReference
est le seul concept analogue. Cependant, il est assez facile de synthétiser des associations, par exemple:
- Une association UML navigable à sens unique devient un
EReference
avec min & max cardinalité copié sur
- Une association UML bidirectionnelle devient deux
EReferences
, un dans chaque direction.Vous devez également définir la propriété EOtherEnd
, ce qui signifie que les deux EReferences
font partie de la même association.
Espérons que cela vous donne l'idée.
mise en œuvre
Après avoir défini votre cartographie conceptuelle, il y a beaucoup d'options sur la façon de le faire. Tous suivront généralement le même modèle de base:
Parse Source -> Concepts de source de la carte pour cibler les concepts -> générer le texte cible.
Vous pouvez utiliser xslt (car il s'agit juste d'une transformation XML-> XML). Vous pouvez également utiliser l'un des nombreux kits d'outils Model-to-model (M2M) et/ou Model-to-text (M2T) disponibles. Voir par exemple le projet de modélisation d'éclipse (M2M, M2T). Vous pouvez également aller directement à partir d'EA en lisant le modèle en utilisant l'API EA au lieu de générer & en analysant XMI. Ce que vous choisissez dépendra de votre environnement, de vos compétences, etc.
Si vous voulez voir à quoi cela pourrait ressembler en pratique, jetez un oeil à MagicDraw. Il fournit l'exportation ECore hors de la boîte. (Notez que c'est un outil payant - mais eval est disponible).
Il peut également être intéressant de demander directement à Sparx: je serais un peu surpris s'il n'y a pas de module d'extension/plugin d'exportation ECore disponible pour EA.
hth.
Dynamics
Si votre modèle est dynamique (modèles d'état, etc.) alors vous avez plus d'un problème. ECore ne couvre pas ces concepts du tout. Il est possible d'étendre ECore et cela pourrait être une option - mais c'est potentiellement plus de travail car les outils qui fonctionnent avec ECore seront moins susceptibles de comprendre vos extensions.
Super commentaire! Merci beaucoup! – matthias
de rien. Un wee upvote serait une belle façon de montrer son appréciation ... :-) – sfinnie