Skip to content

Base profile & modeling

This page describes how to model applications using the Base platform.

It focuses on:

  • simple types
  • REST modeling
  • methodtypes
  • pseudocode for sequence diagrams
  • layers
  • how the model maps to OpenAPI + diagram artefacts

1. Simple types

Provided by common-base/types.cmn:

  • String, Integer, Long, Boolean
  • Date, DateTime
  • semantic helper types like Id

Used across all higher‑level platforms.


2. REST modeling with resources

Example:

cmn
resource /hello as Greeting {
    read sayHello()
}

2.1 Methodtypes

Base provides:

Raw:

  • GET, POST, PUT, DELETE

Opinionated (CRUD):

  • create → POST
  • read → GET
  • update → PUT
  • delete → DELETE
  • query → GET with optional pagination

Example:

cmn
resource /customers as Customer[] by id {
    create()
    read readCustomer()
    update()
    delete()
    query()
}

3. Types

Basic:

cmn
type Greeting {
    message*: String
}

Complex types show up in datatype diagrams (hierarchy, references).


4. Pseudocode (optional)

Used to generate sequence diagrams:

cmn
    provide /hello subPackage='greeting.v1' controller="GreetingV1Controller" {

        read {
            if 'is morning' {
                [[ return 'Good Morning' ]]
            } else 'is evening' {
                [[ return 'Good Evening' ]]
            } else {
                [[ return 'Hello']]
            }
        }
    }

5. Layers

Layers can be defined:

cmn
core package com.example.demo
platform Base
cmn
api package com.example.demo.api
platform Base

They affect:

  • diagram organisation
  • outlet routing

6. Summary

The Base facility allows you to:

  1. define types
  2. define REST resources
  3. use methodtypes
  4. model processes
  5. generate OpenAPI + diagrams