Domain Model (Metamodel)

3 minutes to read Download PDF Edit

Overview

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

Mendix Modeler Reference 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 - Non-numeric attributes

Graphical overview - Numeric attributes

Mendix Modeler Reference 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

Mendix Modeler Reference Guide | Model SDK API docs -| Entities (section “Inheritance Properties”) | 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

Mendix Modeler Reference 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, e.g. the attribute needs to be equal to a certain value, or has a maximum length, or needs to be unique.

Graphical overview

Mendix Modeler Reference 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

Mendix Modeler Reference Guide | Model SDK API docs -| Indexes | Property indexes of Entity | Index | IndexedAttribute