Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
Difference between revisions of "Sirius/Tutorials/DomainModelTutorial"
(→Create an Ecore Modeling Project) |
(→Create the elements of the metamodel) |
||
Line 88: | Line 88: | ||
Note that you can edit the name of a model element (class, attribute, relation) directly from the diagram: just click on a selected element to activate the label edition (let some time before the selection and the click to avoid triggering a double-clik). | Note that you can edit the name of a model element (class, attribute, relation) directly from the diagram: just click on a selected element to activate the label edition (let some time before the selection and the click to avoid triggering a double-clik). | ||
+ | |||
+ | Use the '''Attribute''' tool in the palette, or the popup, to create an attribute named ''name'' on '''Family''' and '''Person'''. | ||
+ | |||
+ | [[File:Sirius_tuto4_29.png]] | ||
+ | |||
Use the '''Composition''' tool in the palette to create a composition relation named ''members'' between '''Family''' and '''Person'''. | Use the '''Composition''' tool in the palette to create a composition relation named ''members'' between '''Family''' and '''Person'''. |
Revision as of 11:25, 3 August 2016
Contents
Overview
This tutorial explains how to create your first EMF Metamodel. It can be seen as the early step before the Starter Tutorial.
These instructions describe the creation of the BasicFamily metamodel. This metamodel defines 4 concepts that can be use to describe a family:
- The first concept is Family. A family has a name of type Estring.
- A family contains members of type Person. A person has a name of type EString.
- A person has 2 parents and many or no children.
- Two concepts herited from Person are Man and Woman.
- A person can have one father of type Man and/or one mother of type Woman.
To sum up, our metamodel have 4 concepts
- Family
- Person
- Man
- Woman
and 6 relations
- members from Family to Person
- children from Person to Person, with cardinality 0..*
- parents from Person to Person with cardinality 0..2
- father from Person to Man with cardinality 0..1
- mother from Person to Woman with cardinality 0..1
- an extend from Person for Man and Woman
Create the Metamodel
The easiest way to define a metamodel is to use Ecore Tools (based on EMF and Sirius), a graphical editor for Ecore models.
Install Ecore Tools
If you are using Obeo Designer or Eclipse Modeling packages, Ecore Tools is already installed.
Otherwise, you can find it here: EcoreTools site
To install it, click on Help/Install New Software...
Click on Add... and fill the fields
- Name: Ecore Tools Modeler
- Location: One of the update sites listed here EcoreTools UpdateSite
Click on Ok.
Finally, Click on Next > and follow the instructions to complete the installation.
Create an Ecore Modeling Project
In the Model Explorer View, right click on New->Other...
In Ecore Modeling Framework select Ecore Modeling Project
Name it org.eclipse.sirius.sample.basicfamily
Click on Finish : Ecore Tools creates a project containing an Ecore model with an empty package and a blank diagram.
Create the elements of the metamodel
Now you can use the palette to create the elements of the metamodel described previously.
Use the Class tool in the palette to create Family, Person, Man and Woman. Use the properties view to set Person as abstract.
Note that you can edit the name of a model element (class, attribute, relation) directly from the diagram: just click on a selected element to activate the label edition (let some time before the selection and the click to avoid triggering a double-clik).
Use the Attribute tool in the palette, or the popup, to create an attribute named name on Family and Person.
Use the Composition tool in the palette to create a composition relation named members between Family and Person.
Use the Bi-directional Reference tool in the palette to create the relation named children and parents from Person to Person.
Use the SuperType tool in the palette to create the inheritance relations from Man and Woman to Person
You should obtain this diagram:
More information about Ecore Tools modeler
Best practices on how to create a metamodel with Ecore:
How to generate the source code of the Metamodel
You should retrieve the basicfamily.ecore Ns URI. Open the basicfamily.ecore and select tab Model in properties view.
Change the Ns URI to http://www.eclipse.org/sirius/sample/basicfamily
Open the basicfamily.genmodel. This model allows EMF to generate the Java code corresponding to the metamodel.
Right click on first model element and select Generate All
The "Generate All" produces these elements :
- The code src in org.eclipse.sirisus.sample.basicfamily
- The MANIFEST.MF in the META-INF directory
- The directory org.eclipse.sirisus.sample.basicfamily.edit
- The directory org.eclipse.sirisus.sample.basicfamily.editor
- The directory org.eclipse.sirisus.sample.basicfamily.tests
How to test the metamodel
Launch a runtime to use the basic family concept.
In Model Explorer View, right click New->Other...
In Eclipse Modeling Framework Example EMF Model Creation Wizards, select BasicFamily Model
As you can see the BasicFamily Model have the default EMF icons.
To change this icon, modifiy BasicfamilyModelFile.gif
in /org.eclipse.sirisus.sample.basicfamily.editor/icons/full/obj16/
To obtain
Warning For every icons changes, you must restart the sirius runtime to see change.
Click on Next> button to create a basicfamily model.
Select Model Object Family
and click on Finish Button.
To add element to model right click on Family element and select Man or Woman element.
In properties view you can retrive element name and choose Parents or Children if elements are already present in model.
You can also change the icon for Man, Woman and Family defined in /org.eclipse.sirisus.sample.basicfamily.edit/icons/full/obj16