Skip to main content

Create a Metamodel

Every time you create a new model, you start by choosing its type. This could be a data model, a process model, an IT infrastructure model, a conceptual model, or something else. Each type is designed to describe a specific set of objects, along with their attributes and relationships.

For example, in a process model you describe events, actions, and their sequence. In an IT infrastructure model, you describe servers and the applications running on them.

Architeezy comes with a wide range of built-in modeling notations, so in most cases you won’t need to create your own. However, there are situations where defining a custom notation is useful. Let’s walk through creating one for requirements modeling.

Sign in and create a new project (see Quick Start).

Create a new model and select Metamodel as the type. Name it Requirement Model:

Metamodel creation

For convenience, the metamodel already includes a set of base classes:

  • NamedElement — an abstract base class with attributes: name, description, localized name, and localized description
  • RequirementModel — a model type
  • Entity — an entity type
  • Relationship — a relationship type between entities

New metamodel

Models, objects, and relationships can all have a name and description. To avoid repeating these attributes in every class, they are defined once in NamedElement, and other classes inherit from it.

Each attribute must have a data type:

  • Boolean — true/false values
  • Numeric — integer or floating-point values
  • String — text, with or without localization support
  • Time — date or time values
  • UUID — unique identifiers
  • Enumerated — a value selected from a predefined list

This metamodel also includes several predefined types for convenience:

  • String — single-line text
  • MultilineString — multi-line text
  • LocalizedString — localized single-line text
  • LocalizedMultilineString — localized multi-line text

These types differ in how they are edited in the properties panel. For example, multi-line text uses a larger text field, while localized text allows you to provide values in multiple languages.

Relationships are also objects with their own properties. They have a name and description (inherited from NamedElement), as well as references to a source and a target object.

That covers most of the core elements of a metamodel. The final piece is the composition relationship (shown as a diamond in the diagram above). It indicates that objects and relationships belong to the model—meaning they are created and displayed within the Requirements Model in the explorer.