This module contains the classes that are used to build the internal metamodel by introspecting the domain classes.

Many of the services defined (as interfaces) in the applib have implementations defined in this module (the rest are defined in Runtime Services).

What makes up the metamodel

The classes in this module are used to build up the metamodel from a variety of inputs sources:

metamodel inputs
Figure 1. metamodel inputs

Metamodel Concepts

The metamodel itself consists of the following parts:

Metamodel Terminology
Figure 2. Metamodel Terminology


  • Domain Objects have Properties, Collections

  • Viewmodels and Entities are specializations of Domain Objects.

    • View Models are (lifecycle-) managed by Apache Isis

    • Entities are managed by the configured persistence layer (either JDO or JPA).

  • Services in general are (lifecycle-) managed by Spring.

    Some Services are also included in the metamodel; we call these Domain Services (annotated with @DomainService). Their Actions (like Domain Objects') will be visible either Menu Actions in the Wicket UI and/or through the REST API.

  • Mixins contribute either a Property, a Collection or an Action to their Mixee (-type).