Skip to content

Latest commit

 

History

History
132 lines (90 loc) · 3.99 KB

File metadata and controls

132 lines (90 loc) · 3.99 KB
title Core Concepts
description Understand the fundamental concepts of IDP-Core - Entity Templates, Entities, Properties, Relations

IDP-Core sits at the center of a flexible, runtime-configurable data model. This section explains the fundamental concepts you need to understand.

Overview

graph TB
    subgraph "Data Model"
        ET[Entity Template]
        E[Entity]
        PD[Property Definition]
        PR[Property Rules]
        RD[Relation Definition]
    end

    ET --> PD
    ET --> RD
    PD --> PR
    ET -.->|instantiates| E
Loading
  • 📄 Entity Templates


    Blueprints that define the structure of your entities—like database schemas defined at runtime.

  • 🗄️ Entities


    Instances of templates with actual data—your software catalog items.

  • 📋 Properties


    Data fields with types, validation rules, and constraints.

  • 🔗 Relations


    Connections between entities forming a knowledge graph.

  • 🔍 Filtering Entities


    Query entities by attributes, property values, and relations using the filter DSL.


The IDP-Core Data Model

Unlike traditional Configuration Management Databases with rigid, predefined schemas, IDP-Core provides a flexible meta-modeling engine. You define your own data models—called Entity Templates—that mirror your organization's specific needs.

Key Principles

  1. Runtime Configurable - Create and modify data models without code changes or deployments
  2. Schema-less Flexibility - No predefined schemas; adapt to your organization's needs
  3. Graph-Based Relations - Connect entities to form a knowledge graph of your tech landscape

Example: Software Catalog

Here's how you might model a basic software catalog:

erDiagram
    TEAM       ||--o{ COMPONENT : owns
    COMPONENT  ||--o{ DEPLOYMENT : "deployed as"
    COMPONENT  ||--|| REPOSITORY : "has code in"
    REPOSITORY ||--o{ PULL_REQUEST : contains
    COMPONENT  ||--o{ SONAR_PROJECT : "analyzed by"

    TEAM {
        string identifier PK
        string name
        string slack_channel
    }

    COMPONENT {
        string identifier PK
        string name
        string status
    }

    REPOSITORY {
        string identifier PK
        string url
        number stars
    }
Loading

Quick Reference

Concept What It Is Example
Entity Template Blueprint/schema service, team, repository
Entity Instance based on a template that contains the data payment-service, platform-team, idp-core-repository
Property Data field name, status, url
Property Rules Validation format: EMAIL, min_value: 0
Relation Link to another entity owned_by, depends_on

How It All Fits Together

  1. Define Templates - Create Entity Templates that describe your domain objects
  2. Add Properties - Specify what data each entity type contains
  3. Configure Relations - Link templates to form a graph structure
  4. Create Entities - Instantiate templates with actual data

Next Steps

Dive deeper into each concept: