Domain Model Elements

SimpleModeling uses the following fundamental elements to construct domain models.

  • Entity

  • Value

  • Data Type

  • Powertype

  • Service

  • Event

  • Rule

  • Component

  • Subsystem

SimpleModeling captures the structure of the real world using these modeling elements.

domain element
Figure 1. Domain Model Elements

When it is necessary to explicitly indicate that a model element belongs to a domain model, we prefix it with "Domain", such as "Domain Entity". However, when the context is already within domain modeling, we refer to elements simply as "Entity", without the "Domain" prefix.

Classifier

In UML, class-like model elements within models are called classifiers.

The following model elements are classified as types of classifiers:

  • Class

  • DataType

  • Powertype

  • Component

We will discuss classes later; here, we explain the model elements that fall directly under classifiers, excluding classes.

Note that classifiers appear in this article for classification purposes of domain components, but they are rarely used directly in domain modeling itself.

Domain DataType

Domain data types are data types defined within a domain model.

These data types are defined by extending the basic data types provided in Profile : Base DataType with domain-specific constraints and semantics.

Examples: EmailAddress, PostalCode

Domain Powertype

Domain powertypes are powertypes defined within a domain model.

A powertype is a model element that represents the classification of a class.

It serves a similar purpose to traditional classification codes.

In implementation, powertypes are often represented using enum types.

Examples: CustomerType, ProductCategory

Domain Component

A domain component represents a functional unit within a domain model.

It encapsulates multiple entities and services, forming a reusable structural unit.

Domain SubSystem

A subsystem is a type of component that encapsulates a domain area with a clear responsibility across the entire application.

Examples: Billing Subsystem, Inventory Management Subsystem # Domain Class

In UML, a class is one type of classifier and provides the general characteristics of a class.

In SimpleModeling, the following are the main classes that serve as elements of a domain model.

  • Domain Entity

  • Domain Value

  • Domain Rule

  • Domain Service

Domain Entity

A domain entity is an entity object that forms part of the domain model.

It is a persistently existing object, recorded in databases and surviving beyond the lifecycle of software execution.

In SimpleModeling, domain entities are classified into the following four types:

  • Domain Resource

  • Domain Task

  • Domain Actor

  • Domain Role

Domain Resource

A domain resource is an entity object that represents information about "resources" required for software operation.

Nature

Static (master data)

Creation Timing

Registered before or during stable system operation

Primary Purpose

Definition and reference of information

Persistence

Referenced for long periods and rarely modified

State Transition

No state changes during normal operation

Relationship

Referenced by other entities (being referenced)

Deletion / Modification

Rarely deleted, limited modifications (with history tracking)

Application UI

UI for reference and selection is needed

Representative Examples

Customer, Product, Warehouse, Department

Domain Task

A domain task is an entity object that represents information about "actions" during software operation.

Nature

Dynamic (transaction data)

Creation Timing

Generated sequentially during business operations

Primary Purpose

Execution and recording of business operations

Persistence

Persisted but generally immutable after completion

State Transition

Has explicit state transitions (e.g., Draft → Confirmed → Completed)

Relationship

Refers to other entities (uses resources)

Deletion / Modification

Generally not modified after completion (for auditing)

Application UI

UI for creation, editing, processing, and state transitions is needed

Representative Examples

Order, Payment, Leave Request, Inquiry, Approval Request

Domain Actor

A domain actor is a proxy object that represents external entities such as users or external systems.

Examples: User, Payment Service

Domain Role

A domain role is an entity object that represents the role or relationship an entity fulfills within a context.

Examples: Assignee, Issuer

Domain Value

A domain value is an immutable object that has no identifier and derives its meaning solely from its value.

Examples: Money, Address

Domain Event

A domain event models an event that occurs within the domain.

It captures business state changes and is used for notifications or event sourcing.

Examples: OrderConfirmed, InventoryChanged

Domain Rule

A domain rule is an object that encapsulates rules used within the domain.

It represents business logic, constraints, and other rules or decision criteria within the domain.

Domain Service

Represents procedural business logic that does not belong to a specific object.

It is applied to processes exposed outside subsystems/components or those that span multiple domain objects.

Examples: Invoice issuance, payment processing, bulk inventory adjustment

Domain Object

The term "domain object" narrowly refers to instances of domain classes, but in SimpleModeling, we use it in a broader sense to refer to all classifiers that make up a domain model, including both their definitions and instances.

Specifically, the following classifiers discussed in this article are considered domain objects:

  • Domain Entity

  • Domain Value

  • Domain Event

  • Domain Service

  • Domain Rule

  • Domain Data Type

  • Domain Powertype

  • Domain Actor

  • Domain Role

  • Domain Component

  • Domain Subsystem

State Machine

A state machine defines the transitions and control rules within the lifecycle of a domain object.

In particular, domain tasks and some entities have explicit state transitions to manage business progress.

Although not a classifier, the state machine is an important element for explicitly expressing domain model behavior.