Skip to content

Overview

In this section we will explore the concepts and ideas that RIDDL uses. This is not about the RIDDL language syntax, just the concepts of the language.

Definitions

RIDDL consists only of definitions that define the design of the desired system.

Definitional Hierarchy

Definitions in RIDDL are arranged in a hierarchy. Definitions that contain other definitions are known as branches. Definitions that do not contain other definitions are known as leaves.

This is done simply by having an attribute that lists the contents of any definition:

  • contents: The contained definitions that define the container. Not all definitions can contain other ones so sometimes this is empty.

Simplifications

The valid hierarchy structure is shown below, but to make this hierarchy easier to comprehend, we've taken some short-cuts :

  1. All the common attributes have been omitted for brevity but are implied on each line of the hierarchy.
  2. We only descend as far as a Type definition. Whenever you see one, you should infer this hierarchy:
  3. Types

Hierarchy

With those clarifying simplifications, here's the hierarchy:

                              ┌─────────────────────────────────────────────┐
                              │                    Root                     │
                              └──────────────────────┬──────────────────────┘
                              ┌──────────────────────┴──────────────────────┐
                              │                   Domain                    │
                              └──────────────────────┬──────────────────────┘
                 ┌───────────────────────────────────┼───────────────────────────────────┐
                 │                                   │                                   │
           ┌─────┴─────┐                       ┌─────┴─────┐                       ┌─────┴─────┐
           │  Context  │                       │   Epic    │                       │   Type    │
           └─────┬─────┘                       └─────┬─────┘                       └───────────┘
                 │                                   │
    ┌────────────┼────────────┐                ┌─────┴─────┐
    │            │            │                │   Case    │
┌───┴───┐  ┌─────┴─────┐  ┌───┴───┐            └─────┬─────┘
│Entity │  │ Projector │  │ Saga  │                  │
└───┬───┘  │ Adaptor   │  └───┬───┘            ┌─────┴─────┐
    │      │ Processor │      │                │ Statement │
┌───┴───┐  │ Streamlet │  ┌───┴───┐            └───────────┘
│ State │  │ Function  │  │  Saga │
└───┬───┘  │ Handler   │  │  Step │
    │      │ Group     │  └───┬───┘
┌───┴───┐  │ Type      │      │
│Handler│  └───────────┘  ┌───┴───┐
└───┬───┘                 │ Stmt  │
    │                     └───────┘
┌───┴────┐
│OnClause│
└───┬────┘
┌───┴───┐
│ Stmt  │
└───────┘

Detailed Containment Reference

Container Can Contain
Root Domain
Domain Type, Epic, Context
Epic CaseStatement
Context Type, Entity, Projector, Saga, Adaptor, Processor, Function, Streamlet, Handler, Group
Entity Type, State, Function, Handler, Invariant
State Type, Field, Handler
Projector Type, Field, Handler
Saga Type, SagaStepStatement
Adaptor Type, Handler
Processor Type, Inlet, Outlet, Statement
Streamlet Type, Inlet, Outlet, Connector
Function Statement
Handler On ClauseStatement
Group Input, Output
Invariant Conditional

Next

When you're done exploring all the concepts, check out our guides next.

Full Index

The pages in this section cover each RIDDL concept in detail. Use the navigation menu to explore individual concepts.