06/04/2011

Creating an MDG – Part 1: Create an UML Profile

 

Why creating UML Profiles in Sparx EA? According to the Help-file in Sparx:

“UML Profiles provide a means of extending the UML Language, which enables you to build UML models in particular domains. They are based on additional stereotypes and Tagged Values that are applied to UML elements, connectors and their components. A Profile is a collection of such extensions that together describe some particular modeling problem and facilitate modeling constructs in that domain. UML Profiles for Enterprise Architect are specified in XML files, with a specific format. These XML files can be imported into Enterprise Architect through the Resources window.

The imported Profile also automatically generates a page of elements and relationships in the Enterprise Architect UML Toolbox.

The Resources window contains a tree structure with entries for items such as MDG Technologies, Documents, Style sheets, Matrix profiles and UML Profiles. The UML Profiles node initially contains no entries; to be able to use Profiles you must import them into Enterprise Architect from supplied XML files.

Items in the Profile represent stereotypes. UML supports a large number of stereotypes, which are an inbuilt mechanism for logically extending or altering the meaning, display, appearance and syntax of a model element. Different model elements have different stereotypes associated with them.”

The profile will tell you which model elements are available for modeling in EA. The model elements can be created by drag and drop from the toolbox. But how to do it?

Create the file

First of all, create a new eap-file and add a package to the model that will contain your profile (in this case the package “MDG Profile”). Open the properties of the folder and stereotype it as “profile”. Add a Class-diagram to the folder.

image

Make sure not to use spaces in the names of the packages or the diagrams. If you need to use spaces, you can alias your package while using spaces. You should also add a description to the notes-field for clarity.

image

Create a new element

If you want to create new elements, add a Class-item to the diagram and stereotype it as a “metaclass”. Alternatively, drag a Metaclass-item from the Profile-toolbox and drop it on the diagram. In the window that appears, choose a “Class”-element (or something else if you want to inherit from another existing element). Your new element will eventually inherit from the Class-metaclass.

image

To create your own new element, drag a Stereotype-item on the diagram and give it a name of “MyElement”.

image

Optionally give it an alias and a description.

image

Now select the newly created element on the diagram, select the little arrow symbol that appears and drag/drop it on the metaclass-item. Choose “Extend”.

image

Create tagged values

Right now you have created your own element which in the end you could use for your modeling. But if you don’t add new functionality to your newly created element, then it wouldn’t make sense to extend the Class-element. So now we are going to stereotype our new element as “myElement”, add an attribute (which will eventually appear in the Tagged Values window) with a boolean type and add an attribute with a custom enumeration-type.

Standard tagged values

To create a stereotype for your element, add an attribute with the name ‘_metatype’, and fill in the name in the Initial-field. Make sure you don’t change the Type-field!!

image

Custom tagged values – standard type

To create a Disable-field with a boolean-value, add an attribute as in the picture below. If you want, you can give it a default value in the Initial-field.

image

Custom tagged values – custom enumeration type

First drag an enumeration-item on the diagram, give it a proper name, and add the possible values via the attributes-window (without ‘Typing’ them).

image

Then, in our new element, add an attribute called “UsingMyEnumeration”. In the Type-field, select “Select Type…” and browse to your newly created enumeration. If wanted, give the attribute a default value.

image

Appearance

If you want, you can give your new element a custom default appearance (for example a red color).

image

Alternatively, you can create shape-scripts to change the appearance of your element. You can even adapt the appearance of your shape depending on attribute-values.

For that, you add an attribute with a name of “_image” (again don’t change the Type-field) and click on the ellipsis-button.

image

A new window will appear where you can add a shape-script. On the right side you can preview the result.

image

Using your profile

We now need to export the profile to be able to use it in future modeling. Right click the MdgProfile package and select “Save Package as UML Profile”. Navigate to the folder where you want to save the profile, and give the file a meaningful name (which will receive the extension .xml).

A new window appears. The Profile Name-field is default populated with the name of the package, and the Notes-field is populated with the value of the Notes-field in the package-properties. Click “Save” with the default settings.

image

If you open the file in a notepad-editor, your file should look like this:

<?xml version="1.0" encoding="windows-1252"?>
<UMLProfile profiletype="uml2">
    <Documentation id="FE160B62-2" name="MdgProfile" version="1.0" alias="MDG Profile" notes="MDG Technology for MDG Manual."/>
    <Content>
        <Stereotypes>
            <Stereotype name="MyElement" alias="My Element" metatype="myElement" notes="Some description for MyElement" cx="90" cy="70" bgcolor="255" fontcolor="-1" bordercolor="-1" borderwidth="1" hideicon="0">
                <AppliesTo>
                    <Apply type="Class">
                        <Property name="isActive" value=""/>
                    </Apply>
                </AppliesTo>
                <TaggedValues>
                    <Tag name="Disable" type="boolean" description="" unit="" values="true,false" default="false"/>
                    <Tag name="UsingMyEnumeration" type="enumeration" description="" unit="" values="value1,value2,value3" default="value1"/>
                </TaggedValues>
            </Stereotype>
        </Stereotypes>
        <TaggedValueTypes/>
    </Content>
</UMLProfile>

Now you can test your profile by importing it via the Resources window (View >> Other Project Tools >> Resources). Right click the UML Profile folder in the Resources window and select “Import Profile”. Browse to the previously saved file and click “Import” and notice the new entry “MdgProfile” with one element in the tree: MyElement.

image

Now test the profile by dragging the element on the diagram. It should color red, and if you select the element on the diagram, you should see the previously created attributes in the Tagged Values window.

image

Notice the stereotype of our element (in yellow) and the two attributes with a picklist, “Disable” with a true/false picklist, and “UsingMyEnumeration” with our custom enumeration-picklist.

Finished.