Displaying items by tag: tagged values
Extending the ArchiMate metamodel in Enterprise Architect
Introduction
ArchiMate is an open standard for modeling enterprise architecture. ArchiMate is a modeling language and has a close relationship with the architectural framework Togaf. This combination means that ArchiMate has been introduced by many organizations, both commercial, non-profit and government institutions in the Netherlands and other countries. In addition, ArchiMate modeling is powerfully supported in Sparx Enterprise Architect.
In this article we discuss expanding the ArchiMate modeling language. Not for introducing new concepts but by adding properties to elements and relationships in the language. This is part of the metamodel in ArchiMate open standard and offers organizations the opportunity to register c features of the organization-specific enterprise architecture in close connection with the concepts in the language.
ArchiMate metamodel
ArchiMate is a rich modeling language with about sixty elements and twelve relationships. This makes it possible to model all aspects of an organization and its environment. In some situations, ArchiMate is seen as too rich for specific goals and target groups. ArchiMate has also introduced a mechanism for this and described it in detail. Namely views and viewpoints.
Image metamodel
This means that ArchiMate's metamodel closely matches the needs of many organizations, ranging from just the open standard to making extensions in the language for the benefit of their own organizational needs.
ArchiMate in Enterprise Architect
Enterprise Architect supports multiple modeling languages such as UML, BPMN, BABoK. ArchiMate is also well supported in Enterprise Architect. In addition, more and more mechanisms of the ArchiMate language have been implemented. This includes extensions in addition to the ArchiMate diagrams such as the toolbox, working method for the ArchiMate viewpoints and the option to view viewpoints using the model wizard and then generate an initial view based on the viewpoint.
Image ArchiMate in EA
Since version 16 of Enterprise Architect, it has also been easy to restrict the metamodel for elements and relationships. This makes it possible to limit the language in elements, relationships, diagrams and quick linkers for certain user groups. A nice functionality for organizations that want to use a limited set of the ArchiMate language to simplify the language for the various stakeholders.
ArchiMate also describes expanding the language with properties. If you want to make organization-specific extensions, that is possible. There are also functionalities available in Enterprise Architect that support this. The MDG technology builder in particular has the option to expand the language with elements and relationships with their own properties. This allows you to introduce your own modeling language. In itself a powerful functionality, but also with a major disadvantage. You introduce a new modeling language based on ArchiMate, but IN ADDITION to ArchiMate. In many situations this is not desirable.
In this article I will therefore introduce a method that makes it possible to introduce organization-specific properties within the ArchiMate language without creating a new modeling language. For this we use an example based on the description available on the website with the ArchiMate standard (see the useful links below).
Combine functionalities in Enterprise Architect
As mentioned, you can use the MDG Technology builder to expand the metamodel for a language. This functionality uses the Tagged Values concept in the background. This functionality makes it possible to extend the Enterprise Architect data model.
To expand the ArchiMate language, we can suffice with the use of Tagged Values. The description of the ArchiMate language does mention specializations of concepts. However, if we look at the description, we see that no new mutual connections arise. New specializations can therefore be developed using Tagged Values.
You can elaborate these Tagged Values within the UML types, but they can also be used for ArchiMate. What is powerful is that a script can be defined for a Tagged Value. This allows us to set additional behavior and conditions for the different Tagged Values. In the image below you see the screen where you can define the Tagged Values in combination with the result in the tags of an element. I'll use a simple naming convention here. The name of the Tagged Values all start with ArchiMate. I will come back to this later.
Image: Tagged Values
We can now easily expand the model based on the stereotypes and the tagged values without having to introduce new stereotypes. This means that the ArchiMate metamodel remains available unchanged and we can continue to exchange ArchiMate models based on the AMEF exchange format.
However, there is a functionality missing that makes the modeler’s life easy. A bottleneck with the tagged values is that the tagged values have to be added manually via the property screen. This is repetitive and slowing down when working with your own tagged values.
Fortunately, there is something that can be done about that. In Sparx Enterprise Architect you can catch events that occur in Enterprise Architect via a (model-based) add-in. This also applies to a context changed event. This means that if the context changes to another element or another connector, a command is executed. You can then use the Enterprise Architect API to check whether all tagged values are present for a certain stereotype and, if not, create these tagged values for the element or connector.
This functionality has been realized in the IDEA Add-on. In the settings of the IDEA addon you can prefix which tagged values should be created. In our case this is ArchiMate as a prefix, then the IDEA addon is used based on the handling of an event in EA. In the image below you can see the piece of software that underlies this within the IDEA AddOn. If you want to create a model-based add-in yourself, you can do so based on the code in the example below.
Public Shared Function DefaultTaggedValues(Element As EA.Element, _
Repository As EA.Repository) As Boolean
Dim Tag, oTV As EA.TaggedValue
Dim oDef As New IDEADefinitions()
Dim Prefix As String
Dim oPT As EA.PropertyType
Dim strPTTag As String
Dim strNames As String = ";"
Try
Prefix = oDef.GetSettingValue("TaggedValuePrefix")
If Prefix.Length > 0 Then
For Each oTV In Element.TaggedValues
strNames += oTV.Name + ";"
Next
For Each oPT In Repository.PropertyTypes
Dim blnCreateTag As Boolean = False
strPTTag = oPT.Tag.ToString()
If strNames.Contains(strPTTag) Then
blnCreateTag = False
Else
If strPTTag.Contains(Prefix) Then
If oPT.Detail.ToString().Contains("BaseStereotype") = False And _ Element.Stereotype.Length > 0 Then
blnCreateTag = True
End If
If (oPT.Detail.ToString().Contains("BaseStereotype") And _
oPT.Detail.ToString().ToUpper().Contains(Element.Stereotype.ToUpper())) Then
blnCreateTag = True
End If
If oPT.Detail.ToString().Contains("AppliesTo=" + Element.Type) Then
blnCreateTag = True
End If
If blnCreateTag Then
Tag = Element.TaggedValues.AddNew(oPT.Tag, "")
Tag.Update()
End If
End If
End If
Next
Element.Update()
Return True
Else
Return False
End If
Catch ex As Exception
DLA2EAHelper.Error2Log(ex)
End Try
Return False
End Function
Source code
I have created an example for the combination of the tagged values and the IDEA, including a short video on how this can be achieved.
Summary
This whitepaper describes how you can extend the ArchiMate metamodel with properties. In Sparx Enterprise Architect this is possible with the tagged value functionality. In addition, the IDEA AddOn describes how repetitive and slow work for the modeler can be automated. With this we introduce a powerful method to extend the ArchIMate metamodel without having to introduce new stereotypes into the model. Particularly for organizations that see working based on open standards as an important requirement.
Useful Links
Enterprise Architect 12.1 Beta available: a first preview
Sparx Systems released mid September the first beta of Enterprise Architect version 12.1. Full details on this version are available here.
Below is a summary of the main features and enhancements introduced in EA 12.1.
Web-based, online EA User Guide
Enterprise Architect User Guide has been redesigned to access the help content from a web browser. By default, the EA user guide is opened on Sparx Systems web site in order to access an up to date help content.
For those who use Enterprise Architect offline, an installation file makes it possible to access it locally. The online help section is available here.
Project Security
Management of security user accounts and groups in Enterprise Architect 12.1 has been improved with the Active Directory Groups support (prior to this version, each AD user had to be imported).
Permission and user details are shown in a more efficient manner.
Tagged Values support in the Traceability view
The traceability view provides a dynamic, navigable view of the current element's relationships to other elements in the model, e.g. to find associated classes, realized requirements, etc.
Enterprise Architect 12.1 adds a support for model elements referenced in a Tagged Value. To illustrate this enhancement, a RefGUID Tagged Value (see. Sparx EA User Guide) has been defined so that a reference between an business and implementation class can be set. In the example below, the traceability view shows a link between Class1 (Domain Object) and Class1 (System) via the "Tagged Value References" list.
Diagrams
Metafile rendering improvement
Image Metafile rendering has been improved with Enterprise Architect 12.1. An anti-aliasing filter is applied for many metafiles to increase the image clearness. Below is a screenshot-based comparison between Enterprise Architect versions 12 (build 1512) and 12.1 (build 1220).
Enterprise Architect 12 :
Enterprise Architect 12.1 :
Note: a new image library to use with Enterprise Architect 12 is available from Sparx Systems web site.
Quicklinker: Create multiple elements
The Quicklinker is a very useful feature that lets you create elements on the fly from within a diagram. Enterprise Architect 12.1 makes it possible to create multiple elements at once. When dragging the Quicklinker, a new option is available:
The popup window below lets you define a list of associated elements, providing their name, type and link type:
Once submitted, the expected elements are created:
Model Wizard pattern customization
The Model Wizard is available via the Project Browser to create a predefined model structure, provided by Sparx Systems. A new "Customize Pattern on Import" option is available to let users select the model branches to generate.
Virtualized Connector Ends
Enterprise Architect 12.1 introduces the concept of virtualized elements, a feature that lets you show several times the same element onto a diagram. This feature answers a need for a number of users that need to achieve this e.g. to simplify its layout.
I tried to add the same class twice onto a diagram and Enterprise Architect didn’t let me do that, so how does this feature work?
Once a connector has been created between elements, a right click on this connector makes it possible to create a virtual representation of the element. In the following diagram, a blue connector has been added between the Transaction and ShoppingBasket classes.
A right click on the connector lets you virtualize the connector end either to the Source or Target i.e. it lets you create a virtualized element of the source (Transaction class) or the target (ShoppingBasket class).
Notes:
- Enterprise Architect 12.1 does not let you create connectors to a virtualized element. It would be useful as an enhancement to allow the association of a virtualized element with any other element.
- When the element or any of its virtualized version is selected, they’re all selected.
- When the main element is hidden, all virtualized elements are hidden as well since they're directly associated with connectors.
- Hiding a virtualized element will hide the connector as well.
- Virtualized elements don't count as additional occurrences of the element in the diagram (results from running Find in All Diagrams are the same).
Diagram Legends
This feature hasn’t changed for a while until this new version 12.1 which supports a link between the diagram legend and the rendering style of the elements and connectors.
The Diagram Legend window provides additional options to compare elements with the legend’s content. If an element matches a set of criteria, it will be rendered with a fill colour, line colour and line width as set in the legend’s value. This is enabled with the “Apply auto color” option.
To test this enhancement, a filter has been defined on the element’s alias i.e. the legend’s values will be compared with the elements’ aliases. Evaluation has been restricted to Class elements (see option "Applies to" in the screenshot below). On the following diagram:
- StockItem class is rendered in green as its alias is set to 1
- LineItem class is rendered in light red as its alias is set to 2
- Class2 class is rendered in light blue as its alias is set to Class (note that Class1 alias doesn’t match)
Note: the association stereotyped “test” is rendered in orange as per the following settings.
This enhancement can save time, however I can see some limitations:
- In a given legend, I can only apply a filter for a specific type of elements. In other words it is not possible to define styles for classes, interfaces, and components in a diagram. A diagram legend definition is also restricted to a given element’s property such as the alias (note the element’s name doesn’t seem to be supported). It would make more sense to make the Filter and Applies to settings specific to each diagram legend value.
- Matching values only work with numeric values or identical string values. It would help to have a way to set a rule like ‘Class-*’.
- It would also be useful to have an option to define a connector’s line style based on the legend (e.g. Orthogonal, Tree Style...).
- The tested value is shown in the legend whereas in most cases it is not relevant to the target audience. It would be better to have a separate field to set the content to display in the diagram legend, e.g. to display "Customer" for elements matching the rule where their Alias starts with "Cust-", instead of showing "Cust-" in the legend.
Info View
According to Sparx Systems, Info View is a new option aimed at providing “a simplified view of an element that allows the name, description and selected other properties to be displayed […]. This view allows a diagram to be constructed for a non-technical audience or any purpose where display of descriptions is more important than the notations defined by the modeling language.”
This can be enabled via a right click on an element > Info View > Enabled. Then properties can be chosen as needed. Below is an illustration for a class and use case:
Windows Phone 8 Wireframing support
Wireframing has been introduced in version 12 to create UI diagrams for web sites, iPhone, iPad and Android phones. Windows Phone support has been added in Enterprise Architect 12.1:
Schema Composer
The Schema Composer includes the following enhancements in version 12.1:
- CIM Schemas can be reverse-engineered to create Schema Composer profiles.
- When loading classes into the Schema Composer from Message Assemblies or from Class Diagrams, all classes referenced through inheritance and associations are also loaded, ensuring the inclusion of all classes required for generation of valid schemas.
SysML 1.4 support, SysML 1.2 & 1.3 enhancements
SysML 1.4 is now supported and enhancements have been added for previous SysML 1.2 and 1.3 versions:
- Multiplicity is shown for SysML 1.2 and 1.3 ports displayed in a compartment on their parent block.
- On Parametric diagrams, SysML 1.3 Properties owned by constraint blocks or constraint properties are now drawn as a small box with an external label.
- The ID and Text values of SysML requirements can now be displayed in the Summary window.
- Behaviour of copies of SysML requirements updated such that Text tagged value on copies is pinned and updated as the original is updated.
BPSim 1.0 support
Sparx Systems has announced the following: “Enterprise Architect supports BPSim, a specification for parameterization and exchange of process analysis data, allowing the creation, comparison and reuse of different simulation configurations stored within the model. BPSim takes into account a wide range of runtime information such as statistical information, random variations, queuing, scheduling and resources. BPSim configurations can be exported from Enterprise Architect for consumption in a 3rd party simulation engine”.
Note that a BPSim capable simulator is planned to be released in Enterprise Architect for the end of this year.
Tagged Values Tutorial
Tagged Values are a convenient way of adding additional information to an element, beyond what is directly supported by Enterprise Architect.
Enterprise Architect defines a Tagged Value Type, which constrains the possible values of a tag and can specify how a value is assigned to the tag.
This user guide provides a step-by-step tutorial on how to create various predefined tagged Values and add them to an Enterprise Architect element.
Click here to read the Tutorial Document.