Domain Model in the Mendix Metamodel

Last modified: August 19, 2024

Introduction

The domain model represents the data that is stored in your app. Each module has a domain model, consisting of entities, which have attributes of a certain type and associations with other entities.

Attributes have a value which can either be a StoredValue, which is a value stored in the database, or a CalculatedValue, which is computed from a Microflow.

The entities can also relate to each other through generalizations. Finally, you can define access rules, validation rules, event handlers and indexes for entities.

Graphical Overview

Studio Pro Guide Model SDK API Docs
Domain Model TypeScript module domainmodels
Entities DomainModel
Attributes Entity
Associations Association
Attribute

Attributes

Entities can have multiple attributes. Each attribute has a specific type.

Graphical Overview of Non-Numeric Attributes

Graphical Overview of Numeric Attributes

Studio Pro Guide Model SDK API docs
Attributes Property attributes of entity
Attribute
AttributeType

Generalization Relationships

Entities can have a Generalization relationship with another entity. The entity is then called a Specialization. A specialization entity inherits all attributes, validation rules and access rules from its Generalization entity.

An Entity instance has a generalization property with which to define this relationship. It can either be set to a NoGeneralization instance if it is not a specialization of another entity, or it can be set to a Generalization instance. A Generalization instance has again a generalization property which must point to the entity that is the actual generalization.

Graphical Overview

Studio Pro Guide Model SDK API docs
Entities Property generalization of Entity
GeneralizationBase
Generalization
NoGeneralization

Access Rules

To secure access to the data in a Mendix app, you can define access rules for entities. An access rule is always defined for a certain module role, defines to which attribute or association members that role has access, and the retrieved data is constrained by an XPath constraint.

Graphical Overview

Studio Pro Guide Model SDK API docs
Access rules Property accessRules of Entity
AccessRule
Property xpathConstraint of AccessRule
ModuleRole

Validation Rules

For each attribute of an entity, it is possible to define a validation rule. The validation rule is applied to a single attribute, will show some error message, and it is a certain type of rule, for example, the attribute needs to be equal to a certain value, or has a maximum length, or needs to be unique.

Graphical Overview

Studio Pro Guide Model SDK API docs
Validation Rules Property validationRules of Entity
ValidationRule
RuleInfo

Indexes

An entity can have multiple indexes. Each index consists of a set of indexed attributes.

Graphical Overview

Studio Pro Guide Model SDK API docs
Indexes Property indexes of Entity
Index
IndexedAttribute