Relations

Note

This document describes relations as a map of entities within specific architecture.

Synopsis

Important

The following rules are applied to a relation:

  • It defines edge relation between two or more entities within the specific system

  • It is only a transport between the claims of an entity

Relations form a dependency graph, very similar to a typical package manager in a regular Linux distribution, such as RPM or Dpkg. However, the main difference between a map of package relations for their dependencies and a system architecture map is that packages are static and unchanging, with only one map in the form of a simple graph. In contrast, an architecture can have a multi-layered graph that represents different relation types, depending on the states of entities or the entire system’s state or mode.

A working live system can have various settings, modes, component configurations, time usages, and so on. For example, a car’s engine requires a small starter motor. This is one state of the system, where the starter is required. However, once the main engine is running, the system is in a different state, where the starter is disengaged and no longer needed to maintain this state.

Relation syntax as follows:

relations:
   <entity-id>:
     $|<state-id>:
       requires:
         - <entity-id>
       consists:
         - <entity-id>
       conflicts:
         - <entity-id>

$

A default state.

<state-id>

An ID (label) of a specific state, with all relevant conditions to that state.

requires

A condition section containing other entities that are required to maintain the specific state of an entity.

consists

A condition section containing other additional entities that form and complete the current entity.

conflicts

Entities that are in conflict with the current state. For example, an engine starter should no longer be running in a car if the main engine is already running.

The following example shows the relation under two system states:

relations:
  car-engine:

    # Standby temporary engine state
    standby:
      requires:
        - starter
        - battery
        - fuel-tank

    # Running engine state
    running:
      requires:
        - fuel-tank
      conflicts:
        - starter

    # Cold engine state (turned off)
    $:
      consists:
        - starter
        - fuel-tank
        - battery