Skip to content
🤷

Forgive us! These docs are a work in progress. Some pages may be incomplete or describe features that aren't quite finished yet. Farkitect is in early development and we don't recommend using it for real work just yet. Feel free to explore — just be aware that things are still being built.

How to create a relationship type

  1. In the Explorer, expand your M2 metamodel package
  2. Right-click on the Relationship Types package
  3. Select New Relationship Type
  4. Rename it (e.g., “Manages”) and press Enter

With the relationship type selected, set its visual appearance in the Appearance section:

  • Line Pattern — Solid, Dashed or Dotted
  • Source Marker / Target Marker — None, Arrow (open), Triangle, Diamond, Circle or Bar; Triangle, Diamond and Circle can be Filled or Hollow
  • Line colour — leave it on Auto (charcoal in light mode, off-white in dark) unless the colour carries meaning
  • Label colour — the name, role names and multiplicities; Auto uses the theme’s label colours

Further down the Properties panel, set the direction labels:

  • Source → Target — forward direction label (e.g., “manages”)
  • Target → Source — reverse direction label (e.g., “managed by”)

Constraints control which element types this relationship can connect:

  1. In the Properties panel, open the Constraints section. It shows a grid of the metamodel’s element types: each row is a source, each column a target
  2. Tick the box where a source row meets a target column to allow that pair. Click a row’s name or a column’s name to tick or untick all of it at once
  3. Click Save

Changes to the grid are not applied as you make them, unlike the rest of the Properties panel. They are held until you click Save, so a stray click on a row name or on Clear All cannot change your metamodel by accident:

  • While changes are waiting, Unsaved changes shows under the grid with Discard and Save, the section heading reads Constraints · unsaved, and each box you have changed has an amber outline
  • Discard puts the grid back as it was saved
  • Unsaved changes are kept if you select something else and come back, for as long as the app stays open. They are lost when you close or reload it, and they are dropped if someone else saves that type’s constraints in the meantime

Select All removes the constraints: the relationship can then connect any two elements, including element types you add later. Ticking every box by hand means the same. Clear All allows no pairs at all.

A relationship type can have a superclass, in its Inheritance section, and inherits that type’s property types. Its constraints, appearance and verbs stay its own. An abstract relationship type is a good home for properties several relationship types share. See How to use class generalization.

The sections of a relationship type’s Properties

Section titled “The sections of a relationship type’s Properties”

Below the name and the two verbs are the sections Appearance, Inheritance, Property Types, Constraints and Advanced. Each heading says what is inside after a dot: Constraints · 3 pairs, or Constraints · nothing allowed when every box is clear. A plain Constraints means the relationship is unconstrained. While changes to the grid wait for Save, · unsaved follows in amber.

Tick Abstract in Advanced for a relationship type that exists only to be inherited from. It is then not offered when you connect two elements.

Relationship types can have properties just like element types. See How to define properties and enumerations.

  • Use solid lines for strong/structural relationships, dashed for dependencies, dotted for annotations
  • Source-to-target and target-to-source verbs appear in the Context panel and make relationships human-readable
  • The source-to-target verb is also what a diagram shows on each line when its relationship labels are set to Verb (see Choose what the relationship labels show), so keep it short: one or two words
  • Start with narrow constraints and widen later if needed — it’s easier to allow more than to restrict what’s already been used

Farkitect

Model anything.

“Welcome back — your diagrams have been plotting without you.”


Release 282 · 14 Oct 2026

New video: Exploring the Explorer, a four-minute tour of the Explorer panel

Release
282
Released
14 Oct 2026, 00:03 UTC
Built
14 Oct 2026, 00:03 UTC
Environment
Production
Surface
Docs
Commit
a9ad7d2
Branch
main