We will demonstrate the recommended step-by-step instructions on how to customize an element, how to begin to create customization, how to create customization data, and how the customization data will be represented on the DSL element. 

  1. Create a new project and name it Organization_Stereotypes.mdzip.
  2. Create a Profile element and name it Stereotypes.

    Stereotypes

    The purpose of the Profile named Stereotypes is to store all the stereotypes. Later we will share the package in order to use the stereotypes in the customization project. 

  3. In the Profile element, create a Profile Diagram and name it Stereotypes.

    The Profile Diagram palette contains all the necessary buttons for the customization creation.

  4. In the Profile Diagram, create a Stereotype element and name it Company.

  5. Apply the Class metaclass to the Company Stereotype.



    • You can see how customization rules will be passed to the DSL element by using the stereotype.

    • We selected the Class metaclass, because the «Company» stereotype will be applied to a class element. In other words, the type of the DSL element will be the class.

    • You can also assign an icon to the stereotype. The icon will be represented on the DSL element. 

  6. Share the stereotypes package. The Organization_Stereotypes.mdzip project becomes a shared project.

    Only the content of the shared stereotypes package will be visible in the project that will use the project. 

  7. Save the Organization_Stereotypes.mdzip project.

  8. Create a new project and name it Organization_Customizations.mdzip.

  9. Create a Profile element and name it Customizations.

    The purpose of the Customizations package is to store all the customization data. Later we will share the package. 

  10. In the Profile element, create a Profile Diagram and name it Customizations.

    The Customizations diagram is intended for customization elements creation. 

  11. In the Profile Diagram, create a customization element and name it Company.


    On a diagram, you can see that the customization element is a class with the applied «Customization» stereotype.

  12. Use the Organization_Stereotypes.mdzip project in the current project.

  13. Open the Company customization element Specification window, under the General category, click the Customization Target property and then specify the Company stereotype.


    • To assign a customization target quickly, select the Company stereotype in the Model Browser and drag it to the shape of the Company customization element on the diagram pane.

    • In the Customization Specification window, you can specify customization data that will be passed to the DSL element. 

  14. In the Company customization element Specification window, under the General category, set the Hide Metatype check box to true. If the value is true, the element acts like a new standard element type in the modeling tool.

  15. In the Company customization element Specification window, under the Owned Elements category, click the Possible Owners property and then select the Package metaclass.

    The DSL element will be added to the package shortcut menu, under the Create Element command.

  16. Share the Customizations package. The Organization_Customizations.mdzip project with the shared Customizations package becomes a shared project.

  17. Save the Organization_Customizations.mdzip project.

  18. Create a project and name it Organization.

  19. Use the Organization_Customizations.mdzip project in the Organization project.

    The Organization_Stereotypes.mdzip project will be used in the Organization project automatically, because the Organization_Customizations.mdzip project uses the Organization_Stereotypes.mdzip project. 

  20. In the Organization project, create a Package and in that package, create a class element and name it NoMagic.

  21. Apply the Company stereotype to the NoMagic class element.

  22. Save and reopen the project.


If you modify the customization element and/or stereotype, make sure to reopen projects that use it.


In the following figure, you can see the Containment tree of the project with the used Organization_Stereotypes.mdzip and Organization_Customizations.mdzip projects.


Structure of a project that use other projects


In this example, the «Company» stereotype is applied to the NoMagic class element. You can see that the Company element is added to the package shortcut menu.

Example of the “Possible Owner” property realization

Create Element

If you do not want the new DSL element to appear on the Create Element menu, you can hide the appropriate command when customizing your modeling tool perspective