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.

Adding Properties to Your Metamodel

This tutorial picks up where Creating Your First Metamodel left off. You have a working Farquind Org Map metamodel with Person, Team, and System element types. Now you’ll add typed properties and enumerations so that model elements carry structured data.

Prerequisites: You’ve completed Creating Your First Metamodel and have the Farquind Org Map metamodel in your project.

What you’ll build: Typed properties on Person (Title, Department), an enumeration on System (System Status), and a property on the Belongs To relationship.

Properties are defined on M2 element types and appear as editable fields on every M1 instance of that type.

  1. Select the Person element type in the Explorer (under Farquind Org Map > Element Types > People & Teams)
  2. In the Properties panel, find the properties section
  3. Click to add a new property
  4. Rename it to Title
  5. Set the type to String
  6. Set the multiplicity to 0..1 (optional — not every person needs a title in the model)
  1. Add another property on Person
  2. Name it Department
  3. Type: String
  4. Multiplicity: 0..1

Enumerations define a fixed set of named values — ideal for properties where the value must come from a controlled list.

  1. Right-click on the Enumerations package in your metamodel
  2. Select New Enumeration
  3. Rename it to System Status
  4. In the Properties panel, add literal values:
NameValue
Plannedplanned
Activeactive
Retiringretiring

These represent the lifecycle stages of a digital system at Farquind.

  1. Select the System element type (under Technology)
  2. Add a new property
  3. Name it Status
  4. Set the type to System Status — your custom enumeration appears in the type picker alongside primitive types like String and Integer
  5. Set the multiplicity to 0..1
  6. Optionally set a default value of active — new System instances will start with this value

Relationship types can have properties too — useful for capturing metadata about the connection itself.

  1. Select the Belongs To relationship type
  2. Add a new property
  3. Name it Start Date
  4. Type: Date
  5. Multiplicity: 0..1

This records when a person joined a team — metadata about the relationship, not about either endpoint.

Switch to your M1 Farquind Organisation model and verify the properties work.

  1. Select Chase Martin on the diagram or in the Explorer
  2. In the Properties panel, you’ll see the new Title and Department fields
  3. Set Title to CEO, Department to Executive
  4. Select Theo Gibson — set Title to CTO, Department to Software & Digital
  5. Select Maya Hawn — set Title to VP Engineering, Department to Engineering
  1. Select FQ Vessels
  2. The Status field appears as a dropdown with your enumeration values
  3. Select Active
  4. Select FQ Manufacturing — set Status to Active
  1. Select the Theo Gibson Belongs To Software & Digital relationship (click the edge or find it in the Explorer)
  2. The Start Date field appears
  3. Enter a date

Properties really shine in catalogs. Create a quick catalog to see all your property values at a glance:

  1. Right-click on M1 Farquind Organisation > New Catalog
  2. Name it People Catalog
  3. Add columns for Title and Department
  4. You should see all Person instances with their property values in a sortable table

This is the M2-to-M1 property flow in action: you define the structure once at M2, and every M1 instance automatically carries the fields.

  • How to add typed properties (String, Date) to element types
  • How to create enumerations with named literal values
  • How to use an enumeration as a property type with dropdown selection
  • How to set default values on properties
  • How to add properties to relationship types
  • How to set and view property values on M1 instances
  • That properties defined at M2 automatically appear on all M1 instances
  • Advanced Metamodel Features — Generalization, owned elements and compartments, display templates, and multiplicities
  • Glossary — Look up any term: property, enumeration, classifier, multiplicity, etc.